{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["TRANSITION_END","transitionEndEmulator","duration","_this","this","called","$","one","Util","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","ShadowRoot","parentNode","root","jQueryDetection","TypeError","version","fn","jquery","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","DATA_API_KEY","Selector","FOCUS_BLUR_DATA_API","LOAD_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","tagName","focus","hasAttribute","setAttribute","toggleClass","button","inputBtn","window","buttons","slice","querySelectorAll","i","len","length","add","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","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","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_objectSpread2","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","e","which","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","SHOW","SHOWN","HIDE","HIDDEN","Dimension","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","undefined","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","max","getWindowSizes","height","width","createClass","protoProps","staticProps","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","_extends","assign","source","getClientRect","offsets","right","left","bottom","top","rect","scrollTop","scrollLeft","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isFixed","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","_ref","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","runModifiers","modifiers","ends","prop","findIndex","cur","forEach","console","warn","enabled","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","getWindow","setupEventListeners","options","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","disableEventListeners","cancelAnimationFrame","scheduleUpdate","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","getRoundedOffsets","shouldRound","noRound","v","_data$offsets","round","floor","referenceWidth","popperWidth","isVertical","isVariation","horizontalToInteger","verticalToInteger","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","parseOffset","offset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","positionFixed","removeOnDestroy","onCreate","onUpdate","shift","shiftvariation","side","shiftOffsets","preventOverflow","instance","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","flip","flipped","originalPlacement","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","inner","subtractLength","bound","attributes","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","position","devicePixelRatio","prefixedProperty","willChange","invertTop","invertLeft","x-placement","arrowStyles","applyStyle","removeAttribute","onLoad","modifierOptions","Popper","isDestroyed","isCreated","removeChild","classCallCheck","requestAnimationFrame","update","enableEventListeners","Utils","global","PopperUtils","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","AttachmentMap","boundary","display","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","destroy","stopPropagation","constructor","_getPlacement","$parentDropdown","_getOffset","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","backdrop","HIDE_PREVENTED","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","defaultPrevented","modalTransitionDuration","modalBody","ELEMENT_NODE","appendChild","_enforceFocus","transitionComplete","shownEvent","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","*","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","l","allowedAttribute","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","container","fallbackPlacement","sanitize","AUTO","TOP","RIGHT","BOTTOM","LEFT","HoverState","INSERTED","FOCUSOUT","Trigger","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","text","empty","append","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","join","popperData","popperInstance","initConfigAnimation","Popover","_getContent","method","ACTIVATE","SCROLL","OffsetMethod","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","_transitionComplete","active","dropdownChild","dropdownElement","dropdownToggleList","autohide","Toast","_close"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\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\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.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\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\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\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_TOGGLES : '[data-toggle=\"buttons\"]',\n DATA_TOGGLE : '[data-toggle=\"button\"]',\n DATA_TOGGLES_BUTTONS : '[data-toggle=\"buttons\"] .btn',\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_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`,\n LOAD_DATA_API : `load${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 }\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 const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLES\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(Selector.INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(Selector.ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n } else if (input.type === 'checkbox') {\n if (this._element.tagName === 'LABEL' && input.checked === this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n }\n } else {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n triggerChangeEvent = false\n }\n\n if (triggerChangeEvent) {\n input.checked = !this._element.classList.contains(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n }\n\n dispose() {\n $.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 = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)[0]\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault() // work around Firefox bug #1540995\n } else {\n const inputBtn = button.querySelector(Selector.INPUT)\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault() // work around Firefox bug #1540995\n return\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n }\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n$(window).on(Event.LOAD_DATA_API, () => {\n // ensure correct active class is set to match the controls' actual values/states\n\n // find all checkboxes/readio buttons inside data-toggle groups\n let buttons = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLES_BUTTONS))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n const input = button.querySelector(Selector.INPUT)\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(ClassName.ACTIVE)\n } else {\n button.classList.remove(ClassName.ACTIVE)\n }\n }\n\n // find all button toggles\n buttons = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n if (button.getAttribute('aria-pressed') === 'true') {\n button.classList.add(ClassName.ACTIVE)\n } else {\n button.classList.remove(ClassName.ACTIVE)\n }\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\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 = this._element.querySelector(Selector.INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // 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 &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\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 (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.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 = this._element.querySelector(Selector.ACTIVE_ITEM)\n\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 $(this._element).one(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 $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n 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 $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())\n if (this._pointerEvent) {\n $(this._element).on(Event.POINTERDOWN, (event) => start(event))\n $(this._element).on(Event.POINTERUP, (event) => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n $(this._element).on(Event.TOUCHSTART, (event) => start(event))\n $(this._element).on(Event.TOUCHMOVE, (event) => move(event))\n $(this._element).on(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 ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\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).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\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 const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\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(this, _config)\n $(this).data(DATA_KEY, data)\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 data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\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\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\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 = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\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 if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\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(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\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\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n}\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic',\n 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 }\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).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show(true)\n }\n\n show(usePopper = false) {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(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 ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(Selector.MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\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 _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _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 = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(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).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\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 $(document.body).children().off('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).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\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 $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return\n }\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE)\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS))\n .filter((item) => $(item).is(':visible'))\n\n if (items.length === 0) {\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\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\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.4.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\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 = element.querySelector(Selector.DIALOG)\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 }\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).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\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 $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(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 = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(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 $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n if (this._config.backdrop === 'static') {\n const hideEventPrevented = $.Event(Event.HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.defaultPrevented) {\n return\n }\n\n this._element.classList.add(ClassName.STATIC)\n\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(ClassName.STATIC)\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n } else {\n this.hide()\n }\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(Selector.MODAL_BODY) : null\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).hasClass(ClassName.SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(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).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\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 $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\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 = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\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\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(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.4.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object',\n popperConfig : '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '
' +\n '
' +\n '
',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist,\n popperConfig : null\n}\n\nconst HoverState = {\n SHOW : 'show',\n OUT : 'out'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n}\n\nconst Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n}\n\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n 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 }\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 = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(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()).hasClass(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 $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\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).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(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 $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(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 $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\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 $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(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 $(document.body).children().off('mouseover', null, $.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).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\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.html(content)\n } else {\n $element.text(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: Selector.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 _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(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 $(this.element).on(\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 $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\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 $(this.element).closest('.modal').on(\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 || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(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()).hasClass(ClassName.SHOW) || 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 || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(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 = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\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\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(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 = $(this).data(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 $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\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\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '
' +\n '
' +\n '

' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(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 $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\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\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(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).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both