{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/polyfill.js","../../js/src/dom/event-handler.js","../../js/src/async-load.js","../../js/src/alert.js","../../js/src/dom/selector-engine.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/carousel.js","../../js/src/class-toggler.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/index.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getBorders.js","../../node_modules/@popperjs/core/lib/dom-utils/getDecorations.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/popper.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","../../js/src/sidebar.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/polyfills.js","../../js/index.umd.js"],"names":["storeData","id","e","element","getUID","prefix","Math","floor","random","document","getElementById","getSelector","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","_window$getComputedSt","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","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","Error","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","mapData","set","key","data","get","keyProperties","delete","Data","instance","find","Element","prototype","querySelectorAll","findOne","defaultPreventedPreservedOnDispatch","CustomEvent","cancelable","createElement","preventDefault","defaultPrevented","scopeSelectorRegex","_","this","hasId","Boolean","nodeList","replace","removeAttribute","matches","$","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","getUidEvent","uid","getEvent","findHandler","events","handler","delegationSelector","uidEventList","i","len","length","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","custom","indexOf","addHandler","oneOff","_normalizeParams","handlers","previousFn","fn","domElements","target","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","on","one","_normalizeParams2","inNamespace","isNamespace","charAt","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","jQueryEvent","isNative","bubbles","nativeDispatch","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","defineProperty","NAME","SELECTOR_NAV_LINK","Default","defaultPage","errorPage","subpagesDirectory","AsyncLoad","_config","_getConfig","_element","url","location","hash","_setUpUrl","_addEventListeners","_objectSpread2","_loadPage","_this","xhr","XMLHttpRequest","open","detail","status","onload","result","wrapper","innerHTML","response","scripts","Array","from","map","script","attributes","getNamedItem","nodeValue","remove","scrollTo","appendChild","oldScripts","oldScript","loadScripts","src","className","onreadystatechange","readyState","getElementsByTagName","href","send","classList","add","SELECTOR_NAV_ITEM","_loadBlank","_loadTop","_update","link","dataset","toggle","_this2","contains","closest","_asyncLoadInterface","TypeError","jQueryInterface","each","JQUERY_NO_CONFLICT","Constructor","noConflict","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","dispose","_destroyElement","removeChild","handleDismiss","alertInstance","getInstance","SelectorEngine","_ref","documentElement","concat","findFn","children","_ref2","filter","child","parents","ancestor","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","DATA_KEY","Button","triggerChangeEvent","addAriaPressed","input","checked","activeElement","focus","setAttribute","button","normalizeData","val","Number","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","toggleClass","EVENT_KEY","interval","keyboard","slide","pause","wrap","touch","DefaultType","EVENT_SLID","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_slide","nextWhenVisible","hidden","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","_this3","start","pointerType","clientX","touches","end","clearTimeout","itemImg","move","tagName","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","indicators","nextIndicator","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","nextElementInterval","parseInt","defaultInterval","carouselInterface","action","ride","dataApiClickHandler","slideIndex","carousels","addClass","breakpoints","removeClass","responsive","ClassToggler","_target","_customEvent","_updateResponsiveClassNames","classNames","class","eventName","_breakpoint","breakpoint","includes","_breakpoints","bp","_includesResponsiveClass","constructor","classTogglerInterface","stopPropagation","toggler","parent","Collapse","_isTransitioning","_triggerArray","SELECTOR_DATA_TOGGLE","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","width","height","right","bottom","x","y","getWindow","node","ownerDocument","defaultView","getWindowScroll","win","pageXOffset","pageYOffset","isHTMLElement","HTMLElement","getNodeName","nodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","scroll","offsets","getHTMLElementScroll","clientLeft","clientTop","getLayoutRect","offsetWidth","getParentNode","assignedSlot","host","listScrollParents","list","scrollParent","getScrollParent","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","basePlacements","variationPlacements","reduce","acc","placement","placements","modifierPhases","order","modifiers","Map","visited","Set","modifier","name","has","sort","requires","requiresIfExists","dep","depModifier","getBasePlacement","DEFAULT_OPTIONS","strategy","areValidElements","_len","arguments","_key","some","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","popper","options","pending","state","orderedModifiers","assign","modifiersData","elements","styles","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","scrollParents","contextElement","merged","phase","orderModifiers","current","existing","m","enabled","_ref3","_ref3$options","effect","cleanupFn","update","forceUpdate","_state$elements","rects","reset","_state$orderedModifie","_state$orderedModifie2","_options","Promise","resolve","then","undefined","destroy","onFirstUpdate","passive","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","ceil","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","_roundOffsets","dpr","devicePixelRatio","round","roundOffsets","hasX","hasOwnProperty","hasY","sideX","sideY","clientHeight","clientWidth","_Object$assign","commonStyles","transform","getOppositePlacement","matched","getOppositeVariationPlacement","toNumber","cssValue","getDecorations","borders","computedStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","getBorders","isHTML","winScrollBarX","innerHeight","innerWidth","isShadow","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","platform","getViewportRect","winScroll","documentRect","max","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","decorations","min","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","referenceElement","clippingClientRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","overflows","a","b","within","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","createPopper","_options$scroll","_options$resize","resize","_options$gpuAccelerat","_options$adaptive","arrow","data-popper-placement","initialStyles","margin","attribute","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_preventedOffset","_state$modifiersData$","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","data-popper-reference-hidden","data-popper-escaped","REGEXP_KEYDOWN","ARROW_UP_KEY","flip","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_inHeader","_detectHeader","disabled","isActive","clearMenus","getParentFromElement","_getPopperConfig","_getPlacement","parentDropdown","_getOffset","dropdownInterface","toggles","context","clickEvent","dropdownMenu","_ref4","dataApiKeydownHandler","items","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","_enforceFocus","transitionComplete","_this5","_triggerBackdropTransition","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this8","animate","currentTarget","backdropTransitionDuration","callbackRemove","_this9","modalTransitionDuration","isModalOverflowing","scrollHeight","paddingLeft","paddingRight","_getScrollbarWidth","_this10","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","scrollDiv","scrollbarWidth","_this11","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","DefaultWhitelist","*","area","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","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","el","elName","attributeList","whitelistedAttributes","attr","allowedAttributeList","attrName","regExp","attrRegex","allowedAttribute","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","findShadowRoot","attachShadow","root","ShadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","originalPlacement","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","tabClass","token","tClass","initConfigAnimation","Popover","_getContent","_addAttachmentClass","CLASS_PREFIX","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","_getOffsetHeight","maxScroll","_activate","_clear","queries","join","listGroup","SELECTOR_NAV_LINKS","navItem","spy","elMatches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","queryChildren","cls","thumb","rail","consuming","clicking","active","scrolling","scrollingClassTimeout","addScrollingClass","removeScrollingClass","isAlive","settings","scrollingThreshold","EventElement","prototypeAccessors","isEmpty","configurable","unbind","this$1","unbindAll","defineProperties","EventManager","eventElements","initCustomEvent","processScrollDiff","diff","useScrollingClass","forceFireReachEvent","fields","ref","contentHeight","containerHeight","up","down","reach","setScrollingClassInstantly","processScrollDiff$1","toInt","eventElement","ee","splice","once","onceHandler","env","isWebKit","supportsTouch","DocumentTouch","supportsIePointer","msMaxTouchPoints","isChrome","userAgent","updateGeometry","roundedScrollTop","containerWidth","contentWidth","scrollWidth","scrollbarXRail","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isRtl","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","maxScrollbarLength","bindMouseScrollHandler","pageY","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","mouseUpHandler","bindMoves","touchMode","click-rail","pageX","drag-thumb","contentDocument","deltaX","deltaY","which","metaKey","altKey","shiftKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","cursor","maxScrollTop","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","isLeft","isRight","ctrlKey","onwheel","onmousewheel","startOffset","startTime","speed","easingLoop","touchStart","touchMove","touchEnd","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","buttons","MSPOINTER_TYPE_MOUSE","Date","getTime","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","scrollY","swipeEasing","isInitialized","PerfectScrollbar","userSettings","originalScrollLeft","blur","isNegativeScroll","railXStyle","isNaN","marginLeft","railYStyle","outerWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","removePsClasses","xs","sm","md","lg","xl","dropdownAccordion","Sidebar","_open","_isVisible","_mobile","_isMobile","_overlaid","_isOverlaid","_minimize","_isMinimized","_unfoldable","_isUnfoldable","_setActiveLink","_ps","_psInit","_addClassName","_firstBreakpointClassName","_addClickOutListener","_getBreakpointClassName","_removeClickOutListener","minimize","_psDestroy","unfoldable","getPropertyValue","_isIOS","iOSDevices","pop","_clickOutListener","sidebar","_getAllSiblings","siblings","firstChild","nextSibling","_toggleDropdown","JSON","parse","parentElement","_psUpdate","_getParents","currentUrl","String","_sidebarInterface","Tab","listElement","itemSelector","hideEvent","_transitionComplete","dropdownChild","dropdown","toStr","isCallable","maxSafeInteger","toLength","factory","autohide","Toast","pow","number","isFinite","toInteger","arrayLike","C","T","mapFn","kValue","A","k","params","matchesSelector","oMatchesSelector","predicate","o","thisArg","varArgs","nextSource","nextKey","finallyConstructor","reason","reject","setTimeoutFunc","isArray","_state","_handled","_value","_deferreds","doResolve","handle","self","deferred","_immediateFn","cb","onFulfilled","onRejected","ret","promise","newValue","finale","_unhandledRejectionFn","Handler","done","ex","prom","all","arr","remaining","res","race","setImmediate","err","console","warn","globalNS","global","exports","module","define","amd","Scrollspy"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-alpha1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\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 {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element)\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = 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 (parseFloat(transitionDuration) + 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 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)\n .forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\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 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 = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nexport {\n getjQuery,\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-alpha1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.key === 'undefined') {\n element.key = {\n key,\n id\n }\n id++\n }\n\n storeData[element.key.id] = data\n },\n get(element, key) {\n if (!element || typeof element.key === 'undefined') {\n return null\n }\n\n const keyProperties = element.key\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.key === 'undefined') {\n return\n }\n\n const keyProperties = element.key\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.key\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/* istanbul ignore file */\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-alpha1): dom/polyfill.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getUID } from '../util/index'\n\nlet find = Element.prototype.querySelectorAll\nlet findOne = Element.prototype.querySelector\n\n// MSEdge resets defaultPrevented flag upon dispatchEvent call if at least one listener is attached\nconst defaultPreventedPreservedOnDispatch = (() => {\n const e = new CustomEvent('Bootstrap', {\n cancelable: true\n })\n\n const element = document.createElement('div')\n element.addEventListener('Bootstrap', () => null)\n\n e.preventDefault()\n element.dispatchEvent(e)\n return e.defaultPrevented\n})()\n\nconst scopeSelectorRegex = /:scope\\b/\nconst supportScopeQuery = (() => {\n const element = document.createElement('div')\n\n try {\n element.querySelectorAll(':scope *')\n } catch (_) {\n return false\n }\n\n return true\n})()\n\nif (!supportScopeQuery) {\n find = function (selector) {\n if (!scopeSelectorRegex.test(selector)) {\n return this.querySelectorAll(selector)\n }\n\n const hasId = Boolean(this.id)\n\n if (!hasId) {\n this.id = getUID('scope')\n }\n\n let nodeList = null\n try {\n selector = selector.replace(scopeSelectorRegex, `#${this.id}`)\n nodeList = this.querySelectorAll(selector)\n } finally {\n if (!hasId) {\n this.removeAttribute('id')\n }\n }\n\n return nodeList\n }\n\n findOne = function (selector) {\n if (!scopeSelectorRegex.test(selector)) {\n return this.querySelector(selector)\n }\n\n const matches = find.call(this, selector)\n\n if (typeof matches[0] !== 'undefined') {\n return matches[0]\n }\n\n return null\n }\n}\n\nexport {\n find,\n findOne,\n defaultPreventedPreservedOnDispatch\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-alpha1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\nimport { defaultPreventedPreservedOnDispatch } from './polyfill'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst $ = getjQuery()\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = [\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 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 if (handler.oneOff) {\n EventHandler.off(element, event.type, 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 // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.indexOf(typeEvent) > -1\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 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)\n .forEach(handlerKey => {\n if (handlerKey.indexOf(namespace) > -1) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\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.charAt(0) === '.'\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)\n .forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent)\n .forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.indexOf(handlerKey) > -1) {\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 typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.indexOf(typeEvent) > -1\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 informations in our event\n if (typeof args !== 'undefined') {\n Object.keys(args)\n .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 if (!defaultPreventedPreservedOnDispatch) {\n Object.defineProperty(evt, 'defaultPrevented', {\n get: () => true\n })\n }\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 * CoreUI (v3.2.2): asyn-load.js\n * Licensed under MIT (https://coreui.io/license)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'asyncLoad'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.asyncLoad'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'c-active'\nconst CLASS_NAME_NAV_DROPDOWN_TOGGLE = 'c-sidebar-nav-dropdown-toggle'\nconst CLASS_NAME_NAV_LINK = 'c-sidebar-nav-link'\nconst CLASS_NAME_SHOW = 'c-show'\nconst CLASS_NAME_VIEW_SCRIPT = 'view-script'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_XHR_STATUS = 'xhr'\n\nconst SELECTOR_NAV_DROPDOWN = '.c-sidebar-nav-dropdown'\nconst SELECTOR_NAV_LINK = '.c-xhr-link, .c-sidebar-nav-link'\nconst SELECTOR_NAV_ITEM = '.c-sidebar-nav-item'\nconst SELECTOR_VIEW_SCRIPT = '.view-script'\n\nconst Default = {\n defaultPage: 'main.html',\n errorPage: '404.html',\n subpagesDirectory: 'views/'\n}\n\nclass AsyncLoad {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n // eslint-disable-next-line no-restricted-globals\n const url = location.hash.replace(/^#/, '')\n\n // eslint-disable-next-line no-negated-condition\n if (url !== '') {\n this._setUpUrl(url)\n } else {\n this._setUpUrl(this._config.defaultPage)\n }\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n return config\n }\n\n _loadPage(url) {\n const element = this._element\n const config = this._config\n\n const loadScripts = (src, element = 0) => {\n const script = document.createElement('script')\n script.type = 'text/javascript'\n script.src = src[element]\n script.className = CLASS_NAME_VIEW_SCRIPT\n // eslint-disable-next-line no-multi-assign, unicorn/prefer-add-event-listener\n script.onload = script.onreadystatechange = () => {\n if (!this.readyState || this.readyState === 'complete') {\n if (src.length > element + 1) {\n loadScripts(src, element + 1)\n }\n }\n }\n\n const body = document.getElementsByTagName('body')[0]\n body.appendChild(script)\n }\n\n const removeScripts = () => {\n const oldScripts = document.querySelectorAll(SELECTOR_VIEW_SCRIPT)\n if (oldScripts.length) {\n oldScripts.forEach(oldScript => {\n oldScript.remove()\n })\n }\n }\n\n const xhr = new XMLHttpRequest()\n xhr.open('GET', config.subpagesDirectory + url)\n let event = new CustomEvent(EVENT_XHR_STATUS, {\n detail: {\n url,\n status: xhr.status\n }\n })\n element.dispatchEvent(event)\n // eslint-disable-next-line unicorn/prefer-add-event-listener\n xhr.onload = result => {\n if (xhr.status === 200) {\n event = new CustomEvent(EVENT_XHR_STATUS, {\n detail: {\n url,\n status: xhr.status\n }\n })\n element.dispatchEvent(event)\n const wrapper = document.createElement('div')\n wrapper.innerHTML = result.target.response\n\n // eslint-disable-next-line unicorn/prefer-spread\n const scripts = Array.from(wrapper.querySelectorAll('script')).map(script => script.attributes.getNamedItem('src').nodeValue)\n\n wrapper.querySelectorAll('script').forEach(script => script.remove(script))\n\n window.scrollTo(0, 0)\n element.innerHTML = ''\n element.appendChild(wrapper)\n removeScripts()\n if (scripts.length) {\n loadScripts(scripts)\n }\n\n window.location.hash = url\n } else {\n window.location.href = config.errorPage\n }\n }\n\n xhr.send()\n }\n\n _setUpUrl(url) {\n url = url.replace(/^\\//, '').split('?')[0]\n\n // eslint-disable-next-line unicorn/prefer-spread\n Array.from(document.querySelectorAll(SELECTOR_NAV_LINK)).forEach(element => {\n element.classList.remove(CLASS_NAME_ACTIVE)\n })\n\n // eslint-disable-next-line unicorn/prefer-spread\n Array.from(document.querySelectorAll(SELECTOR_NAV_LINK)).forEach(element => {\n element.classList.remove(CLASS_NAME_ACTIVE)\n })\n\n // eslint-disable-next-line unicorn/prefer-spread\n Array.from(document.querySelectorAll(SELECTOR_NAV_DROPDOWN)).forEach(element => {\n element.classList.remove(CLASS_NAME_SHOW)\n })\n\n // eslint-disable-next-line unicorn/prefer-spread\n Array.from(document.querySelectorAll(SELECTOR_NAV_DROPDOWN)).forEach(element => {\n // eslint-disable-next-line unicorn/prefer-spread\n if (Array.from(element.querySelectorAll(`a[href*=\"${url}\"]`)).length > 0) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n })\n\n // eslint-disable-next-line unicorn/prefer-spread\n Array.from(document.querySelectorAll(`${SELECTOR_NAV_ITEM} a[href*=\"${url}\"]`)).forEach(element => {\n element.classList.add(CLASS_NAME_ACTIVE)\n })\n\n this._loadPage(url)\n }\n\n _loadBlank(url) {\n window.open(url)\n }\n\n _loadTop(url) {\n window.location = url\n }\n\n _update(link) {\n if (link.href !== '#') {\n if (typeof link.dataset.toggle === 'undefined' || link.dataset.toggle === 'null') {\n if (link.target === '_top') {\n this._loadTop(link.href)\n } else if (link.target === '_blank') {\n this._loadBlank(link.href)\n } else {\n this._setUpUrl(link.getAttribute('href'))\n }\n }\n }\n }\n\n _addEventListeners() {\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_NAV_LINK, event => {\n event.preventDefault()\n let link = event.target\n if (!link.classList.contains(CLASS_NAME_NAV_LINK)) {\n link = link.closest(SELECTOR_NAV_LINK)\n }\n\n if (!link.classList.contains(CLASS_NAME_NAV_DROPDOWN_TOGGLE) && link.getAttribute('href') !== '#') {\n this._update(link)\n }\n })\n }\n\n // Static\n\n static _asyncLoadInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new AsyncLoad(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 AsyncLoad._asyncLoadInterface(this, config)\n })\n }\n}\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .asyncLoad to jQuery only if jQuery is present\n */\n\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = AsyncLoad.jQueryInterface\n $.fn[NAME].Constructor = AsyncLoad\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return AsyncLoad.jQueryInterface\n }\n}\n\nexport default AsyncLoad\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): alert.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's alert.js\n * Bootstrap (v5.0.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-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 CLASSNAME_ALERT = 'alert'\nconst CLASSNAME_FADE = 'fade'\nconst CLASSNAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n\n if (this._element) {\n Data.setData(element, DATA_KEY, this)\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASSNAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASSNAME_SHOW)\n\n if (!element.classList.contains(CLASSNAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler\n .one(element, TRANSITION_END, () => 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.getData(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 static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler\n .on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .alert to jQuery only if jQuery is present\n */\n\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Alert.jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert.jQueryInterface\n }\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-alpha1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { find as findFn, findOne } from './polyfill'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n matches(element, selector) {\n return element.matches(selector)\n },\n\n find(selector, element = document.documentElement) {\n return [].concat(...findFn.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return findOne.call(element, selector)\n },\n\n children(element, selector) {\n const children = [].concat(...element.children)\n\n return children.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 (this.matches(ancestor, 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 (this.matches(next, selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): button.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's buttons.js\n * Bootstrap (v5.0.0): buttons.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"buttons\"]'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_BLUR_DATA_API = `blur${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n\n const rootElement = this._element.closest(SELECTOR_DATA_TOGGLE)\n\n if (rootElement) {\n const input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n if (input && input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE, rootElement)\n\n if (activeElement) {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains(CLASS_NAME_DISABLED) ||\n rootElement.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n EventHandler.trigger(input, 'change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(CLASS_NAME_ACTIVE))\n }\n\n if (triggerChangeEvent) {\n this._element.classList.toggle(CLASS_NAME_ACTIVE)\n }\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(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 static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_BUTTON)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUS_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n const button = event.target.closest(SELECTOR_BUTTON)\n\n if (button) {\n button.classList.add(CLASS_NAME_FOCUS)\n }\n})\n\nEventHandler.on(document, EVENT_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n const button = event.target.closest(SELECTOR_BUTTON)\n\n if (button) {\n button.classList.remove(CLASS_NAME_FOCUS)\n }\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .button to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Button.jQueryInterface\n $.fn[NAME].Constructor = Button\n\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button.jQueryInterface\n }\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-alpha1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {\n ...element.dataset\n }\n\n Object.keys(attributes).forEach(key => {\n attributes[key] = normalizeData(attributes[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-${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 toggleClass(element, className) {\n if (!element) {\n return\n }\n\n if (element.classList.contains(className)) {\n element.classList.remove(className)\n } else {\n element.classList.add(className)\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): carousel.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's carousel.js\n * Bootstrap (v5.0.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\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'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.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 DIRECTION_NEXT = 'next'\nconst DIRECTION_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_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\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_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\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._element = element\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 || window.MSPointerEvent)\n\n this._addEventListeners()\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_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(DIRECTION_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._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 direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n Data.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\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 // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler\n .on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler\n .on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler\n .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 && PointerType[event.pointerType.toUpperCase()]) {\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 if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\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 switch (event.key) {\n case ARROW_LEFT_KEY:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEY:\n event.preventDefault()\n this.next()\n break\n default:\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 _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -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 indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement)\n for (let i = 0; i < indicators.length; i++) {\n indicators[i].classList.remove(CLASS_NAME_ACTIVE)\n }\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n nextIndicator.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement &&\n this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_RIGHT\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\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\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 nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler\n .one(activeElement, TRANSITION_END, () => {\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 // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(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-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler\n .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.getData(carousels[i], DATA_KEY))\n }\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .carousel to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Carousel.jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel.jQueryInterface\n }\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): class-toggler.js\n * Licensed under MIT (https://coreui.io/license)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'class-toggler'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.class-toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst DefaultType = {\n addClass: '(null|array|string)',\n breakpoints: '(null|array|string)',\n removeClass: '(null|array|string)',\n responsive: '(null|boolean)',\n target: '(null|string)',\n toggleClass: '(null|array|string)'\n}\n\nconst Default = {\n addClass: null,\n breakpoints: ['', 'sm', 'md', 'lg', 'xl'],\n removeClass: null,\n responsive: false,\n target: 'body',\n toggleClass: null\n}\n\nconst CLASS_NAME_CLASS_TOGGLER = 'c-class-toggler'\n\nconst EVENT_CLASS_ADDED = 'classadded'\nconst EVENT_CLASS_REMOVED = 'classremoved'\nconst EVENT_CLASS_TOGGLE = 'classtoggle'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_CLASS_TOGGLER = '.c-class-toggler'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ClassToggler {\n constructor(element, config) {\n this._element = element\n this._config = this._getConfig(config)\n\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n add() {\n const target = this._target()\n const classNames = this._config.addClass.replace(/\\s/g, '').split(',')\n\n classNames.forEach(className => {\n target.classList.add(className)\n this._customEvent(EVENT_CLASS_ADDED, target, true, className)\n })\n }\n\n remove() {\n const target = this._target()\n const classNames = this._config.removeClass.replace(/\\s/g, '').split(',')\n\n classNames.forEach(className => {\n if (this._config.responsive) {\n this._updateResponsiveClassNames(className).forEach(className => {\n target.classList.remove(className)\n this._customEvent(EVENT_CLASS_REMOVED, target, false, className)\n })\n } else {\n target.classList.remove(className)\n this._customEvent(EVENT_CLASS_REMOVED, target, false, className)\n }\n })\n }\n\n toggle() {\n const target = this._target()\n const classNames = this._config.toggleClass.replace(/\\s/g, '').split(',')\n\n if (this._config.responsive) {\n classNames.forEach(className => {\n const responsiveClassNames = this._updateResponsiveClassNames(className)\n\n if (responsiveClassNames.filter(className => target.classList.contains(className)).length) {\n this._updateResponsiveClassNames(className).forEach(className => {\n this._config.removeClass = className\n this.remove()\n this._customEvent(EVENT_CLASS_TOGGLE, target, false, className)\n })\n } else {\n this._config.addClass = className\n this.add()\n this._customEvent(EVENT_CLASS_TOGGLE, target, true, className)\n }\n })\n } else {\n classNames.forEach(className => {\n if (target.classList.contains(className)) {\n this._config.removeClass = className\n this.remove()\n this._customEvent(EVENT_CLASS_TOGGLE, target, false, className)\n } else {\n this._config.addClass = className\n this.add()\n this._customEvent(EVENT_CLASS_TOGGLE, target, true, className)\n }\n })\n }\n }\n\n class() {\n this._config.toggleClass = this._config.class\n if (this._element.getAttribute('responsive')) {\n this._config.responsive = this._element.getAttribute('responsive')\n }\n\n this.toggle()\n }\n\n // Private\n\n _target() {\n if (this._config.target === 'body') {\n return document.querySelector(this._config.target)\n }\n\n if (this._config.target === '_parent') {\n return this._element.parentNode\n }\n\n return document.querySelector(this._config.target)\n }\n\n _customEvent(eventName, target, add, className) {\n const event = new CustomEvent(eventName, {\n detail: {\n target,\n add,\n className\n }\n })\n target.dispatchEvent(event)\n }\n\n _breakpoint(className) {\n const { breakpoints } = this._config\n return breakpoints.filter(breakpoint => breakpoint.length > 0).filter(breakpoint => className.includes(breakpoint))[0]\n }\n\n _breakpoints(className) {\n const { breakpoints } = this._config\n return breakpoints.slice(0, breakpoints.indexOf(breakpoints.filter(breakpoint => breakpoint.length > 0).filter(breakpoint => className.includes(breakpoint))[0]) + 1)\n }\n\n _updateResponsiveClassNames(className) {\n const bp = this._breakpoint(className)\n return this._breakpoints(className).map(breakpoint => breakpoint.length > 0 ? className.replace(bp, breakpoint) : className.replace(`-${bp}`, breakpoint))\n }\n\n _includesResponsiveClass(className) {\n return this._updateResponsiveClassNames(className).filter(className => this._config.target.contains(className))\n }\n\n // Static\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n static classTogglerInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ClassToggler(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 ClassToggler.classTogglerInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_CLASS_TOGGLER, event => {\n event.preventDefault()\n event.stopPropagation()\n let toggler = event.target\n\n if (!toggler.classList.contains(CLASS_NAME_CLASS_TOGGLER)) {\n toggler = toggler.closest(SELECTOR_CLASS_TOGGLER)\n }\n\n if (typeof toggler.dataset.addClass !== 'undefined') {\n ClassToggler.classTogglerInterface(toggler, 'add')\n }\n\n if (typeof toggler.dataset.removeClass !== 'undefined') {\n ClassToggler.classTogglerInterface(toggler, 'remove')\n }\n\n if (typeof toggler.dataset.toggleClass !== 'undefined') {\n ClassToggler.classTogglerInterface(toggler, 'toggle')\n }\n\n if (typeof toggler.dataset.class !== 'undefined') {\n ClassToggler.classTogglerInterface(toggler, 'class')\n }\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .c-class-toggler to jQuery only if jQuery is present\n */\n\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = ClassToggler.jQueryInterface\n $.fn[NAME].Constructor = ClassToggler\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ClassToggler.jQueryInterface\n }\n}\n\nexport default ClassToggler\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): collapse.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's collapse.js\n * Bootstrap (v5.0.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\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'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.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-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-target=\"#${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 === 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 Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\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 ||\n 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-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.filter(elem => container !== elem)\n activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], 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.setData(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, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !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, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = 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 const hasWidth = this._element.classList.contains(WIDTH)\n return hasWidth ? 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-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) {\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n if (triggerArray.length) {\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 }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(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 static getInstance(element) {\n return Data.getData(element, DATA_KEY)\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 elements (which change the URL) not inside the collapsible element\n if (event.target.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.getData(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\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .collapse to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Collapse.jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse.jQueryInterface\n }\n}\n\nexport default Collapse\n","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nexport { isElement, isHTMLElement };","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe: assume body is always available\n return (isElement(element) ? element.ownerDocument : element.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (!isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nexport default function listScrollParents(element, list) {\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === 'body';\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n}\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent\n\n while (offsetParent && isTableElement(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nexport * from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator();","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, {}, current, {\n options: Object.assign({}, existing.options, {}, current.options),\n data: Object.assign({}, existing.data, {}, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive;\n\n var _roundOffsets = roundOffsets(offsets),\n x = _roundOffsets.x,\n y = _roundOffsets.y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n var state = _ref3.state,\n options = _ref3.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, {}, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, {}, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\n\nfunction toNumber(cssValue) {\n return parseFloat(cssValue) || 0;\n}\n\nexport default function getBorders(element) {\n var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};\n return {\n top: toNumber(computedStyle.borderTopWidth),\n right: toNumber(computedStyle.borderRightWidth),\n bottom: toNumber(computedStyle.borderBottomWidth),\n left: toNumber(computedStyle.borderLeftWidth)\n };\n}","import getBorders from \"./getBorders.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\"; // Borders + scrollbars\n\nexport default function getDecorations(element) {\n var win = getWindow(element);\n var borders = getBorders(element);\n var isHTML = getNodeName(element) === 'html';\n var winScrollBarX = getWindowScrollBarX(element);\n var x = element.clientWidth + borders.right;\n var y = element.clientHeight + borders.bottom; // HACK:\n // document.documentElement.clientHeight on iOS reports the height of the\n // viewport including the bottom bar, even if the bottom bar isn't visible.\n // If the difference between window innerHeight and html clientHeight is more\n // than 50, we assume it's a mobile bottom bar and ignore scrollbars.\n // * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows\n // is about 17px)\n // * The mobile bar is 114px tall\n\n if (isHTML && win.innerHeight - element.clientHeight > 50) {\n y = win.innerHeight - borders.bottom;\n }\n\n return {\n top: isHTML ? 0 : element.clientTop,\n right: // RTL scrollbar (scrolling containers only)\n element.clientLeft > borders.left ? borders.right : // LTR scrollbar\n isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,\n bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,\n left: isHTML ? winScrollBarX : element.clientLeft\n };\n}","export default function contains(parent, child) {\n // $FlowFixMe: hasOwnProperty doesn't seem to work in tests\n var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (isShadow) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDecorations from \"./getDecorations.js\";\nimport contains from \"./contains.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(element);\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement);\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));\n accRect.top = Math.max(rect.top + decorations.top, accRect.top);\n accRect.right = Math.min(rect.right - decorations.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);\n accRect.left = Math.max(rect.left + decorations.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var visualViewport = win.visualViewport;\n var width = win.innerWidth;\n var height = win.innerHeight; // We don't know which browsers have buggy or odd implementations of this, so\n // for now we're only applying it to iOS to fix the keyboard issue.\n // Investigation required\n\n if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {\n width = visualViewport.width;\n height = visualViewport.height;\n }\n\n return {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n}","import getCompositeRect from \"./getCompositeRect.js\";\nimport getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getDocumentRect(element) {\n var win = getWindow(element);\n var winScroll = getWindowScroll(element);\n var documentRect = getCompositeRect(getDocumentElement(element), win);\n documentRect.height = Math.max(documentRect.height, win.innerHeight);\n documentRect.width = Math.max(documentRect.width, win.innerWidth);\n documentRect.x = -winScroll.scrollLeft;\n documentRect.y = -winScroll.scrollTop;\n return documentRect;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), {}, paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, {}, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = (variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements).filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n }); // $FlowFixMe: Flow seems to have problems with two array unions...\n\n var overflows = placements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","export default function within(min, value, max) {\n return Math.max(min, Math.min(value, max));\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator } from \"./index.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(_min, _offset, _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n _options$padding = options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n state.modifiersData[name + \"#persistent\"] = {\n padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): dropdown.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's dropdown.js\n * Bootstrap (v5.0.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n getElementFromSelector,\n isElement,\n isVisible,\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 { createPopper } from '@popperjs/core'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.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_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_HEADER = 'c-header'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_NAVBAR = 'navbar'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_HEADER_NAV = '.c-header-nav'\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 = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n offset: [0, 0],\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(array|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n this._inHeader = this._detectHeader()\n\n this._addEventListeners()\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._menu.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || 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(parent, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar && !this._inHeader) {\n if (typeof createPopper === 'undefined') {\n throw new TypeError('CoreUI\\'s dropdowns require Popper.js (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 }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n parent.classList.add(CLASS_NAME_POSITION_STATIC)\n }\n\n this._popper = createPopper(referenceElement, this._menu, this._getPopperConfig())\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', null, noop()))\n }\n\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_HEADER_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW)\n Manipulator.toggleClass(parent, CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !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 hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW)\n Manipulator.toggleClass(parent, CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n EventHandler.off(this._element, EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n this._inHeader = this._detectHeader()\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 event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n const parent = Dropdown.getParentFromElement(this._element)\n\n return SelectorEngine.findOne(SELECTOR_MENU, parent)\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n let placement = PLACEMENT_BOTTOM\n\n // Handle dropup\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n placement = PLACEMENT_TOP\n if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_TOPEND\n }\n } else if (parentDropdown.classList.contains(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT\n } else if (parentDropdown.classList.contains(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT\n } else if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND\n }\n\n return placement\n }\n\n _detectNavbar() {\n return Boolean(this._element.closest(`.${CLASS_NAME_NAVBAR}`))\n }\n\n _detectHeader() {\n return Boolean(this._element.closest(`.${CLASS_NAME_HEADER}`))\n }\n\n // _getOffset() {\n // const offset = {}\n\n // if (typeof this._config.offset === 'function') {\n // offset.fn = data => {\n // data.offsets = {\n // ...data.offsets,\n // ...this._config.offset(data.offsets, this._element) || {}\n // }\n\n // return data\n // }\n // } else {\n // offset.offset = this._config.offset\n // }\n\n // return offset\n // }\n\n _getOffset() {\n let offset = []\n\n if (typeof this._config.offset === 'function') {\n offset = ({ placement, reference, popper }) => this._config.offset({ placement, reference, popper })\n } else {\n offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'flip',\n enabled: this._config.flip\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }\n ]\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers = {\n name: 'applyStyles',\n enabled: false\n }\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(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 && (event.button === RIGHT_MOUSE_BUTTON ||\n (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown.getParentFromElement(toggles[i])\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!parent.classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n parent.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\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', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n parent.classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, 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 event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = parent.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent)\n .filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.key === ARROW_UP_KEY && index > 0) { // Up\n index--\n }\n\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) { // Down\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 getInstance(element) {\n return Data.getData(element, DATA_KEY)\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 event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler\n .on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .dropdown to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Dropdown.jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown.jQueryInterface\n }\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): modal.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's modal.js\n * Bootstrap (v5.0.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\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'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.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 show: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: '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_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\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-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\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._element.classList.contains(CLASS_NAME_FADE)) {\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 this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element,\n EVENT_CLICK_DISMISS,\n SELECTOR_DATA_DISMISS,\n event => this.hide(event)\n )\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 transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\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 (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\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 Data.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\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 _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode ||\n 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 (transition) {\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 (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, TRANSITION_END, 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._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\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 this._triggerBackdropTransition()\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, TRANSITION_END, callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n if (this._config.backdrop === 'static') {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._element)\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n } else {\n this.hide()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = window.getComputedStyle(element)['padding-right']\n Manipulator.setDataAttribute(element, 'padding-right', actualPadding)\n element.style.paddingRight = `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n })\n\n // Adjust sticky content margin\n SelectorEngine.find(SELECTOR_STICKY_CONTENT)\n .forEach(element => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = window.getComputedStyle(element)['margin-right']\n Manipulator.setDataAttribute(element, 'margin-right', actualMargin)\n element.style.marginRight = `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = window.getComputedStyle(document.body)['padding-right']\n\n Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding)\n document.body.style.paddingRight = `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const padding = Manipulator.getDataAttribute(element, 'padding-right')\n if (typeof padding !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'padding-right')\n element.style.paddingRight = padding\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n SelectorEngine.find(`${SELECTOR_STICKY_CONTENT}`)\n .forEach(element => {\n const margin = Manipulator.getDataAttribute(element, 'margin-right')\n if (typeof margin !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'margin-right')\n element.style.marginRight = margin\n }\n })\n\n // Restore body padding\n const padding = Manipulator.getDataAttribute(document.body, 'padding-right')\n if (typeof padding === 'undefined') {\n document.body.style.paddingRight = ''\n } else {\n Manipulator.removeDataAttribute(document.body, 'padding-right')\n document.body.style.paddingRight = padding\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(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](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\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 (this.tagName === 'A' || this.tagName === 'AREA') {\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 let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.show(this)\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .modal to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Modal.jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal.jQueryInterface\n }\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-alpha1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\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):|[^#&/:?]*(?:[#/?]|$))/gi\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.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\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 (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultWhitelist = {\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, whiteList, 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 whitelistKeys = Object.keys(whiteList)\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 (whitelistKeys.indexOf(elName) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): tooltip.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's tooltip.js\n * Bootstrap (v5.0.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport { createPopper } from '@popperjs/core'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.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 = ['sanitize', 'whiteList', '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|function)',\n container: '(string|element|boolean)',\n boundary: '(string|element)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n}\n\nconst Default = {\n animation: true,\n template: '
' +\n '
' +\n '
',\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 boundary: 'scrollParent',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\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 {\n constructor(element, config) {\n if (typeof createPopper === 'undefined') {\n throw new TypeError('CoreUI\\'s tooltips require Popper.js (https://popper.js.org)')\n }\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.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\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 dataKey = this.constructor.DATA_KEY\n let context = Data.getData(event.target, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.target,\n this._getDelegateConfig()\n )\n Data.setData(event.target, dataKey, context)\n }\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 Data.removeData(this.element, this.constructor.DATA_KEY)\n\n EventHandler.off(this.element, this.constructor.EVENT_KEY)\n EventHandler.off(this.element.closest(`.${CLASS_NAME_MODAL}`), 'hide.coreui.modal', this._hideModalHandler)\n\n if (this.tip) {\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.element = null\n this.config = null\n this.tip = null\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 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.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this.element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this.element, this.constructor.Event.INSERTED)\n\n this._popper = createPopper(this.element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n\n const prevHoverState = this._hoverState\n this._hoverState = null\n\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, TRANSITION_END, complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide() {\n const tip = this.getTipElement()\n const complete = () => {\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 this._popper.destroy()\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, TRANSITION_END, 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.whiteList, 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-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 // Private\n\n _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n },\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this.config.boundary\n }\n }\n ],\n onFirstUpdate: data => {\n if (data.originalPlacement !== data.placement) {\n // this._handlePopperPlacementChange(data)\n\n // fix Popper position issue\n //TODO: find where is the problem or find better solution\n this._popper.update()\n }\n }\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n // _addAttachmentClass(attachment) {\n // this.getTipElement().classList.add(`${CLASS_PREFIX}-${attachment}`)\n // }\n\n // _getOffset() {\n // const offset = {}\n\n // if (typeof this.config.offset === 'function') {\n // offset.fn = data => {\n // data.offsets = {\n // ...data.offsets,\n // ...this.config.offset(data.offsets, this.element) || {}\n // }\n\n // return data\n // }\n // } else {\n // offset.offset = this.config.offset\n // }\n\n // return offset\n // }\n\n _getOffset() {\n let offset = []\n\n if (typeof this.config.offset === 'function') {\n offset = ({ placement, reference, popper }) => this.config.offset(({ placement, reference, popper }))\n } else {\n offset = this.config.offset\n }\n\n return offset\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,\n this.constructor.Event.CLICK,\n this.config.selector,\n event => this.toggle(event)\n )\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,\n eventIn,\n this.config.selector,\n event => this._enter(event)\n )\n EventHandler.on(this.element,\n eventOut,\n this.config.selector,\n event => this._leave(event)\n )\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}`),\n 'hide.coreui.modal',\n this._hideModalHandler\n )\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 titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.target, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.target,\n this._getDelegateConfig()\n )\n Data.setData(event.target, dataKey, context)\n }\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) ||\n 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 const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.target, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.target,\n this._getDelegateConfig()\n )\n Data.setData(event.target, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\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)\n .forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\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(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, 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 // console.log(popperData)\n // const popperInstance = popperData.elements.popper\n // this.tip = document.getElementById(popperInstance.getAttribute('id'))\n // console.log(this.tip)\n // this._cleanTipClass()\n // this._addAttachmentClass(this._getAttachment(popperData.placement))\n // }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n if (tip.getAttribute('data-popper-placement') !== null) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(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 static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .tooltip to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tooltip.jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip.jQueryInterface\n }\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): popover.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's popover.js\n * Bootstrap (v5.0.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } 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 VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.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 trigger: 'click',\n content: '',\n template: '
' +\n '
' +\n '

' +\n '
'\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 VERSION() {\n return VERSION\n }\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 _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${attachment}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n 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.getData(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.setData(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 static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Popover.jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover.jQueryInterface\n }\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v3.2.2): scrollspy.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's scrollspy.js\n * Bootstrap (v5.0.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n getSelectorFromElement,\n getUID,\n isElement,\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'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '3.2.2'\nconst DATA_KEY = 'coreui.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-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 {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n `${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, event => this._process(event))\n\n this.refresh()\n this._process()\n\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\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\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets\n .map(element => {\n let target\n const targetSelector = getSelectorFromElement(element)\n\n if (targetSelector) {\n target = SelectorEngine.findOne(targetSelector)\n }\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 Data.removeData(this._element, DATA_KEY)\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._element = null\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 ...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 +\n scrollHeight -\n 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' ||\n 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-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\n .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\n .parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both