{"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/dom/selector-engine.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["storeData","id","e","element","getUID","prefix","Math","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","SelectorEngine","_ref","documentElement","concat","findFn","children","_ref2","filter","child","parents","ancestor","Node","ELEMENT_NODE","push","closest","prev","previous","previousElementSibling","next","nextElementSibling","NAME","Alert","_element","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","dispose","parent","_this","classList","remove","contains","_destroyElement","removeChild","jQueryInterface","each","handleDismiss","alertInstance","getInstance","JQUERY_NO_CONFLICT","Constructor","noConflict","Button","toggle","triggerChangeEvent","addAriaPressed","input","checked","activeElement","focus","setAttribute","button","add","normalizeData","val","Number","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","attributes","_objectSpread2","dataset","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","toggleClass","className","EVENT_KEY","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","pointerType","clientX","touches","end","clearTimeout","itemImg","move","tagName","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","indicators","nextIndicator","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","nextElementInterval","parseInt","defaultInterval","carouselInterface","action","TypeError","ride","dataApiClickHandler","slideIndex","carousels","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","REGEXP_KEYDOWN","ARROW_UP_KEY","flip","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","Popper","referenceElement","_getPopperConfig","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","parentDropdown","placement","_getOffset","offsets","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","DefaultWhitelist","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","elements","_loop","el","elName","nodeName","attributeList","whitelistedAttributes","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacement","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","DATA_KEY","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","showEvent","shadowRoot","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","appendChild","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","CLASS_PREFIX","_this5","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","tabClass","map","token","tClass","popperData","popperInstance","popper","initConfigAnimation","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","width","height","item","sort","pageYOffset","scrollHeight","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","SELECTOR_NAV_LINKS","navItem","node","spy","Tab","listElement","itemSelector","hideEvent","callback","active","_transitionComplete","dropdownChild","dropdown","autohide","Toast"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): 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.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\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 (v4.3.1): 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 (v4.3.1): 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 (v4.3.1): 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 * Bootstrap (v4.3.1): 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 closest(element, selector) {\n return element.closest(selector)\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 * Bootstrap (v4.3.1): 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'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.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 let parent = getElementFromSelector(element)\n\n if (!parent) {\n parent = SelectorEngine.closest(element, `.${CLASSNAME_ALERT}`)\n }\n\n return parent\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 (v4.3.1): button.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 = '4.3.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\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 = SelectorEngine.closest(\n this._element,\n SELECTOR_DATA_TOGGLE\n )\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 let button = event.target\n if (!button.classList.contains(CLASS_NAME_BUTTON)) {\n button = SelectorEngine.closest(button, SELECTOR_BUTTON)\n }\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 = SelectorEngine.closest(event.target, 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 = SelectorEngine.closest(event.target, 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 (v4.3.1): 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 * Bootstrap (v4.3.1): 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 = '4.3.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst 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)\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 * Bootstrap (v4.3.1): 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 = '4.3.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-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","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): 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 Popper from 'popper.js'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_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_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_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,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|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\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._element.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(this._element, 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) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'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 = new Popper(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 !SelectorEngine.closest(parent, SELECTOR_NAVBAR_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(this._element, 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(this._element, 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 if (this._popper) {\n this._popper.scheduleUpdate()\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 return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\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(SelectorEngine.closest(this._element, `.${CLASS_NAME_NAVBAR}`))\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 _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\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 (!toggles[i].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 dropdownMenu.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 toggles[i].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 SelectorEngine.closest(event.target, 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 = this.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 * Bootstrap (v4.3.1): 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 SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue)\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const 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 * Bootstrap (v4.3.1): 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 Popper from 'popper.js'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['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: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\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,\n container: false,\n fallbackPlacement: 'flip',\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 Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'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(SelectorEngine.closest(this.element, `.${CLASS_NAME_MODAL}`), 'hide.bs.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 = new Popper(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.scheduleUpdate()\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 offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: `.${this.constructor.NAME}-arrow`\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: data => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: data => this._handlePopperPlacementChange(data)\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 _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(SelectorEngine.closest(this.element, `.${CLASS_NAME_MODAL}`),\n 'hide.bs.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 const popperInstance = popperData.instance\n this.tip = popperInstance.popper\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('x-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 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 * Bootstrap (v4.3.1): 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 = '4.3.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n 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 * Bootstrap (v4.3.1): 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 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 = '4.3.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-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') {\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 const offsetLength = this._offsets.length\n for (let i = offsetLength; 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, SelectorEngine.closest(link, 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