{"version":3,"sources":["../../js/src/dom/data.js","../../js/src/util.js","../../js/src/dom/polyfill.js","../../js/src/dom/eventHandler.js","../../js/src/dom/selectorEngine.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/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["storeData","id","mapData","set","element","key","data","get","keyProperties","delete","Data","setData","instance","getData","removeData","e","defaultPreventedPreservedOnDispatch","find","findOne","scopeSelectorRegex","Util","TRANSITION_END","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","window","getComputedStyle","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","makeArray","nodeList","slice","isVisible","style","parentNode","display","visibility","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","jQuery","Polyfill","CustomEvent","cancelable","createElement","preventDefault","defaultPrevented","Element","querySelectorAll","this","hasId","Boolean","replace","removeAttribute","matches","namespaceRegex","stripNameRegex","keyEventRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","getUidEvent","uid","getEvent","fixEvent","event","which","type","charCode","keyCode","delegateTarget","findHandler","events","handler","delegationSelector","uidList","keys","i","length","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","custom","indexOf","addHandler","oneOff","_normalizeParams","handlers","previousFn","fn","domElements","target","EventHandler","off","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","on","one","_normalizeParams2","inNamespace","isNamespace","charAt","forEach","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","substr","keyHandlers","trigger","args","jQueryEvent","isNative","$","bubbles","nativeDispatch","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","defineProperty","findFn","SelectorEngine","children","_this","filter","child","parents","ancestor","Node","ELEMENT_NODE","push","closest","prev","siblings","previous","previousSibling","DATA_KEY","EVENT_KEY","CLOSE","CLOSED","CLICK_DATA_API","ClassName","Alert","_element","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","dispose","parent","classList","remove","contains","_destroyElement","removeChild","_jQueryInterface","each","_handleDismiss","alertInstance","_getInstance","JQUERY_NO_CONFLICT","Constructor","noConflict","Selector","FOCUS_DATA_API","BLUR_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","checked","activeElement","hasAttribute","focus","setAttribute","button","add","regexDataKey","normalizeData","val","Number","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","attributes","_objectSpread","dataset","getDataAttribute","offset","rect","getBoundingClientRect","top","body","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","toggleClass","className","NAME","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","ACTIVE","ACTIVE_ITEM","ITEM","ITEM_IMG","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_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","ride","_dataApiClickHandler","slideIndex","carousels","len","SHOW","SHOWN","HIDE","HIDDEN","Dimension","ACTIVES","DATA_TOGGLE","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","_collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","triggerData","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","AttachmentMap","flip","boundary","reference","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","Popper","TypeError","referenceElement","_getPopperConfig","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","parentDropdown","placement","_getOffset","offsets","popperConfig","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","_dropdownInterface","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","DIALOG","MODAL_BODY","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","hideEvent","transition","_hideModal","htmlElement","handleUpdate","appendChild","_enforceFocus","transitionComplete","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this8","animate","currentTarget","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","right","innerWidth","_getScrollbarWidth","_this9","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","_this10","uriAttrs","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","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","elements","_loop","el","elName","nodeName","attributeList","whitelistedAttributes","concat","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","l","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacement","sanitize","AUTO","TOP","RIGHT","BOTTOM","LEFT","HoverState","INSERTED","FOCUSOUT","Trigger","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","content","innerText","textContent","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","tabClass","map","token","tClass","popperData","popperInstance","popper","initConfigAnimation","Popover","_getContent","method","ACTIVATE","SCROLL","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","navItem","node","spy","Tab","listElement","itemSelector","active","_transitionComplete","dropdownChild","dropdown","autohide","Toast","withoutTimeout","_close"],"mappings":"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","sourcesContent":["/**\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 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","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n TRANSITION_END: 'transitionend',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = window.getComputedStyle(element).transitionDuration\n let transitionDelay = window.getComputedStyle(element).transitionDelay\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\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n element.dispatchEvent(new Event(Util.TRANSITION_END))\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n 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(Util.TRANSITION_END, listener)\n }\n\n element.addEventListener(Util.TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : 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 },\n\n makeArray(nodeList) {\n if (!nodeList) {\n return []\n }\n\n return [].slice.call(nodeList)\n },\n\n isVisible(element) {\n if (!element) {\n return false\n }\n\n if (element.style !== null && element.parentNode !== null && typeof element.parentNode.style !== 'undefined') {\n return element.style.display !== 'none' &&\n element.parentNode.style.display !== 'none' &&\n element.style.visibility !== 'hidden'\n }\n return false\n },\n\n 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 Util.findShadowRoot(element.parentNode)\n },\n\n noop() {\n // eslint-disable-next-line no-empty-function\n return function () {}\n },\n\n get jQuery() {\n return window.jQuery\n }\n}\n\nexport default Util\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 Util from '../util'\n\n/* istanbul ignore next */\nconst Polyfill = (() => {\n // MSEdge resets defaultPrevented flag upon dispatchEvent call if at least one listener is attached\n const 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\n let find = Element.prototype.querySelectorAll\n let findOne = Element.prototype.querySelector\n\n const scopeSelectorRegex = /:scope\\b/\n const supportScopeQuery = (() => {\n const element = document.createElement('div')\n\n try {\n element.querySelectorAll(':scope *')\n } catch (e) {\n return false\n }\n\n return true\n })()\n\n if (!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 = Util.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\n return {\n defaultPreventedPreservedOnDispatch,\n find,\n findOne\n }\n})()\n\nexport default Polyfill\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dom/eventHandler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Polyfill from './polyfill'\nimport Util from '../util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst keyEventRegex = /^key/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = [\n 'click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu',\n 'mousewheel', 'DOMMouseScroll',\n 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend',\n 'keydown', 'keypress', 'keyup',\n 'orientationchange',\n 'touchstart', 'touchmove', 'touchend', 'touchcancel',\n 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel',\n 'gesturestart', 'gesturechange', 'gestureend',\n 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout',\n 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange',\n 'error', 'abort', '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 element.uidEvent = uid\n\n return eventRegistry[uid] = eventRegistry[uid] || {}\n}\n\nfunction fixEvent(event, element) {\n // Add which for key events\n if (event.which === null && keyEventRegex.test(event.type)) {\n event.which = event.charCode !== null ? event.charCode : event.keyCode\n }\n\n event.delegateTarget = element\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n fixEvent(event, element)\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 && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n fixEvent(event, target)\n\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 uidList = Object.keys(events)\n\n for (let i = 0; i < uidList.length; i++) {\n const uid = uidList[i]\n const event = events[uid]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return events[uid]\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 ? bootstrapHandler(element, handler) : bootstrapDelegationHandler(element, handler, delegationFn)\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 === null) {\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.substr(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 const $ = Util.jQuery\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && typeof $ !== 'undefined') {\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 (!Polyfill.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/selectorEngine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Polyfill from './polyfill'\nimport Util from '../util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst findFn = Polyfill.find\nconst findOne = Polyfill.findOne\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 if (typeof selector !== 'string') {\n return null\n }\n\n return findFn.call(element, selector)\n },\n\n findOne(selector, element = document.documentElement) {\n if (typeof selector !== 'string') {\n return null\n }\n\n return findOne.call(element, selector)\n },\n\n children(element, selector) {\n if (typeof selector !== 'string') {\n return null\n }\n\n const children = Util.makeArray(element.children)\n\n return children.filter((child) => this.matches(child, selector))\n },\n\n parents(element, selector) {\n if (typeof selector !== 'string') {\n return null\n }\n\n const parents = []\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 if (typeof selector !== 'string') {\n return null\n }\n\n return element.closest(selector)\n },\n\n prev(element, selector) {\n if (typeof selector !== 'string') {\n return null\n }\n\n const siblings = []\n let previous = element.previousSibling\n\n while (previous && previous.nodeType === Node.ELEMENT_NODE && previous.nodeType !== NODE_TEXT) {\n if (this.matches(previous, selector)) {\n siblings.push(previous)\n }\n\n previous = previous.previousSibling\n }\n\n return siblings\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 Data from './dom/data'\nimport EventHandler from './dom/eventHandler'\nimport SelectorEngine from './dom/selectorEngine'\nimport Util from './util'\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 = {\n DISMISS : '[data-dismiss=\"alert\"]'\n}\n\nconst Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\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 const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = SelectorEngine.findOne(selector)\n }\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 = Util.getTransitionDurationFromElement(element)\n\n EventHandler\n .one(element, Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n Util.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\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .alert to jQuery only if jQuery is present\n */\n\nconst $ = Util.jQuery\nif (typeof $ !== 'undefined') {\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 Data from './dom/data'\nimport EventHandler from './dom/eventHandler'\nimport SelectorEngine from './dom/selectorEngine'\nimport Util from './util'\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 ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n}\n\nconst Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input:not([type=\"hidden\"])',\n ACTIVE : '.active',\n BUTTON : '.btn'\n}\n\nconst Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY}`,\n BLUR_DATA_API : `blur${EVENT_KEY}${DATA_API_KEY}`\n}\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) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = SelectorEngine.findOne(Selector.ACTIVE, rootElement)\n\n if (activeElement) {\n activeElement.classList.remove(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n\n input.checked = !this._element.classList.contains(ClassName.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(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n this._element.classList.toggle(ClassName.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(ClassName.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 Data.setData(button, DATA_KEY, data)\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 button.classList.add(ClassName.FOCUS)\n})\n\nEventHandler.on(document, Event.BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = SelectorEngine.closest(event.target, Selector.BUTTON)\n button.classList.remove(ClassName.FOCUS)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .button to jQuery only if jQuery is present\n */\n\nconst $ = Util.jQuery\nif (typeof $ !== 'undefined') {\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\nconst regexDataKey = /[A-Z]/g\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n } else if (val === 'false') {\n return false\n } else if (val === 'null') {\n return null\n } else if (val === Number(val).toString()) {\n return Number(val)\n } else if (val === '') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(regexDataKey, (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)\n .forEach((key) => {\n attributes[key] = normalizeData(attributes[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element\n .getAttribute(`data-${normalizeDataKey(key)}`)\n )\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 Data from './dom/data'\nimport EventHandler from './dom/eventHandler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selectorEngine'\nimport Util from './util'\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'\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\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 = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n}\n\nconst Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHSTART : `touchstart${EVENT_KEY}`,\n TOUCHMOVE : `touchmove${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n POINTERDOWN : `pointerdown${EVENT_KEY}`,\n POINTERUP : `pointerup${EVENT_KEY}`,\n DRAG_START : `dragstart${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item',\n POINTER_EVENT : 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n ITEM_IMG : '.carousel-item img',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = SelectorEngine.findOne(Selector.INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && Util.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 Util.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 Util.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 // 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) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\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 this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n Util.makeArray(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(ClassName.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.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? Util.makeArray(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] : 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(ClassName.ACTIVE)\n }\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n nextIndicator.classList.add(ClassName.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 = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && nextElement.classList.contains(ClassName.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(ClassName.SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n Util.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 = Util.getTransitionDurationFromElement(activeElement)\n\n EventHandler\n .one(activeElement, Util.TRANSITION_END, () => {\n nextElement.classList.remove(directionalClassName)\n nextElement.classList.remove(orderClassName)\n nextElement.classList.add(ClassName.ACTIVE)\n\n activeElement.classList.remove(ClassName.ACTIVE)\n activeElement.classList.remove(orderClassName)\n activeElement.classList.remove(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 Util.emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(ClassName.ACTIVE)\n nextElement.classList.add(ClassName.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 Error(`No method named \"${action}\"`)\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 selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = SelectorEngine.findOne(selector)\n\n if (!target || !target.classList.contains(ClassName.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 = Util.makeArray(SelectorEngine.find(Selector.DATA_RIDE))\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\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .carousel to jQuery only if jQuery is present\n */\n\nconst $ = Util.jQuery\nif (typeof $ !== 'undefined') {\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 Data from './dom/data'\nimport EventHandler from './dom/eventHandler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selectorEngine'\nimport Util from './util'\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 = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n}\n\nconst Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n}\n\nconst Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n}\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 = Util.makeArray(SelectorEngine.find(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = Util.makeArray(SelectorEngine.find(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = Util.makeArray(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(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n this._element.classList.contains(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = Util.makeArray(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(ClassName.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(ClassName.COLLAPSE)\n this._element.classList.add(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach((element) => {\n element.classList.remove(ClassName.COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(ClassName.COLLAPSING)\n this._element.classList.add(ClassName.COLLAPSE)\n this._element.classList.add(ClassName.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 = Util.getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, Util.TRANSITION_END, complete)\n\n Util.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(ClassName.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 Util.reflow(this._element)\n\n this._element.classList.add(ClassName.COLLAPSING)\n this._element.classList.remove(ClassName.COLLAPSE)\n this._element.classList.remove(ClassName.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 selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const elem = SelectorEngine.findOne(selector)\n\n if (!elem.classList.contains(ClassName.SHOW)) {\n trigger.classList.add(ClassName.COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(ClassName.COLLAPSING)\n this._element.classList.add(ClassName.COLLAPSE)\n EventHandler.trigger(this._element, Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, Util.TRANSITION_END, complete)\n Util.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 Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = this._element.classList.contains(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // it's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined' || typeof this._config.parent[0] !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n Util.makeArray(SelectorEngine.find(selector, parent))\n .forEach((element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = element.classList.contains(ClassName.SHOW)\n\n if (triggerArray.length) {\n triggerArray.forEach((elem) => {\n if (!isOpen) {\n elem.classList.add(ClassName.COLLAPSED)\n } else {\n elem.classList.remove(ClassName.COLLAPSED)\n }\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? SelectorEngine.findOne(selector) : null\n }\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 && /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 Error(`No method named \"${config}\"`)\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 = Util.getSelectorFromElement(this)\n const selectorElements = Util.makeArray(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 config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse._collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .collapse to jQuery only if jQuery is present\n */\n\nconst $ = Util.jQuery\nif (typeof $ !== 'undefined') {\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 Data from './dom/data'\nimport EventHandler from './dom/eventHandler'\nimport Manipulator from './dom/manipulator'\nimport Popper from 'popper.js'\nimport SelectorEngine from './dom/selectorEngine'\nimport Util from './util'\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'\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n}\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string'\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(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = this._menu.classList.contains(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = EventHandler.trigger(parent, Event.SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\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 (Util.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(ClassName.POSITION_STATIC)\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 !Util.makeArray(SelectorEngine.closest(parent, Selector.NAVBAR_NAV)).length) {\n Util.makeArray(document.body.children)\n .forEach((elem) => EventHandler.on(elem, 'mouseover', null, Util.noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n Manipulator.toggleClass(this._menu, ClassName.SHOW)\n Manipulator.toggleClass(parent, ClassName.SHOW)\n EventHandler.trigger(parent, Event.SHOWN, relatedTarget)\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(ClassName.DISABLED) || this._menu.classList.contains(ClassName.SHOW)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(parent, Event.SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n Manipulator.toggleClass(this._menu, ClassName.SHOW)\n Manipulator.toggleClass(parent, ClassName.SHOW)\n EventHandler.trigger(parent, Event.SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(ClassName.DISABLED) || !this._menu.classList.contains(ClassName.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 Manipulator.toggleClass(this._menu, ClassName.SHOW)\n Manipulator.toggleClass(parent, ClassName.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 !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\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 Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = SelectorEngine.findOne(Selector.MENU, parent)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if (parentDropdown.classList.contains(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if (this._menu.classList.contains(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if (parentDropdown.classList.contains(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if (parentDropdown.classList.contains(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if (this._menu.classList.contains(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return Boolean(SelectorEngine.closest(this._element, '.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 popperConfig\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 Error(`No method named \"${config}\"`)\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.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = Util.makeArray(SelectorEngine.find(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!parent.classList.contains(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) ||\n event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n parent.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(parent, Event.HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n Util.makeArray(document.body.children)\n .forEach((elem) => EventHandler.off(elem, 'mouseover', null, Util.noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n dropdownMenu.classList.remove(ClassName.SHOW)\n parent.classList.remove(ClassName.SHOW)\n EventHandler.trigger(parent, Event.HIDDEN, relatedTarget)\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = SelectorEngine.findOne(selector)\n }\n\n return parent || 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.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n SelectorEngine.closest(event.target, Selector.MENU)) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = parent.classList.contains(ClassName.SHOW)\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n EventHandler.trigger(SelectorEngine.findOne(Selector.DATA_TOGGLE, parent), 'focus')\n }\n\n Dropdown._clearMenus()\n return\n }\n\n const items = Util.makeArray(SelectorEngine.find(Selector.VISIBLE_ITEMS, parent))\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\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\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .dropdown to jQuery only if jQuery is present\n */\n\nconst $ = Util.jQuery\nif (typeof $ !== 'undefined') {\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): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport EventHandler from './dom/eventHandler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selectorEngine'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DIALOG : '.modal-dialog',\n MODAL_BODY : '.modal-body',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = SelectorEngine.findOne(Selector.DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, Event.SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element,\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n EventHandler.on(this._dialog, Event.MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, Event.MOUSEUP_DISMISS, (event) => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, Event.HIDE)\n\n if (!this._isShown || hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, Event.FOCUSIN)\n\n this._element.classList.remove(ClassName.SHOW)\n\n EventHandler.off(this._element, Event.CLICK_DISMISS)\n EventHandler.off(this._dialog, Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, Util.TRANSITION_END, (event) => this._hideModal(event))\n Util.emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => EventHandler.off(htmlElement, EVENT_KEY))\n\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, Event.FOCUSIN)\n\n Data.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if (this._dialog.classList.contains(ClassName.SCROLLABLE)) {\n SelectorEngine.findOne(Selector.MODAL_BODY, this._dialog).scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n this._element.classList.add(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n EventHandler.trigger(this._element, Event.SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, Util.TRANSITION_END, transitionComplete)\n Util.emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, Event.FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n EventHandler.on(this._element, Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n EventHandler.off(this._element, Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n EventHandler.off(window, Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(ClassName.FADE)\n ? ClassName.FADE\n : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, Util.TRANSITION_END, callback)\n Util.emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if (this._element.classList.contains(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, Util.TRANSITION_END, callbackRemove)\n Util.emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n Util.makeArray(SelectorEngine.find(Selector.FIXED_CONTENT))\n .forEach((element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = window.getComputedStyle(element)['padding-right']\n Manipulator.setDataAttribute(element, 'padding-right', actualPadding)\n element.style.paddingRight = `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n })\n\n // Adjust sticky content margin\n Util.makeArray(SelectorEngine.find(Selector.STICKY_CONTENT))\n .forEach((element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = window.getComputedStyle(element)['margin-right']\n Manipulator.setDataAttribute(element, 'margin-right', actualMargin)\n element.style.marginRight = `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = window.getComputedStyle(document.body)['padding-right']\n\n Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding)\n document.body.style.paddingRight = `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n }\n\n document.body.classList.add(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n Util.makeArray(SelectorEngine.find(Selector.FIXED_CONTENT))\n .forEach((element) => {\n const padding = Manipulator.getDataAttribute(element, 'padding-right')\n if (typeof padding !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'padding-right')\n element.style.paddingRight = padding\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n Util.makeArray(SelectorEngine.find(`${Selector.STICKY_CONTENT}`))\n .forEach((element) => {\n const margin = Manipulator.getDataAttribute(element, 'margin-right')\n if (typeof margin !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'margin-right')\n element.style.marginRight = margin\n }\n })\n\n // Restore body padding\n const padding = Manipulator.getDataAttribute(document.body, 'padding-right')\n if (typeof padding !== 'undefined') {\n Manipulator.removeDataAttribute(document.body, 'padding-right')\n document.body.style.paddingRight = padding\n } else {\n document.body.style.paddingRight = ''\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n\n static _getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = SelectorEngine.findOne(selector)\n }\n\n const config = Data.getData(target, DATA_KEY)\n ? 'toggle' : {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, Event.SHOW, (showEvent) => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, Event.HIDDEN, () => {\n if (Util.isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n data = new Modal(target, config)\n }\n\n data.show(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\nconst $ = Util.jQuery\nif (typeof $ !== 'undefined') {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Modal._jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Util from '../util'\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\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', '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\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,[a-z0-9+/]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\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 = Util.makeArray(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(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = Util.makeArray(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 DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/eventHandler'\nimport Manipulator from './dom/manipulator'\nimport Popper from 'popper.js'\nimport SelectorEngine from './dom/selectorEngine'\nimport Util from './util'\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\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}\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}\n\nconst HoverState = {\n SHOW : 'show',\n OUT : 'out'\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 ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n TOOLTIP_ARROW : '.tooltip-arrow'\n}\n\nconst Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n}\n\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\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.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, 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(ClassName.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, '.modal'), 'hide.bs.modal')\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 !== null) {\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 = Util.findShadowRoot(this.element)\n const isInTheDom = shadowRoot !== null\n ? shadowRoot.contains(this.element)\n : this.element.ownerDocument.documentElement.contains(this.element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.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(ClassName.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, {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.TOOLTIP_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 tip.classList.add(ClassName.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 Util.makeArray(document.body.children).forEach((element) => {\n EventHandler.on(element, 'mouseover', Util.noop())\n })\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n EventHandler.trigger(this.element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, Util.TRANSITION_END, complete)\n Util.emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HoverState.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 if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n const hideEvent = EventHandler.trigger(this.element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(ClassName.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 Util.makeArray(document.body.children)\n .forEach((element) => EventHandler.off(element, 'mouseover', Util.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(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n EventHandler.one(tip, Util.TRANSITION_END, complete)\n Util.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 addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${attachment}`)\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(ClassName.FADE)\n tip.classList.remove(ClassName.SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\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.innerText = 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.innerText = 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 _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 (Util.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 EventHandler.on(SelectorEngine.closest(this.element, '.modal'),\n 'hide.bs.modal',\n () => {\n if (this.element) {\n this.hide()\n }\n }\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.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, 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(ClassName.SHOW) ||\n context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.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 === HoverState.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.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, 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 = HoverState.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 === HoverState.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 Util.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) {\n tabClass\n .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 tip.classList.remove(ClassName.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 data[config]()\n }\n })\n }\n\n static _getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\nconst $ = Util.jQuery\nif (typeof $ !== 'undefined') {\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 Data from './dom/data'\nimport SelectorEngine from './dom/selectorEngine'\nimport Tooltip from './tooltip'\nimport Util from './util'\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 ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\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 addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${attachment}`)\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 this.setElementContent(SelectorEngine.findOne(Selector.CONTENT, tip), content)\n\n tip.classList.remove(ClassName.FADE)\n tip.classList.remove(ClassName.SHOW)\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\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 data[config]()\n }\n })\n }\n\n static _getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\nconst $ = Util.jQuery\nif (typeof $ !== 'undefined') {\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 Data from './dom/data'\nimport EventHandler from './dom/eventHandler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selectorEngine'\nimport Util from './util'\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 = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\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} ${Selector.DROPDOWN_ITEMS}`\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 ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = Util.makeArray(SelectorEngine.find(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.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 // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\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.id\n if (!id) {\n id = Util.getUID(NAME)\n config.target.id = id\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : 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 : 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 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(ClassName.DROPDOWN_ITEM)) {\n SelectorEngine\n .findOne(Selector.DROPDOWN_TOGGLE, SelectorEngine.closest(link, Selector.DROPDOWN))\n .classList.add(ClassName.ACTIVE)\n\n link.classList.add(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(ClassName.ACTIVE)\n\n SelectorEngine\n .parents(link, Selector.NAV_LIST_GROUP)\n .forEach((listGroup) => {\n // Set triggered links parents as active\n // With both