mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-01 13:24:25 +01:00
bf09367486
* Bump version to 5.0.0 * Fix npm tag * Dist
1 line
216 KiB
Plaintext
1 line
216 KiB
Plaintext
{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.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/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","isRTL","dir","defineJQueryPlugin","name","plugin","callback","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","execute","elementMap","Map","Data","set","key","instance","has","instanceMap","get","size","console","error","Array","from","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","handler","delegationSelector","uidEventList","i","len","length","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","addHandler","oneOff","wrapFn","relatedTarget","delegateTarget","this","handlers","previousFn","replace","domElements","querySelectorAll","target","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","BaseComponent","constructor","_element","DATA_KEY","dispose","[object Object]","VERSION","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_destroyElement","removeChild","each","data","alertInstance","handleDismiss","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","touches","clientX","move","end","clearTimeout","itemImg","e","add","tagName","indexOf","_getItemByOrder","activeElement","isNext","isPrev","lastItemIndex","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","parent","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","REGEXP_KEYDOWN","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","createPopper","focus","_completeHide","destroy","update","_getPlacement","parentDropdown","isEnd","getPropertyValue","_getOffset","map","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","dropdownInterface","toggles","context","composedPath","isMenuTarget","clickEvent","isActive","stopPropagation","getToggleButton","clearMenus","getInstance","click","dataApiKeydownHandler","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","actualValue","overflow","styleProp","scrollbarWidth","reset","_resetElementAttributes","removeProperty","isAnimated","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","className","appendChild","backdropTransitionDuration","Modal","_dialog","_backdrop","_initializeBackDrop","_isShown","_ignoreBackdropClick","_isAnimated","showEvent","scrollBarHide","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_enforceFocus","transitionComplete","_triggerBackdropTransition","_resetAdjustments","scrollBarReset","currentTarget","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","getScrollBarWidth","isBodyOverflowing","paddingLeft","paddingRight","scroll","Offcanvas","_enforceFocusOnElement","blur","undefined","allReadyOpen","el","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elements","elName","attributeList","allowedAttributes","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","NAME","EVENT_KEY","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","Error","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","complete","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","dataKey","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","token","tClass","state","popper","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","navItem","node","spy","Tab","listElement","itemSelector","hideEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdown","autohide","Toast","_clearTimeout"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\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 hrefAttr = 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 (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.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 = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\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\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\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\nexport {\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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.0.0): 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 * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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 * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\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 (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = 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 wrapFn = 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 (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\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 Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\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, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\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 Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\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 const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\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 if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\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 && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0'\n\nclass BaseComponent {\n constructor(element) {\n element = typeof element === 'string' ? document.querySelector(element) : element\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, `.${this.constructor.DATA_KEY}`)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n if (!element.classList.contains(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, 'transitionend', () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\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\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\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\n let data = Data.get(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\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\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\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 + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\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.0.0): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\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)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\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\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\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\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 * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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\nconst SWIPE_THRESHOLD = 40\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\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_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 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'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\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_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\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.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(ORDER_NEXT)\n }\n }\n\n nextWhenVisible() {\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 if (!this._isSliding) {\n this._slide(ORDER_PREV)\n }\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 clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\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 this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\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 && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\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\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n if (event.key === ARROW_LEFT_KEY) {\n event.preventDefault()\n this._slide(DIRECTION_RIGHT)\n } else if (event.key === ARROW_RIGHT_KEY) {\n event.preventDefault()\n this._slide(DIRECTION_LEFT)\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 const isPrev = order === ORDER_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrev && activeIndex === 0) || (isNext && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = isPrev ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\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 const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\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 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 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 transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, 'transitionend', () => {\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(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\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\n static carouselInterface(element, config) {\n let data = Data.get(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\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 (!data) {\n data = new Carousel(element, _config)\n }\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 Data.get(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\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 (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.get(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\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 * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\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'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${this._element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${this._element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.get(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\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 if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\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 this.setTransitioning(false)\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 const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\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 const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(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 const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.get(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\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 static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\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 triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.get(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\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 * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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 SPACE_KEY = 'Space'\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 REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\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 * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (isDisabled(this._element)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n if (isActive) {\n this.hide()\n return\n }\n\n this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\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 // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\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 = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\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 !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\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\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n this.toggle()\n })\n }\n\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 [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\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 = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\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 _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\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(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 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\n if (this._config.display === 'static') {\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(event) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.get(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\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 static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n if (/input|select|option|textarea|form/i.test(event.target.tagName)) {\n return\n }\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Data.get(toggles[i], DATA_KEY)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._element.classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\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 shouldn't close the menu\n if (event.type === 'keyup' && event.key === TAB_KEY && context._menu.contains(event.target)) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - 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 if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n\n if (event.key === ESCAPE_KEY) {\n getToggleButton().focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {\n getToggleButton().click()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n Dropdown.getInstance(getToggleButton())._selectMenuItem(event)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\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.dropdownInterface(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): 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'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nconst 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\nconst hide = (width = getWidth()) => {\n _disableOverFlow()\n // give padding to element to balances the hidden scrollbar width\n _setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth\n _setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n _setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n}\n\nconst _disableOverFlow = () => {\n const actualValue = document.body.style.overflow\n if (actualValue) {\n Manipulator.setDataAttribute(document.body, 'overflow', actualValue)\n }\n\n document.body.style.overflow = 'hidden'\n}\n\nconst _setElementAttributes = (selector, styleProp, callback) => {\n const scrollbarWidth = getWidth()\n SelectorEngine.find(selector)\n .forEach(element => {\n if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n const actualValue = element.style[styleProp]\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n })\n}\n\nconst reset = () => {\n _resetElementAttributes('body', 'overflow')\n _resetElementAttributes('body', 'paddingRight')\n _resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n _resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n}\n\nconst _resetElementAttributes = (selector, styleProp) => {\n SelectorEngine.find(selector).forEach(element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n })\n}\n\nconst isBodyOverflowing = () => {\n return getWidth() > 0\n}\n\nexport {\n getWidth,\n hide,\n isBodyOverflowing,\n reset\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { emulateTransitionEnd, execute, getTransitionDurationFromElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: document.body, // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: 'element',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().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 // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = CLASS_NAME_BACKDROP\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 _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.appendChild(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._getElement().parentNode.removeChild(this._element)\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n if (!this._config.isAnimated) {\n execute(callback)\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._getElement())\n EventHandler.one(this._getElement(), 'transitionend', () => execute(callback))\n emulateTransitionEnd(this._getElement(), backdropTransitionDuration)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport { getWidth as getScrollBarWidth, hide as scrollBarHide, reset as scrollBarReset } from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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 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\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_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.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 SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\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 if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n scrollBarHide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\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 const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (isAnimated) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop.dispose()\n this._backdrop = null\n this._isShown = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(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 if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (isAnimated) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, 'transitionend', transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n scrollBarReset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _showBackdrop(callback) {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\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\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, 'transitionend')\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\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 = getScrollBarWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getInstance(this) || new Modal(this, typeof config === 'object' ? 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 * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\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 const data = Modal.getInstance(target) || new Modal(target)\n\n data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport { hide as scrollBarHide, reset as scrollBarReset } from './util/scrollbar'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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 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\nconst CLASS_NAME_SHOW = 'show'\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_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"offcanvas\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\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._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n scrollBarHide()\n this._enforceFocusOnElement(this._element)\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n const transitionDuration = getTransitionDurationFromElement(this._element)\n EventHandler.one(this._element, 'transitionend', completeCallBack)\n emulateTransitionEnd(this._element, transitionDuration)\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 EventHandler.off(document, EVENT_FOCUSIN)\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (!this._config.scroll) {\n scrollBarReset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n const transitionDuration = getTransitionDurationFromElement(this._element)\n EventHandler.one(this._element, 'transitionend', completeCallback)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n dispose() {\n this._backdrop.dispose()\n super.dispose()\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._backdrop = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _enforceFocusOnElement(element) {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n element !== event.target &&\n !element.contains(event.target)) {\n element.focus()\n }\n })\n element.focus()\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n\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\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.get(this, DATA_KEY) || new Offcanvas(this, typeof config === 'object' ? 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 * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\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 allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide()\n }\n\n const data = Data.get(target, DATA_KEY) || new Offcanvas(target)\n\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => (Data.get(el, DATA_KEY) || new Offcanvas(el)).show())\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(NAME, Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = 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 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/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 = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\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, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\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 * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\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 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 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\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\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)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\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(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip && this.tip.parentNode) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\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 const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\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 [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop)\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, 'transitionend', complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\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 [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, 'transitionend', complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.get(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.set(event.delegateTarget, dataKey, context)\n }\n\n return context\n }\n\n _getOffset() {\n const { offset } = this.config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\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: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\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 _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\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 => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', 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._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\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\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\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 * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\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: '(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\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.set(this, DATA_KEY, data)\n }\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 * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\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 * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\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\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_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\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\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\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 (let i = this._offsets.length; i--;) {\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 = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\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\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\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 SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getInstance(this) || new ScrollSpy(this, typeof config === 'object' ? 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 * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isDisabled,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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 * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\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 let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\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, {\n relatedTarget: this._element\n }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\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, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\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 const transitionDuration = getTransitionDurationFromElement(active)\n active.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.one(active, 'transitionend', complete)\n emulateTransitionEnd(active, transitionDuration)\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 SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.get(this, DATA_KEY) || new Tab(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 * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\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 = Data.get(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getTransitionDurationFromElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${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'\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\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\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 this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\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)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\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 this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n }\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 * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Offcanvas,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip\n}\n"]} |