mirror of
https://github.com/twbs/bootstrap.git
synced 2024-11-29 11:24:18 +01:00
1 line
217 KiB
Plaintext
1 line
217 KiB
Plaintext
{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/polyfill.js","../../js/src/dom/event-handler.js","../../js/src/dom/selector-engine.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","toString","call","match","toLowerCase","getUID","prefix","Math","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","window","getComputedStyle","transitionDuration","_window$getComputedSt","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","evt","createEvent","initEvent","dispatchEvent","isElement","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","makeArray","nodeList","slice","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","mapData","storeData","id","set","key","data","get","keyProperties","delete","Data","setData","instance","getData","removeData","Element","prototype","matches","closest","find","querySelectorAll","findOne","createCustomEvent","eventName","params","CustomEvent","bubbles","cancelable","detail","initCustomEvent","workingDefaultPrevented","e","preventDefault","defaultPrevented","origPreventDefault","Event","this","defineProperty","configurable","defaultPreventedPreservedOnDispatch","createElement","msMatchesSelector","webkitMatchesSelector","parentElement","scopeSelectorRegex","supportScopeQuery","_","hasId","Boolean","replace","removeAttribute","$","namespaceRegex","stripNameRegex","keyEventRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","getUidEvent","uid","getEvent","fixEvent","event","which","type","charCode","keyCode","delegateTarget","bootstrapHandler","fn","handler","oneOff","EventHandler","off","apply","bootstrapDelegationHandler","domElements","target","i","length","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","custom","indexOf","addHandler","_normalizeParams","handlers","previousFn","removeHandler","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","_normalizeParams2","inNamespace","isNamespace","charAt","elementEvent","keyHandlers","trigger","args","jQueryEvent","isNative","nativeDispatch","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","NODE_TEXT","SelectorEngine","findFn","children","filter","child","_this","parents","ancestor","Node","ELEMENT_NODE","push","prev","siblings","previous","previousSibling","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","Selector","DISMISS","CLOSE","CLOSED","CLICK_DATA_API","ClassName","ALERT","FADE","SHOW","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","ACTIVE","BUTTON","FOCUS","DATA_TOGGLE_CARROT","DATA_TOGGLE","INPUT","FOCUS_DATA_API","BLUR_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","checked","activeElement","focus","setAttribute","button","add","normalizeData","val","Number","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","attributes","_objectSpread2","dataset","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","toggleClass","className","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","CAROUSEL","ITEM","POINTER_EVENT","ACTIVE_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","start","_this3","pointerType","clientX","touches","end","clearTimeout","itemImg","move","tagName","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","indicators","nextIndicator","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","nextElementInterval","parseInt","defaultInterval","_this4","carouselInterface","action","TypeError","ride","dataApiClickHandler","slideIndex","carousels","SHOWN","HIDE","HIDDEN","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","ACTIVES","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","selected","triggerArray","isOpen","triggerData","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","DISABLED","DROPUP","DROPRIGHT","DROPLEFT","MENURIGHT","POSITION_STATIC","FORM_CHILD","MENU","NAVBAR_NAV","VISIBLE_ITEMS","AttachmentMap","TOP","TOPEND","BOTTOM","BOTTOMEND","RIGHTEND","LEFTEND","flip","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","Popper","referenceElement","_getPopperConfig","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","parentDropdown","placement","_getOffset","offsets","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","backdrop","HIDE_PREVENTED","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","SCROLLABLE","SCROLLBAR_MEASURER","BACKDROP","OPEN","STATIC","DIALOG","MODAL_BODY","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","appendChild","_enforceFocus","transitionComplete","_this5","_triggerBackdropTransition","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","animate","_this8","currentTarget","backdropTransitionDuration","callbackRemove","modalTransitionDuration","_this9","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","right","innerWidth","_getScrollbarWidth","actualPadding","calculatedPadding","_this10","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","_this11","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","l","DefaultWhitelist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","elements","el","elName","attributeList","whitelistedAttributes","concat","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacement","sanitize","AUTO","HoverState","OUT","INSERTED","FOCUSOUT","TOOLTIP_INNER","Trigger","HOVER","MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","innerText","textContent","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","tabClass","map","token","tClass","popperData","popperInstance","popper","initConfigAnimation","TITLE","CONTENT","Popover","_getContent","method","ACTIVATE","SCROLL","DROPDOWN_ITEM","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","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","DROPDOWN_MENU","ACTIVE_UL","DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","hideEvent","active","_transitionComplete","dropdownChild","dropdown","SHOWING","autohide","Toast"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => ({}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase())\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element)\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n const evt = document.createEvent('HTMLEvents')\n\n evt.initEvent(TRANSITION_END, true, true)\n element.dispatchEvent(evt)\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes)\n .forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst makeArray = nodeList => {\n if (!nodeList) {\n return []\n }\n\n return [].slice.call(nodeList)\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nexport {\n getjQuery,\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n makeArray,\n isVisible,\n findShadowRoot,\n noop,\n reflow\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.key === 'undefined') {\n element.key = {\n key,\n id\n }\n id++\n }\n\n storeData[element.key.id] = data\n },\n get(element, key) {\n if (!element || typeof element.key === 'undefined') {\n return null\n }\n\n const keyProperties = element.key\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.key === 'undefined') {\n return\n }\n\n const keyProperties = element.key\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.key\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/* istanbul ignore file */\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dom/polyfill.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getUID } from '../util/index'\n\nlet { matches, closest } = Element.prototype\nlet find = Element.prototype.querySelectorAll\nlet findOne = Element.prototype.querySelector\nlet createCustomEvent = (eventName, params) => {\n const cEvent = new CustomEvent(eventName, params)\n\n return cEvent\n}\n\nif (typeof window.CustomEvent !== 'function') {\n createCustomEvent = (eventName, params) => {\n params = params || { bubbles: false, cancelable: false, detail: null }\n\n const evt = document.createEvent('CustomEvent')\n\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail)\n return evt\n }\n}\n\nconst workingDefaultPrevented = (() => {\n const e = document.createEvent('CustomEvent')\n\n e.initEvent('Bootstrap', true, true)\n e.preventDefault()\n return e.defaultPrevented\n})()\n\nif (!workingDefaultPrevented) {\n const origPreventDefault = Event.prototype.preventDefault\n\n Event.prototype.preventDefault = function () {\n if (!this.cancelable) {\n return\n }\n\n origPreventDefault.call(this)\n Object.defineProperty(this, 'defaultPrevented', {\n get() {\n return true\n },\n configurable: true\n })\n }\n}\n\n// MSEdge resets defaultPrevented flag upon dispatchEvent call if at least one listener is attached\nconst defaultPreventedPreservedOnDispatch = (() => {\n const e = createCustomEvent('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\nif (!matches) {\n matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector\n}\n\nif (!closest) {\n closest = function (selector) {\n let element = this\n\n do {\n if (matches.call(element, selector)) {\n return element\n }\n\n element = element.parentElement || element.parentNode\n } while (element !== null && element.nodeType === 1)\n\n return null\n }\n}\n\nconst scopeSelectorRegex = /:scope\\b/\nconst supportScopeQuery = (() => {\n const element = document.createElement('div')\n\n try {\n element.querySelectorAll(':scope *')\n } catch (_) {\n return false\n }\n\n return true\n})()\n\nif (!supportScopeQuery) {\n find = function (selector) {\n if (!scopeSelectorRegex.test(selector)) {\n return this.querySelectorAll(selector)\n }\n\n const hasId = Boolean(this.id)\n\n if (!hasId) {\n this.id = getUID('scope')\n }\n\n let nodeList = null\n try {\n selector = selector.replace(scopeSelectorRegex, `#${this.id}`)\n nodeList = this.querySelectorAll(selector)\n } finally {\n if (!hasId) {\n this.removeAttribute('id')\n }\n }\n\n return nodeList\n }\n\n findOne = function (selector) {\n if (!scopeSelectorRegex.test(selector)) {\n return this.querySelector(selector)\n }\n\n const matches = find.call(this, selector)\n\n if (typeof matches[0] !== 'undefined') {\n return matches[0]\n }\n\n return null\n }\n}\n\nexport {\n createCustomEvent,\n find,\n findOne,\n matches,\n closest,\n defaultPreventedPreservedOnDispatch\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\nimport { createCustomEvent, defaultPreventedPreservedOnDispatch } from './polyfill'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst $ = getjQuery()\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',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n]\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction 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.keyCode : event.charCode\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 !== 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 uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.indexOf(typeEvent) > -1\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent)\n .forEach(handlerKey => {\n if (handlerKey.indexOf(namespace) > -1) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.charAt(0) === '.'\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events)\n .forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent)\n .forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.indexOf(handlerKey) > -1) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.indexOf(typeEvent) > -1\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = createCustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom informations in our event\n if (typeof args !== 'undefined') {\n Object.keys(args)\n .forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n\n if (!defaultPreventedPreservedOnDispatch) {\n Object.defineProperty(evt, 'defaultPrevented', {\n get: () => true\n })\n }\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { find as findFn, findOne, matches, closest } from './polyfill'\nimport { makeArray } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n matches(element, selector) {\n return matches.call(element, selector)\n },\n\n find(selector, element = document.documentElement) {\n return findFn.call(element, selector)\n },\n\n findOne(selector, element = document.documentElement) {\n return findOne.call(element, selector)\n },\n\n children(element, selector) {\n const children = makeArray(element.children)\n\n return children.filter(child => this.matches(child, selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (this.matches(ancestor, selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n closest(element, selector) {\n return closest.call(element, selector)\n },\n\n prev(element, selector) {\n const siblings = []\n\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 {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Selector = {\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\n if (this._element) {\n Data.setData(element, DATA_KEY, this)\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n let parent = getElementFromSelector(element)\n\n if (!parent) {\n parent = SelectorEngine.closest(element, `.${ClassName.ALERT}`)\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, Event.CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(ClassName.SHOW)\n\n if (!element.classList.contains(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler\n .one(element, TRANSITION_END, () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, Event.CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler\n .on(document, Event.CLICK_DATA_API, Selector.DISMISS, Alert.handleDismiss(new Alert()))\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .alert to jQuery only if jQuery is present\n */\n\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Alert.jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert.jQueryInterface\n }\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst 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 && 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 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 }\n\n data.toggle()\n})\n\nEventHandler.on(document, Event.FOCUS_DATA_API, Selector.DATA_TOGGLE_CARROT, event => {\n const button = SelectorEngine.closest(event.target, Selector.BUTTON)\n\n if (button) {\n button.classList.add(ClassName.FOCUS)\n }\n})\n\nEventHandler.on(document, Event.BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, event => {\n const button = SelectorEngine.closest(event.target, Selector.BUTTON)\n\n if (button) {\n button.classList.remove(ClassName.FOCUS)\n }\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .button to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Button.jQueryInterface\n $.fn[NAME].Constructor = Button\n\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button.jQueryInterface\n }\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {\n ...element.dataset\n }\n\n Object.keys(attributes).forEach(key => {\n attributes[key] = normalizeData(attributes[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n },\n\n toggleClass(element, className) {\n if (!element) {\n return\n }\n\n if (element.classList.contains(className)) {\n element.classList.remove(className)\n } else {\n element.classList.add(className)\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n makeArray,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\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 && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(Selector.NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(Selector.ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n Direction.NEXT :\n Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n Data.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler\n .on(this._element, Event.KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler\n .on(this._element, Event.MOUSEENTER, event => this.pause(event))\n EventHandler\n .on(this._element, Event.MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n 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 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] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(Selector.ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = SelectorEngine.find(Selector.ACTIVE, this._indicatorsElement)\n for (let i = 0; i < indicators.length; i++) {\n indicators[i].classList.remove(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 reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler\n .one(activeElement, TRANSITION_END, () => {\n nextElement.classList.remove(directionalClassName)\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 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 TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(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 = 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\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .carousel to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Carousel.jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel.jQueryInterface\n }\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n makeArray,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst Event = {\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 = makeArray(SelectorEngine.find(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = 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 = getSelectorFromElement(elem)\n const filterElement = 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 = 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 = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !this._element.classList.contains(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 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 elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(ClassName.SHOW)) {\n trigger.classList.add(ClassName.COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(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 = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = this._element.classList.contains(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `[data-toggle=\"collapse\"][data-parent=\"${parent}\"]`\n\n makeArray(SelectorEngine.find(selector, parent))\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = element.classList.contains(ClassName.SHOW)\n\n if (triggerArray.length) {\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(ClassName.COLLAPSED)\n } else {\n elem.classList.add(ClassName.COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n }\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A') {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = 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\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .collapse to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Collapse.jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse.jQueryInterface\n }\n}\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n getElementFromSelector,\n isElement,\n isVisible,\n makeArray,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport Popper from 'popper.js'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\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 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 popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(ClassName.DISABLED)) {\n return\n }\n\n const isActive = this._menu.classList.contains(ClassName.SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(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 // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n parent.classList.add(ClassName.POSITION_STATIC)\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !makeArray(SelectorEngine.closest(parent, Selector.NAVBAR_NAV)).length) {\n makeArray(document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n Manipulator.toggleClass(this._menu, 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 if (this._popper) {\n this._popper.destroy()\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) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, Event.CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n const parent = Dropdown.getParentFromElement(this._element)\n\n return SelectorEngine.findOne(Selector.MENU, parent)\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n let placement = 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\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 {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n (event.type === 'keyup' && event.which !== TAB_KEYCODE))) {\n return\n }\n\n const toggles = 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 makeArray(document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(ClassName.SHOW)\n parent.classList.remove(ClassName.SHOW)\n EventHandler.trigger(parent, Event.HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.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))) :\n !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 SelectorEngine.findOne(Selector.DATA_TOGGLE, parent).focus()\n }\n\n Dropdown.clearMenus()\n return\n }\n\n const items = makeArray(SelectorEngine.find(Selector.VISIBLE_ITEMS, parent))\n .filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.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\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .dropdown to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Dropdown.jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown.jQueryInterface\n }\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n makeArray,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '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 HIDE_PREVENTED: `hidePrevented${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 STATIC: 'modal-static'\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 (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 if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, Event.FOCUSIN)\n\n Data.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(ClassName.FADE)\n const modalBody = SelectorEngine.findOne(Selector.MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if (this._dialog.classList.contains(ClassName.SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n 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\n this._isTransitioning = false\n EventHandler.trigger(this._element, Event.SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, TRANSITION_END, transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, Event.FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, Event.FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n EventHandler.on(this._element, Event.KEYDOWN_DISMISS, event => {\n if (event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, Event.RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._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 this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\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\n if (event.target !== event.currentTarget) {\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(ClassName.SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, TRANSITION_END, callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(ClassName.FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n if (this._config.backdrop === 'static') {\n const hideEvent = EventHandler.trigger(this._element, Event.HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.add(ClassName.STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._element)\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.classList.remove(ClassName.STATIC)\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n } else {\n this.hide()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = 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 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 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 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 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 document.body.style.paddingRight = ''\n } else {\n Manipulator.removeDataAttribute(document.body, 'padding-right')\n document.body.style.paddingRight = padding\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = 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\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, Event.SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, Event.HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.show(this)\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .modal to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Modal.jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal.jQueryInterface\n }\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { makeArray } from './index'\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = 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(elName) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = 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 getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n makeArray,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport Popper from 'popper.js'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n}\n\nconst 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_INNER: '.tooltip-inner'\n}\n\nconst Trigger = {\n HOVER: 'hover',\n FOCUS: 'focus',\n CLICK: 'click',\n MANUAL: 'manual'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = Data.getData(event.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', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if (this.element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (this.isWithContent() && this._isEnabled) {\n const showEvent = EventHandler.trigger(this.element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this.element)\n const isInTheDom = shadowRoot === null ?\n this.element.ownerDocument.documentElement.contains(this.element) :\n shadowRoot.contains(this.element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(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, this._getPopperConfig(attachment))\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 makeArray(document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n EventHandler.trigger(this.element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(ClassName.FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, TRANSITION_END, complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide() {\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== 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 this._popper.destroy()\n }\n\n const hideEvent = EventHandler.trigger(this.element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(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 makeArray(document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if (this.tip.classList.contains(ClassName.FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, TRANSITION_END, complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(Selector.TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(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' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.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 _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: `.${this.constructor.NAME}-arrow`\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: data => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: data => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${attachment}`)\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this.element,\n this.constructor.Event.CLICK,\n this.config.selector,\n event => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this.element,\n eventIn,\n this.config.selector,\n event => this._enter(event)\n )\n EventHandler.on(this.element,\n eventOut,\n this.config.selector,\n event => this._leave(event)\n )\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n EventHandler.on(SelectorEngine.closest(this.element, '.modal'),\n 'hide.bs.modal',\n this._hideModalHandler\n )\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.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 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\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\n data[config]()\n }\n })\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .tooltip to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tooltip.jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip.jQueryInterface\n }\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\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 setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(Selector.TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n\n this.setElementContent(SelectorEngine.findOne(Selector.CONTENT, tip), content)\n\n tip.classList.remove(ClassName.FADE)\n tip.classList.remove(ClassName.SHOW)\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${attachment}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Popover.jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover.jQueryInterface\n }\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n getSelectorFromElement,\n getUID,\n makeArray,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst Event = {\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 ACTIVE: 'active'\n}\n\nconst Selector = {\n DATA_SPY: '[data-spy=\"scroll\"]',\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_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} .${ClassName.DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, Event.SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n OffsetMethod.OFFSET :\n OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = makeArray(SelectorEngine.find(this._selector))\n\n targets\n .map(element => {\n let target\n const targetSelector = getSelectorFromElement(element)\n\n if (targetSelector) {\n target = SelectorEngine.findOne(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(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 <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`)\n .forEach(item => item.classList.add(ClassName.ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, Selector.NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, Selector.NAV_LINKS)\n .forEach(item => item.classList.add(ClassName.ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n makeArray(SelectorEngine.find(this._selector))\n .filter(node => node.classList.contains(ClassName.ACTIVE))\n .forEach(node => node.classList.remove(ClassName.ACTIVE))\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) {\n data = new ScrollSpy(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, Event.LOAD_DATA_API, () => {\n makeArray(SelectorEngine.find(Selector.DATA_SPY))\n .forEach(spy => new ScrollSpy(spy, Manipulator.getDataAttributes(spy)))\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = ScrollSpy.jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy.jQueryInterface\n }\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n makeArray,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\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_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU: 'dropdown-menu',\n ACTIVE: 'active',\n DISABLED: 'disabled',\n FADE: 'fade',\n SHOW: 'show'\n}\n\nconst Selector = {\n DROPDOWN: '.dropdown',\n NAV_LIST_GROUP: '.nav, .list-group',\n ACTIVE: '.active',\n ACTIVE_UL: ':scope > li > .active',\n DATA_TOGGLE: '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE: '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD: ':scope > .dropdown-menu .active'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab {\n constructor(element) {\n this._element = element\n\n Data.setData(this._element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(ClassName.ACTIVE)) ||\n this._element.classList.contains(ClassName.DISABLED)) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = SelectorEngine.closest(this._element, Selector.NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = makeArray(SelectorEngine.find(itemSelector, listElement))\n previous = previous[previous.length - 1]\n }\n\n let hideEvent = null\n\n if (previous) {\n hideEvent = EventHandler.trigger(previous, Event.HIDE, {\n relatedTarget: this._element\n })\n }\n\n const showEvent = EventHandler.trigger(this._element, Event.SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented ||\n (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n EventHandler.trigger(previous, Event.HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, Event.SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(Selector.ACTIVE_UL, container) :\n SelectorEngine.children(container, Selector.ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback &&\n (active && active.classList.contains(ClassName.FADE))\n\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = getTransitionDurationFromElement(active)\n active.classList.remove(ClassName.SHOW)\n\n EventHandler.one(active, TRANSITION_END, complete)\n emulateTransitionEnd(active, transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(ClassName.ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(Selector.DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(ClassName.FADE)) {\n element.classList.add(ClassName.SHOW)\n }\n\n if (element.parentNode && element.parentNode.classList.contains(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = SelectorEngine.closest(element, Selector.DROPDOWN)\n\n if (dropdownElement) {\n makeArray(SelectorEngine.find(Selector.DROPDOWN_TOGGLE))\n .forEach(dropdown => dropdown.classList.add(ClassName.ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n\n 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 event.preventDefault()\n\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .tab to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tab.jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab.jQueryInterface\n }\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getTransitionDurationFromElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst Event = {\n CLICK_DISMISS: `click.dismiss${EVENT_KEY}`,\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE: 'fade',\n HIDE: 'hide',\n SHOW: 'show',\n SHOWING: 'showing'\n}\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 500\n}\n\nconst Selector = {\n DATA_DISMISS: '[data-dismiss=\"toast\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast {\n constructor(element, config) {\n this._element = element\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, Event.SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n if (this._config.animation) {\n this._element.classList.add(ClassName.FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(ClassName.SHOWING)\n this._element.classList.add(ClassName.SHOW)\n\n EventHandler.trigger(this._element, Event.SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(ClassName.HIDE)\n reflow(this._element)\n this._element.classList.add(ClassName.SHOWING)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._element.classList.contains(ClassName.SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, Event.HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(ClassName.HIDE)\n EventHandler.trigger(this._element, Event.HIDDEN)\n }\n\n this._element.classList.remove(ClassName.SHOW)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n this._timeout = null\n\n if (this._element.classList.contains(ClassName.SHOW)) {\n this._element.classList.remove(ClassName.SHOW)\n }\n\n EventHandler.off(this._element, Event.CLICK_DISMISS)\n Data.removeData(this._element, DATA_KEY)\n\n this._element = null\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...typeof config === 'object' && config ? config : {}\n }\n\n typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _setListeners() {\n EventHandler.on(\n this._element,\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n () => this.hide()\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\n\n if (!data) {\n data = new Toast(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .toast to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Toast.jQueryInterface\n $.fn[NAME].Constructor = Toast\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast.jQueryInterface\n }\n}\n\nexport default Toast\n"]} |