-{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"names":["$","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","ClassName","Alert","DATA_API_KEY","Selector","Button","Default","DefaultType","Direction","Carousel","Dimension","Collapse","REGEXP_KEYDOWN","AttachmentMap","Dropdown","Modal","CLASS_PREFIX","BSCLS_PREFIX_REGEX","HoverState","Trigger","Tooltip","Popover","OffsetMethod","ScrollSpy","Tab","Util","TRANSITION_END","transitionEndEmulator","duration","_this","this","called","one","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","find","length","err","getTransitionDurationFromElement","transitionDuration","css","parseFloat","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","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","CLOSE","CLOSED","CLICK_DATA_API","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","_createClass","key","get","on","Constructor","noConflict","FOCUS_BLUR_DATA_API","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","activeElement","hasAttribute","classList","contains","focus","setAttribute","toggleClass","button","interval","keyboard","slide","pause","wrap","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHEND","LOAD_DATA_API","ACTIVE","ACTIVE_ITEM","ITEM","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_this2","_keydown","documentElement","clearTimeout","tagName","which","makeArray","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","nextIndicator","children","addClass","directionalClassName","orderClassName","_this3","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","TypeError","_dataApiClickHandler","slideIndex","window","$carousel","SHOW","SHOWN","HIDE","HIDDEN","ACTIVES","DATA_TOGGLE","_isTransitioning","_triggerArray","id","tabToggles","i","elem","filter","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","slice","getBoundingClientRect","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","$target","ARROW_UP_KEYCODE","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","offset","flip","boundary","reference","display","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","referenceElement","_getPopperConfig","body","noop","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","$parentDropdown","placement","offsetConf","offsets","_objectSpread","popperConfig","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","context","dropdownMenu","hideEvent","parentNode","_dataApiKeydownHandler","items","e","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","DIALOG","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","NAVBAR_TOGGLER","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","handleUpdate","Node","ELEMENT_NODE","appendChild","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this4","has","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this8","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","_this9","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","_this10","animation","template","title","delay","html","AUTO","TOP","RIGHT","BOTTOM","LEFT","container","fallbackPlacement","INSERTED","FOCUSOUT","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","$tip","setElementContent","content","empty","append","text","forEach","eventIn","eventOut","_fixTitle","titleType","tabClass","join","initConfigAnimation","_Tooltip","_getContent","method","ACTIVATE","SCROLL","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","map","targetSelector","targetBCR","height","top","item","sort","a","b","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","previous","listElement","itemSelector","nodeName","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","version"],"mappings":"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","sourcesContent":["import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n const TRANSITION_END = 'transitionend'\n const MAX_UID = 1000000\n const MILLISECONDS_MULTIPLIER = 1000\n\n // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n }\n\n function 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\n function 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\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n }\n\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n const 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 if (!selector || selector === '#') {\n selector = element.getAttribute('href') || ''\n }\n\n try {\n const $selector = $(document).find(selector)\n return $selector.length > 0 ? 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 const floatTransitionDuration = parseFloat(transitionDuration)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n\n return parseFloat(transitionDuration) * 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\n setTransitionEndSupport()\n\n return Util\n})($)\n\nexport default Util\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'alert'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.alert'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n }\n\n const Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class 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 = $(selector)[0]\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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n }\n\n return Alert\n})($)\n\nexport default Alert\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'button'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.button'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n }\n\n const Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input',\n ACTIVE : '.active',\n BUTTON : '.btn'\n }\n\n const 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 }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class 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_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = $(this._element).find(Selector.INPUT)[0]\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n $(this._element).hasClass(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = $(rootElement).find(Selector.ACTIVE)[0]\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !$(this._element).hasClass(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !$(this._element).hasClass(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\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 event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\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 /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Button._jQueryInterface\n $.fn[NAME].Constructor = Button\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n }\n\n return Button\n})($)\n\nexport default Button\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\n const ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\n const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n }\n\n const 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 TOUCHEND : `touchend${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const 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 }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\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\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this.touchTimeout = null\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]\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).find(Selector.NEXT_PREV)[0]) {\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).find(Selector.ACTIVE_ITEM)[0]\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 _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 if ('ontouchstart' in document.documentElement) {\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 $(this._element).on(Event.TOUCHEND, () => {\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 }\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 = $.makeArray($(element).parent().find(Selector.ITEM))\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).find(Selector.ACTIVE_ITEM)[0])\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 $(this._indicatorsElement)\n .find(Selector.ACTIVE)\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).find(Selector.ACTIVE_ITEM)[0]\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 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) {\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 $(Selector.DATA_RIDE).each(function () {\n const $carousel = $(this)\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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n }\n\n return Carousel\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n }\n\n const 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\n const ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray($(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n const tabToggles = $(Selector.DATA_TOGGLE)\n for (let i = 0; i < tabToggles.length; i++) {\n const elem = tabToggles[i]\n const selector = Util.getSelectorFromElement(elem)\n if (selector !== null && $(selector).filter(element).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 = $.makeArray(\n $(this._parent)\n .find(Selector.ACTIVES)\n .filter(`[data-parent=\"${this._config.parent}\"]`)\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 > 0) {\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 if (this._triggerArray.length > 0) {\n for (let i = 0; i < this._triggerArray.length; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n if (selector !== null) {\n const $elem = $(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 = null\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 = $(this._config.parent)[0]\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n $(parent).find(selector).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 if (element) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length > 0) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? $(selector)[0] : 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 <a> 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 $(selector).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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n})($)\n\nexport default Collapse\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.dropdown'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\n const TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\n const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\n const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\n const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n const 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\n const 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\n const 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\n const 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\n const Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n }\n\n const DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class 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 parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\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) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap dropdown 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 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 this._menu = $(parent).find(Selector.MENU)[0]\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element).parent()\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 _getPopperConfig() {\n const offsetConf = {}\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets) || {}\n }\n return data\n }\n } else {\n offsetConf.offset = this._config.offset\n }\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\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 return popperConfig\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 = $.makeArray($(Selector.DATA_TOGGLE))\n for (let i = 0; i < toggles.length; 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 (!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 $(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 = $(selector)[0]\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 || event.which !== SPACE_KEYCODE) ||\n isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = $(parent).find(Selector.VISIBLE_ITEMS).get()\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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n }\n\n return Dropdown\n})($, Popper)\n\nexport default Dropdown\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.modal'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n }\n\n const DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DIALOG : '.modal-dialog',\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 NAVBAR_TOGGLER : '.navbar-toggler'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = $(element).find(Selector.DIALOG)[0]\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = 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._isTransitioning || this._isShown) {\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 $(document.body).addClass(ClassName.OPEN)\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._isTransitioning || !this._isShown) {\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 $.removeData(this._element, DATA_KEY)\n\n $(window, document, this._element, this._backdrop).off(EVENT_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._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.scrollTop = 0\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._element)\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 event.preventDefault()\n this.hide()\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._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).addClass(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 if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).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\n // Adjust fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const actualPadding = $(element)[0].style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(Selector.STICKY_CONTENT).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust navbar-toggler margin\n $(Selector.NAVBAR_TOGGLER).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).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).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const padding = $(element).data('padding-right')\n if (typeof padding !== 'undefined') {\n $(element).css('padding-right', padding).removeData('padding-right')\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n $(`${Selector.STICKY_CONTENT}, ${Selector.NAVBAR_TOGGLER}`).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 if (typeof padding !== 'undefined') {\n $(document.body).css('padding-right', padding).removeData('padding-right')\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(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 = $(selector)[0]\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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n\n return Modal\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tooltip'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.tooltip'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const CLASS_PREFIX = 'bs-tooltip'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const 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)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)'\n }\n\n const AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n }\n\n const Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent'\n }\n\n const HoverState = {\n SHOW : 'show',\n OUT : 'out'\n }\n\n const 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 const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n }\n\n const Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap 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')\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 !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).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 isInTheDom = $.contains(\n 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.config.container === false ? document.body : $(this.config.container)\n\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, {\n placement: attachment,\n modifiers: {\n offset: {\n offset: this.config.offset\n },\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) => {\n this._handlePopperPlacementChange(data)\n }\n })\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.find(Selector.TOOLTIP_INNER), this.getTitle())\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n const html = this.config.html\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n } else {\n $element[html ? 'html' : '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 _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 $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => this.hide()\n )\n })\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n if (this.element.getAttribute('title') ||\n titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\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) ||\n context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\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 config = {\n ...this.constructor.Default,\n ...$(this.element).data(),\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 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 > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(data) {\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(data.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n $(tip).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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n }\n\n return Tooltip\n})($, Popper)\n\nexport default Tooltip\n","import $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'popover'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.popover'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const CLASS_PREFIX = 'bs-popover'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n }\n\n const DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n }\n\n const 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\n class 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 && /destroy|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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n }\n\n return Popover\n})($)\n\nexport default Popover\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const 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\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class 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 = $.makeArray($(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = $(targetSelector)[0]\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 for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n let queries = this._selector.split(',')\n // eslint-disable-next-line arrow-body-style\n queries = queries.map((selector) => {\n return `${selector}[data-target=\"${target}\"],` +\n `${selector}[href=\"${target}\"]`\n })\n\n const $link = $(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 <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\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) {\n data = new ScrollSpy(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 $(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n for (let i = scrollSpys.length; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = ScrollSpy._jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n }\n\n return ScrollSpy\n})($)\n\nexport default ScrollSpy\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tab'\n const VERSION = '4.1.1'\n const DATA_KEY = 'bs.tab'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tab {\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 show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = $(selector)[0]\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n let activeElements\n if (container.nodeName === 'UL') {\n activeElements = $(container).find(Selector.ACTIVE_UL)\n } else {\n activeElements = $(container).children(Selector.ACTIVE)\n }\n\n const active = activeElements[0]\n const isTransitioning = callback &&\n (active && $(active).hasClass(ClassName.FADE))\n\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(`${ClassName.SHOW} ${ClassName.ACTIVE}`)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n $(element).addClass(ClassName.SHOW)\n\n if (element.parentNode &&\n $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n if (dropdownElement) {\n $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\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)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tab._jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n }\n\n return Tab\n})($)\n\nexport default Tab\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(($) => {\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\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Tooltip\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"names":["$","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","ClassName","Alert","DATA_API_KEY","Selector","Button","Default","DefaultType","Direction","Carousel","Dimension","Collapse","REGEXP_KEYDOWN","AttachmentMap","Dropdown","Modal","CLASS_PREFIX","BSCLS_PREFIX_REGEX","HoverState","Trigger","Tooltip","Popover","OffsetMethod","ScrollSpy","Tab","Util","TRANSITION_END","transitionEndEmulator","duration","_this","this","called","one","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","parseFloat","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","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","CLOSE","CLOSED","CLICK_DATA_API","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","_createClass","key","get","on","Constructor","noConflict","FOCUS_BLUR_DATA_API","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","hasAttribute","focus","setAttribute","toggleClass","button","interval","keyboard","slide","pause","wrap","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHEND","LOAD_DATA_API","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","direction","off","_this2","_keydown","documentElement","clearTimeout","tagName","which","parentNode","slice","querySelectorAll","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","directionalClassName","orderClassName","_this3","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","TypeError","_dataApiClickHandler","slideIndex","window","carousels","i","len","$carousel","SHOW","SHOWN","HIDE","HIDDEN","_isTransitioning","_triggerArray","makeArray","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","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","ARROW_UP_KEYCODE","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","offset","flip","boundary","reference","display","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","referenceElement","_getPopperConfig","body","noop","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","$parentDropdown","placement","offsetConf","offsets","_objectSpread","popperConfig","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","context","clickEvent","dropdownMenu","hideEvent","_dataApiKeydownHandler","items","e","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","handleUpdate","Node","ELEMENT_NODE","appendChild","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this4","has","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this8","animate","createElement","className","add","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","_this9","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","_this10","animation","template","title","delay","html","AUTO","TOP","RIGHT","BOTTOM","LEFT","container","fallbackPlacement","INSERTED","FOCUSOUT","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","find","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","empty","append","text","forEach","eventIn","eventOut","_fixTitle","titleType","$tip","tabClass","join","popperData","popperInstance","instance","popper","initConfigAnimation","_Tooltip","_getContent","method","ACTIVATE","SCROLL","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","map","targetSelector","targetBCR","height","top","item","sort","a","b","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","nodes","scrollSpys","$spy","previous","listElement","itemSelector","nodeName","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","version"],"mappings":"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","sourcesContent":["import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n const TRANSITION_END = 'transitionend'\n const MAX_UID = 1000000\n const MILLISECONDS_MULTIPLIER = 1000\n\n // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n }\n\n function 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\n function 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\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n }\n\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n const 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 if (!selector || selector === '#') {\n selector = element.getAttribute('href') || ''\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 const floatTransitionDuration = parseFloat(transitionDuration)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n\n return parseFloat(transitionDuration) * 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\n setTransitionEndSupport()\n\n return Util\n})($)\n\nexport default Util\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'alert'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.alert'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n }\n\n const Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class 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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n }\n\n return Alert\n})($)\n\nexport default Alert\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'button'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.button'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n }\n\n const Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input',\n ACTIVE : '.active',\n BUTTON : '.btn'\n }\n\n const 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 }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class 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_TOGGLE\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 }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n 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 (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 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 event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\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 /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Button._jQueryInterface\n $.fn[NAME].Constructor = Button\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n }\n\n return Button\n})($)\n\nexport default Button\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\n const ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\n const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n }\n\n const 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 TOUCHEND : `touchend${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const 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 }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\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\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this.touchTimeout = null\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\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 _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 if ('ontouchstart' in document.documentElement) {\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 $(this._element).on(Event.TOUCHEND, () => {\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 }\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 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) {\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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n }\n\n return Carousel\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n }\n\n const 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\n const ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\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) => elem.getAttribute('data-parent') === this._config.parent)\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 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 = null\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 if (element) {\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\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 <a> 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 $(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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n})($)\n\nexport default Collapse\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.dropdown'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\n const TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\n const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\n const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\n const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n const 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\n const 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\n const 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\n const 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\n const Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n }\n\n const DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class 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 parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\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) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap dropdown 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 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 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 _getPopperConfig() {\n const offsetConf = {}\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets) || {}\n }\n return data\n }\n } else {\n offsetConf.offset = this._config.offset\n }\n\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\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 return popperConfig\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 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 $(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 || event.which !== SPACE_KEYCODE) ||\n 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\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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n }\n\n return Dropdown\n})($, Popper)\n\nexport default Dropdown\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.modal'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n }\n\n const DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DIALOG : '.modal-dialog',\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\n class 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._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._isTransitioning || this._isShown) {\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 $(document.body).addClass(ClassName.OPEN)\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._isTransitioning || !this._isShown) {\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 $.removeData(this._element, DATA_KEY)\n\n $(window, document, this._element, this._backdrop).off(EVENT_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._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.scrollTop = 0\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._element)\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 event.preventDefault()\n this.hide()\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._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 if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).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\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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n\n return Modal\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tooltip'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.tooltip'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const CLASS_PREFIX = 'bs-tooltip'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const 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)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)'\n }\n\n const AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n }\n\n const Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent'\n }\n\n const HoverState = {\n SHOW : 'show',\n OUT : 'out'\n }\n\n const 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 const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n }\n\n const Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap 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')\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 !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).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 isInTheDom = $.contains(\n 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.config.container === false ? document.body : $(document).find(this.config.container)\n\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, {\n placement: attachment,\n modifiers: {\n offset: {\n offset: this.config.offset\n },\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) => {\n this._handlePopperPlacementChange(data)\n }\n })\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 const html = this.config.html\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n } else {\n $element[html ? 'html' : '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 _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 $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => this.hide()\n )\n })\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n if (this.element.getAttribute('title') ||\n titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\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) ||\n context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\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 config = {\n ...this.constructor.Default,\n ...$(this.element).data(),\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 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 if (tip.getAttribute('x-placement') !== null) {\n return\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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n }\n\n return Tooltip\n})($, Popper)\n\nexport default Tooltip\n","import $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'popover'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.popover'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const CLASS_PREFIX = 'bs-popover'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n }\n\n const DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n }\n\n const 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\n class 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 && /destroy|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 = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n }\n\n return Popover\n})($)\n\nexport default Popover\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const 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\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class 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 let queries = this._selector.split(',')\n // eslint-disable-next-line arrow-body-style\n queries = queries.map((selector) => {\n return `${selector}[data-target=\"${target}\"],` +\n `${selector}[href=\"${target}\"]`\n })\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 <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n const nodes = [].slice.call(document.querySelectorAll(this._selector))\n $(nodes).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\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) {\n data = new ScrollSpy(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 $(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY))\n\n const scrollSpysLength = scrollSpys.length\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = ScrollSpy._jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n }\n\n return ScrollSpy\n})($)\n\nexport default ScrollSpy\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tab'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.tab'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tab {\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 show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n let activeElements\n if (container.nodeName === 'UL') {\n activeElements = $(container).find(Selector.ACTIVE_UL)\n } else {\n activeElements = $(container).children(Selector.ACTIVE)\n }\n\n const active = activeElements[0]\n const isTransitioning = callback &&\n (active && $(active).hasClass(ClassName.FADE))\n\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(`${ClassName.SHOW} ${ClassName.ACTIVE}`)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n $(element).addClass(ClassName.SHOW)\n\n if (element.parentNode &&\n $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE))\n $(dropdownToggleList).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\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)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tab._jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n }\n\n return Tab\n})($)\n\nexport default Tab\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(($) => {\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\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Tooltip\n}\n"]}
\ No newline at end of file
-{"version":3,"file":"popper.min.js","sources":["../src/utils/isBrowser.js","../src/utils/debounce.js","../src/utils/isFunction.js","../src/utils/getStyleComputedProperty.js","../src/utils/getParentNode.js","../src/utils/getScrollParent.js","../src/utils/isIE.js","../src/utils/getOffsetParent.js","../src/utils/isOffsetContainer.js","../src/utils/getRoot.js","../src/utils/findCommonOffsetParent.js","../src/utils/getScroll.js","../src/utils/includeScroll.js","../src/utils/getBordersSize.js","../src/utils/getWindowSizes.js","../src/utils/getClientRect.js","../src/utils/getBoundingClientRect.js","../src/utils/getOffsetRectRelativeToArbitraryNode.js","../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../src/utils/isFixed.js","../src/utils/getFixedPositionOffsetParent.js","../src/utils/getBoundaries.js","../src/utils/computeAutoPlacement.js","../src/utils/getReferenceOffsets.js","../src/utils/getOuterSizes.js","../src/utils/getOppositePlacement.js","../src/utils/getPopperOffsets.js","../src/utils/find.js","../src/utils/findIndex.js","../src/utils/runModifiers.js","../src/methods/update.js","../src/utils/isModifierEnabled.js","../src/utils/getSupportedPropertyName.js","../src/methods/destroy.js","../src/utils/getWindow.js","../src/utils/setupEventListeners.js","../src/methods/enableEventListeners.js","../src/utils/removeEventListeners.js","../src/methods/disableEventListeners.js","../src/utils/isNumeric.js","../src/utils/setStyles.js","../src/utils/setAttributes.js","../src/modifiers/applyStyle.js","../src/modifiers/computeStyle.js","../src/utils/isModifierRequired.js","../src/modifiers/arrow.js","../src/utils/getOppositeVariation.js","../src/methods/placements.js","../src/utils/clockwise.js","../src/modifiers/flip.js","../src/modifiers/keepTogether.js","../src/modifiers/offset.js","../src/modifiers/preventOverflow.js","../src/modifiers/shift.js","../src/modifiers/hide.js","../src/modifiers/inner.js","../src/modifiers/index.js","../src/methods/defaults.js","../src/index.js"],"sourcesContent":["export default typeof window !== 'undefined' && typeof document !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\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*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\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 */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n 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 */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\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 */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\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 */\nexport default function 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 const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst 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 */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\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 */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent;\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 const 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 TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n 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 */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\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 */\nexport default function 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 const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\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 const 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 * 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 */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\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 */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const 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 * 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\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const 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","/**\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 */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\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 */\nexport default function getBoundingClientRect(element) {\n let 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 const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const 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 const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let 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 const 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","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const 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 && parent.nodeName === 'HTML') {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let 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 const marginTop = parseFloat(styles.marginTop, 10);\n const 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 (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\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 */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\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\nexport default function 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 let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\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 */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\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 const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\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 boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\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 */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const 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 const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\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 */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\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 */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\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 */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\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 */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const 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 const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\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 */\nexport default function 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","import find from './find';\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 */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\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 */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const 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","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let 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(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\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(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\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(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : '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 * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\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 */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function 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 explicity 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 * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\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 */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\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 const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\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 */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function 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(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","import removeEventListeners from '../utils/removeEventListeners';\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 */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\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 */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\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 */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\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 */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\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 */\nexport default function 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 */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const 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 const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\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","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\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 */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // Avoid blurry text by using full pixel integers.\n // For pixel-perfect positioning, top/bottom prefers rounded\n // values, while left/right prefers floored values.\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.round(popper.top),\n bottom: Math.round(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const 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 const 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 let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\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 const invertTop = sideA === 'bottom' ? -1 : 1;\n const 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 const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\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 */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\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 */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let 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(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const 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 const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n 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 = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\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 */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\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.<br />\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-right` (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 */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst 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 */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst 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 */\nexport default function 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 const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let 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((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 const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\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 = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\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 */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n 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","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\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 */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const 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 let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const 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 let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\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 */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const 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 const 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 const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\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 const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\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 const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((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(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((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 */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\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","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\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 */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n 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 const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\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 const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\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 */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\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 */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\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","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\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 */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\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.<br />\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 */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\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 unitless, 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.<br />\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.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\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 * > More on this [reading 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 * An scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\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 has always 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 eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point 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 conjuction 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\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 you 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 informations used by Popper.js\n * this object get 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","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overriden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, 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 */\nexport default {\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.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n 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.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n 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,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as 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 constructor(reference, popper, options = {}) {\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 = { ...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({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\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(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const 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 update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\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 static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\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.<br />\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"],"names":["window","document","timeoutDuration","i","longerTimeoutBrowsers","length","isBrowser","navigator","userAgent","indexOf","called","Promise","resolve","then","scheduled","supportsMicroTasks","functionToCheck","getType","toString","call","element","nodeType","css","getComputedStyle","property","nodeName","parentNode","host","body","ownerDocument","overflow","overflowX","overflowY","getStyleComputedProperty","test","getScrollParent","getParentNode","isIE11","MSInputMethodContext","documentMode","isIE10","version","documentElement","noOffsetParent","isIE","offsetParent","nextElementSibling","getOffsetParent","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","parseFloat","styles","Math","max","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","fixedPosition","runIsIE","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","excludeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","innerWidth","innerHeight","offset","isFixed","parentElement","el","boundaries","getFixedPositionOffsetParent","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","key","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","variation","split","commonOffsetParent","x","marginBottom","y","marginRight","hash","replace","matched","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","Array","prototype","find","arr","findIndex","cur","match","obj","modifiersToRun","ends","modifiers","slice","forEach","warn","fn","enabled","isFunction","data","reference","state","isDestroyed","getReferenceOffsets","options","positionFixed","computeAutoPlacement","flip","originalPlacement","getPopperOffsets","position","runModifiers","isCreated","onUpdate","onCreate","some","name","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","isModifierEnabled","removeAttribute","willChange","getSupportedPropertyName","disableEventListeners","removeOnDestroy","removeChild","defaultView","isBody","target","addEventListener","passive","push","updateBound","scrollElement","scrollParents","eventsEnabled","setupEventListeners","scheduleUpdate","removeEventListener","removeEventListeners","n","isNaN","isFinite","prop","unit","isNumeric","value","attributes","setAttribute","instance","arrowElement","arrowStyles","round","floor","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","invertTop","invertLeft","arrow","requesting","isRequired","requested","isModifierRequired","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","min","validPlacements","placements","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","clockwise","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","str","size","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","mergeWithPrevious","op","reduce","toValue","index2","basePlacement","parseOffset","transformProp","popperStyles","priority","check","escapeWithReference","shiftvariation","shiftOffsets","bound","hide","subtractLength","requestAnimationFrame","update","debounce","bind","Popper","Defaults","jquery","modifierOptions","onLoad","enableEventListeners","destroy","Utils","global","PopperUtils"],"mappings":";;;GAAA,MAAiC,WAAlB,QAAOA,OAAP,EAAqD,WAApB,QAAOC,SAAvD,sCCGA,GAAIC,GAAkB,CAAtB,CACA,IAAK,GAAIC,GAAI,CAAb,CAAgBA,EAAIC,EAAsBC,MAA1C,CAAkDF,GAAK,CAAvD,IACMG,GAAsE,CAAzDC,YAAUC,SAAVD,CAAoBE,OAApBF,CAA4BH,IAA5BG,EAA4D,GACzD,CADyD,OAM/E,aAAsC,IAChCG,YACG,IAAM,SAAA,QAKJC,QAAQC,UAAUC,KAAK,IAAM,KAAA,IAApC,EALW,CAAb,EAYF,aAAiC,IAC3BC,YACG,IAAM,SAAA,YAGE,IAAM,KAAA,IAAjB,IAHS,CAAb,EAWF,KAAMC,GAAqBT,GAAaN,OAAOW,OAA/C,CAYA,MAAgBI,KAAhB,CC3CA,aAAoD,OAGhDC,IAC2C,mBAA3CC,MAAQC,QAARD,CAAiBE,IAAjBF,ICJJ,eAAoE,IACzC,CAArBG,KAAQC,uBAINC,GAAMC,mBAA0B,IAA1BA,QACLC,GAAWF,IAAXE,GCNT,aAA+C,OACpB,MAArBJ,KAAQK,QADiC,GAItCL,EAAQM,UAARN,EAAsBA,EAAQO,KCDvC,aAAiD,IAE3C,SACK1B,UAAS2B,YAGVR,EAAQK,cACT,WACA,aACIL,GAAQS,aAART,CAAsBQ,SAC1B,kBACIR,GAAQQ,WAIb,CAAEE,UAAF,CAAYC,WAAZ,CAAuBC,WAAvB,EAAqCC,KAfI,MAgB3C,yBAAwBC,IAAxB,CAA6BJ,KAA7B,CAhB2C,GAoBxCK,EAAgBC,IAAhBD,OC5BHE,GAAS/B,GAAa,CAAC,EAAEN,OAAOsC,oBAAPtC,EAA+BC,SAASsC,YAA1C,EACvBC,EAASlC,GAAa,UAAU4B,IAAV,CAAe3B,UAAUC,SAAzB,EAS5B,aAAsC,OACpB,GAAZiC,IADgC,GAIpB,EAAZA,IAJgC,GAO7BJ,KCVT,aAAiD,IAC3C,SACKpC,UAASyC,qBAGZC,GAAiBC,EAAK,EAALA,EAAW3C,SAAS2B,IAApBgB,CAA2B,QAG9CC,GAAezB,EAAQyB,aARoB,KAUxCA,OAAmCzB,EAAQ0B,kBAVH,IAW9B,CAAC1B,EAAUA,EAAQ0B,kBAAnB,EAAuCD,kBAGlDpB,GAAWoB,GAAgBA,EAAapB,SAdC,MAgB3C,IAA0B,MAAbA,IAAb,EAAiD,MAAbA,IAhBO,CAuBM,CAAC,CAApD,kBAAgBhB,OAAhB,CAAwBoC,EAAapB,QAArC,GACuD,QAAvDQ,OAAuC,UAAvCA,CAxB6C,CA0BtCc,IA1BsC,GAiBtC3B,EAAUA,EAAQS,aAART,CAAsBsB,eAAhCtB,CAAkDnB,SAASyC,6BCxBnB,MAC3C,CAAEjB,UAAF,IAD2C,MAEhC,MAAbA,IAF6C,GAMlC,MAAbA,MAAuBsB,EAAgB3B,EAAQ4B,iBAAxBD,KANwB,ECKnD,aAAsC,OACZ,KAApBE,KAAKvB,UAD2B,GAE3BwB,EAAQD,EAAKvB,UAAbwB,ECGX,eAAmE,IAE7D,IAAa,CAACC,EAAS9B,QAAvB,EAAmC,EAAnC,EAAgD,CAAC+B,EAAS/B,eACrDpB,UAASyC,qBAIZW,GACJF,EAASG,uBAATH,IACAI,KAAKC,4BACDC,EAAQJ,MACRK,EAAML,MAGNM,EAAQ1D,SAAS2D,WAAT3D,KACR4D,WAAgB,EAf2C,GAgB3DC,SAAY,EAhB+C,MAiB3D,CAAEC,yBAAF,OAIHZ,OACCC,KADDD,EAEDM,EAAMO,QAANP,UAEIQ,QAIGlB,UAIHmB,GAAehB,KAjC4C,MAkC7DgB,GAAavC,IAlCgD,CAmCxDwC,EAAuBD,EAAavC,IAApCwC,GAnCwD,CAqCxDA,IAAiCjB,KAAkBvB,IAAnDwC,ECzCX,aAA2CC,EAAO,KAAlD,CAAyD,MACjDC,GAAqB,KAATD,KAAiB,WAAjBA,CAA+B,aAC3C3C,EAAWL,EAAQK,YAER,MAAbA,MAAoC,MAAbA,KAAqB,MACxC6C,GAAOlD,EAAQS,aAART,CAAsBsB,gBAC7B6B,EAAmBnD,EAAQS,aAART,CAAsBmD,gBAAtBnD,UAClBmD,YAGFnD,MCPT,eAAqDoD,IAArD,CAAuE,MAC/DC,GAAYC,IAAmB,KAAnBA,EACZC,EAAaD,IAAmB,MAAnBA,EACbE,EAAWJ,EAAW,CAAC,CAAZA,CAAgB,WAC5BK,KAAOJ,MACPK,QAAUL,MACVM,MAAQJ,MACRK,OAASL,MCRhB,eAAqD,MAC7CM,GAAiB,GAATC,KAAe,MAAfA,CAAwB,MAChCC,EAAkB,MAAVF,IAAmB,OAAnBA,CAA6B,eAGzCG,YAAWC,WAAQ,QAARA,CAAXD,CAA0C,EAA1CA,EACAA,WAAWC,WAAQ,QAARA,CAAXD,CAA0C,EAA1CA,qBCd8C,OACzCE,MAAKC,GAALD,CACL1D,WAAM,GAANA,CADK0D,CAEL1D,WAAM,GAANA,CAFK0D,CAGLhB,WAAM,GAANA,CAHKgB,CAILhB,WAAM,GAANA,CAJKgB,CAKLhB,WAAM,GAANA,CALKgB,CAML1C,EAAK,EAALA,EACI0B,WAAM,GAANA,EACAkB,WAAgC,QAATN,KAAoB,KAApBA,CAA4B,QAAnDM,CADAlB,CAEAkB,WAAgC,QAATN,KAAoB,QAApBA,CAA+B,SAAtDM,CAHJ5C,CAII,CAVC0C,EAcT,YAAyC,MACjC1D,GAAO3B,SAAS2B,KAChB0C,EAAOrE,SAASyC,gBAChB8C,EAAgB5C,EAAK,EAALA,GAAYrB,0BAE3B,QACGkE,EAAQ,QAARA,OADH,OAEEA,EAAQ,OAARA,OAFF,uKCfT,aAA+C,sBAGpCC,EAAQX,IAARW,CAAeA,EAAQC,aACtBD,EAAQb,GAARa,CAAcA,EAAQE,SCGlC,aAAuD,IACjDC,SAKA,IACEjD,EAAK,EAALA,EAAU,GACLxB,EAAQ0E,qBAAR1E,EADK,MAENqD,GAAYC,IAAmB,KAAnBA,EACZC,EAAaD,IAAmB,MAAnBA,IACdG,MAJO,GAKPE,OALO,GAMPD,SANO,GAOPE,QAPP,QAUS5D,EAAQ0E,qBAAR1E,EAXX,CAcA,QAAQ,OAEF2E,GAAS,MACPF,EAAKd,IADE,KAERc,EAAKhB,GAFG,OAGNgB,EAAKb,KAALa,CAAaA,EAAKd,IAHZ,QAILc,EAAKf,MAALe,CAAcA,EAAKhB,GAJd,EAQTmB,EAA6B,MAArB5E,KAAQK,QAARL,CAA8B6E,GAA9B7E,IACRuE,EACJK,EAAML,KAANK,EAAe5E,EAAQ8E,WAAvBF,EAAsCD,EAAOf,KAAPe,CAAeA,EAAOhB,KACxDa,EACJI,EAAMJ,MAANI,EAAgB5E,EAAQ+E,YAAxBH,EAAwCD,EAAOjB,MAAPiB,CAAgBA,EAAOlB,OAE7DuB,GAAiBhF,EAAQiF,WAARjF,GACjBkF,EAAgBlF,EAAQmF,YAARnF,MAIhBgF,KAAiC,MAC7Bf,GAASpD,QACGuE,IAAuB,GAAvBA,CAFiB,IAGlBA,IAAuB,GAAvBA,CAHkB,GAK5Bb,QAL4B,GAM5BC,gBAGFa,qBCzDsEC,KAAuB,OAajFpB,KAAKC,GAb4E,MAC9F/C,GAASmE,EAAQ,EAARA,EACTC,EAA6B,MAApBC,KAAOpF,SAChBqF,EAAehB,KACfiB,EAAajB,KACbkB,EAAe7E,KAEfkD,EAASpD,KACTgF,EAAiB7B,WAAWC,EAAO4B,cAAlB7B,CAAkC,EAAlCA,EACjB8B,EAAkB9B,WAAWC,EAAO6B,eAAlB9B,CAAmC,EAAnCA,EAGrBsB,GAAqC,MAApBG,KAAOpF,QAZyE,KAavFoD,IAAMS,EAASyB,EAAWlC,GAApBS,CAAyB,CAAzBA,CAbiF,GAcvFP,KAAOO,EAASyB,EAAWhC,IAApBO,CAA0B,CAA1BA,CAdgF,KAgBhGI,GAAUe,EAAc,KACrBK,EAAajC,GAAbiC,CAAmBC,EAAWlC,GAA9BiC,EADqB,MAEpBA,EAAa/B,IAAb+B,CAAoBC,EAAWhC,IAA/B+B,EAFoB,OAGnBA,EAAanB,KAHM,QAIlBmB,EAAalB,MAJK,CAAda,OAMNU,UAAY,IACZC,WAAa,EAMjB,MAAmB,MACfD,GAAY/B,WAAWC,EAAO8B,SAAlB/B,CAA6B,EAA7BA,EACZgC,EAAahC,WAAWC,EAAO+B,UAAlBhC,CAA8B,EAA9BA,IAEXP,KAAOoC,GAJM,GAKbnC,QAAUmC,GALG,GAMblC,MAAQmC,GANK,GAOblC,OAASkC,GAPI,GAUbC,WAVa,GAWbC,oBAIR5E,GAAU,EAAVA,CACIqE,EAAO7C,QAAP6C,GADJrE,CAEIqE,OAAqD,MAA1BG,KAAavF,cAElC4F,uBCnDiEC,KAAuB,OAGtFhC,KAAKC,GAHiF,MAC9FjB,GAAOlD,EAAQS,aAART,CAAsBsB,gBAC7B6E,EAAiBC,OACjB7B,EAAQL,EAAShB,EAAK4B,WAAdZ,CAA2BtF,OAAOyH,UAAPzH,EAAqB,CAAhDsF,EACRM,EAASN,EAAShB,EAAK6B,YAAdb,CAA4BtF,OAAO0H,WAAP1H,EAAsB,CAAlDsF,EAETb,EAAY,EAAmC,CAAnC,CAAiBC,KAC7BC,EAAa,EAA2C,CAA3C,CAAiBD,IAAgB,MAAhBA,EAE9BiD,EAAS,KACRlD,EAAY8C,EAAe1C,GAA3BJ,CAAiC8C,EAAeJ,SADxC,MAEPxC,EAAa4C,EAAexC,IAA5BJ,CAAmC4C,EAAeH,UAF3C,QAAA,SAAA,QAORX,MCTT,aAAyC,MACjChF,GAAWL,EAAQK,SADc,MAEtB,MAAbA,MAAoC,MAAbA,IAFY,MAKe,OAAlDQ,OAAkC,UAAlCA,CALmC,GAQhC2F,EAAQxF,IAARwF,ECTT,aAA8D,IAEvD,IAAY,CAACxG,EAAQyG,aAArB,EAAsCjF,UAClC3C,UAASyC,mBAEdoF,GAAK1G,EAAQyG,cAL2C,KAMrDC,GAAoD,MAA9C7F,OAA6B,WAA7BA,CAN+C,IAOrD6F,EAAGD,oBAEHC,IAAM7H,SAASyC,gBCCxB,mBAKEgE,IALF,CAME,IAGIqB,GAAa,CAAElD,IAAK,CAAP,CAAUE,KAAM,CAAhB,OACXlC,GAAe6D,EAAgBsB,IAAhBtB,CAAuDvC,UAGlD,UAAtB8D,OACWC,WAGV,IAECC,GACsB,cAAtBF,IAHD,IAIgB9F,EAAgBC,IAAhBD,CAJhB,CAK+B,MAA5BgG,KAAe1G,QALlB,KAMkB2G,EAAOvG,aAAPuG,CAAqB1F,eANvC,GAQ8B,QAAtBuF,IARR,GASgBG,EAAOvG,aAAPuG,CAAqB1F,eATrC,IAAA,MAcGgD,GAAU8B,YAOgB,MAA5BW,KAAe1G,QAAf0G,EAAsC,CAACP,KAAuB,MAC1D,CAAEhC,QAAF,CAAUD,OAAV,EAAoBM,MACfpB,KAAOa,EAAQb,GAARa,CAAcA,EAAQyB,SAFwB,GAGrDrC,OAASc,EAASF,EAAQb,GAH2B,GAIrDE,MAAQW,EAAQX,IAARW,CAAeA,EAAQ0B,UAJsB,GAKrDpC,MAAQW,EAAQD,EAAQX,IALrC,mBAaSA,UACAF,SACAG,WACAF,uBCxEI,CAAEa,OAAF,CAASC,QAAT,EAAmB,OAC3BD,KAYT,qBAME0C,EAAU,CANZ,CAOE,IACkC,CAAC,CAA/BC,KAAU7H,OAAV6H,CAAkB,MAAlBA,gBAIEP,GAAaQ,WAObC,EAAQ,KACP,OACIT,EAAWpC,KADf,QAEK8C,EAAQ5D,GAAR4D,CAAcV,EAAWlD,GAF9B,CADO,OAKL,OACEkD,EAAW/C,KAAX+C,CAAmBU,EAAQzD,KAD7B,QAEG+C,EAAWnC,MAFd,CALK,QASJ,OACCmC,EAAWpC,KADZ,QAEEoC,EAAWjD,MAAXiD,CAAoBU,EAAQ3D,MAF9B,CATI,MAaN,OACG2D,EAAQ1D,IAAR0D,CAAeV,EAAWhD,IAD7B,QAEIgD,EAAWnC,MAFf,CAbM,EAmBR8C,EAAcC,OAAOC,IAAPD,IACjBE,GADiBF,CACbG,eAEAN,WACGO,EAAQP,IAARO,GAJUJ,EAMjBK,IANiBL,CAMZ,OAAUM,EAAEC,IAAFD,CAASE,EAAED,IANTP,EAQdS,EAAgBV,EAAYW,MAAZX,CACpB,CAAC,CAAE/C,OAAF,CAASC,QAAT,CAAD,GACED,GAASyC,EAAOlC,WAAhBP,EAA+BC,GAAUwC,EAAOjC,YAF9BuC,EAKhBY,EAA2C,CAAvBF,GAAc/I,MAAd+I,CACtBA,EAAc,CAAdA,EAAiBN,GADKM,CAEtBV,EAAY,CAAZA,EAAeI,IAEbS,EAAYjB,EAAUkB,KAAVlB,CAAgB,GAAhBA,EAAqB,CAArBA,QAEXgB,IAAqBC,MAAa,GAAbA,CAA8B,EAAnDD,EC1DT,iBAAsE5C,EAAgB,IAAtF,CAA4F,MACpF+C,GAAqB/C,EAAgBsB,IAAhBtB,CAAuDvC,aAC3EqD,UCTT,aAA+C,MACvCnC,GAAS9D,oBACTmI,EAAItE,WAAWC,EAAO8B,SAAlB/B,EAA+BA,WAAWC,EAAOsE,YAAlBvE,EACnCwE,EAAIxE,WAAWC,EAAO+B,UAAlBhC,EAAgCA,WAAWC,EAAOwE,WAAlBzE,EACpCW,EAAS,OACN3E,EAAQiF,WAARjF,EADM,QAELA,EAAQmF,YAARnF,EAFK,WCJjB,aAAwD,MAChD0I,GAAO,CAAE/E,KAAM,OAAR,CAAiBC,MAAO,MAAxB,CAAgCF,OAAQ,KAAxC,CAA+CD,IAAK,QAApD,QACNyD,GAAUyB,OAAVzB,CAAkB,wBAAlBA,CAA4C0B,KAAWF,IAAvDxB,ECIT,iBAA8E,GAChEA,EAAUkB,KAAVlB,CAAgB,GAAhBA,EAAqB,CAArBA,CADgE,MAItE2B,GAAaC,KAGbC,EAAgB,OACbF,EAAWtE,KADE,QAEZsE,EAAWrE,MAFC,EAMhBwE,EAAmD,CAAC,CAA1C,oBAAkB3J,OAAlB,IACV4J,EAAWD,EAAU,KAAVA,CAAkB,OAC7BE,EAAgBF,EAAU,MAAVA,CAAmB,MACnCG,EAAcH,EAAU,QAAVA,CAAqB,QACnCI,EAAuB,EAAsB,OAAtB,CAAW,qBAGtCC,KACAA,KAAgC,CADhCA,CAEAR,KAA0B,OACxB3B,MAEAmC,KAAkCR,KAGlCQ,EAAiBC,IAAjBD,IChCN,eAAyC,OAEnCE,OAAMC,SAAND,CAAgBE,IAFmB,CAG9BC,EAAID,IAAJC,GAH8B,CAOhCA,EAAIzB,MAAJyB,IAAkB,CAAlBA,ECLT,iBAAoD,IAE9CH,MAAMC,SAAND,CAAgBI,gBACXD,GAAIC,SAAJD,CAAcE,KAAOA,QAArBF,OAIHG,GAAQJ,IAAUK,KAAOA,QAAjBL,QACPC,GAAIrK,OAAJqK,ICLT,iBAA4D,MACpDK,GAAiBC,aAEnBC,EAAUC,KAAVD,CAAgB,CAAhBA,CAAmBN,IAAqB,MAArBA,GAAnBM,WAEWE,QAAQ3G,KAAY,CAC7BA,EAAS,UAATA,CAD6B,UAEvB4G,KAAK,wDAFkB,MAI3BC,GAAK7G,EAAS,UAATA,GAAwBA,EAAS6G,GACxC7G,EAAS8G,OAAT9G,EAAoB+G,IALS,KAS1BjG,QAAQ0C,OAAS3B,EAAcmF,EAAKlG,OAALkG,CAAaxD,MAA3B3B,CATS,GAU1Bf,QAAQmG,UAAYpF,EAAcmF,EAAKlG,OAALkG,CAAaC,SAA3BpF,CAVM,GAYxBgF,MAZwB,CAAnC,KCPF,YAAiC,IAE3B,KAAKK,KAAL,CAAWC,sBAIXH,GAAO,UACC,IADD,UAAA,eAAA,cAAA,WAAA,WAAA,IAUNlG,QAAQmG,UAAYG,EACvB,KAAKF,KADkBE,CAEvB,KAAK5D,MAFkB4D,CAGvB,KAAKH,SAHkBG,CAIvB,KAAKC,OAAL,CAAaC,aAJUF,CAhBM,GA0B1B1D,UAAY6D,EACf,KAAKF,OAAL,CAAa3D,SADE6D,CAEfP,EAAKlG,OAALkG,CAAaC,SAFEM,CAGf,KAAK/D,MAHU+D,CAIf,KAAKN,SAJUM,CAKf,KAAKF,OAAL,CAAaZ,SAAb,CAAuBe,IAAvB,CAA4BnE,iBALbkE,CAMf,KAAKF,OAAL,CAAaZ,SAAb,CAAuBe,IAAvB,CAA4B/D,OANb8D,CA1Bc,GAoC1BE,kBAAoBT,EAAKtD,SApCC,GAsC1B4D,cAAgB,KAAKD,OAAL,CAAaC,aAtCH,GAyC1BxG,QAAQ0C,OAASkE,EACpB,KAAKlE,MADekE,CAEpBV,EAAKlG,OAALkG,CAAaC,SAFOS,CAGpBV,EAAKtD,SAHegE,CAzCS,GA+C1B5G,QAAQ0C,OAAOmE,SAAW,KAAKN,OAAL,CAAaC,aAAb,CAC3B,OAD2B,CAE3B,UAjD2B,GAoDxBM,EAAa,KAAKnB,SAAlBmB,GApDwB,CAwD1B,KAAKV,KAAL,CAAWW,SAxDe,MA4DxBR,QAAQS,WA5DgB,OAyDxBZ,MAAMW,YAzDkB,MA0DxBR,QAAQU,WA1DgB,ECNjC,eAAmE,OAC1DtB,GAAUuB,IAAVvB,CACL,CAAC,CAAEwB,MAAF,CAAQnB,SAAR,CAAD,GAAuBA,GAAWmB,KAD7BxB,ECAT,aAA2D,MACnDyB,gCACAC,EAAYvL,EAASwL,MAATxL,CAAgB,CAAhBA,EAAmByL,WAAnBzL,GAAmCA,EAAS8J,KAAT9J,CAAe,CAAfA,MAEhD,GAAIrB,GAAI,EAAGA,EAAI2M,EAASzM,OAAQF,IAAK,MAClC+M,GAASJ,KACTK,EAAUD,KAAU,IAAA,GAAVA,MAC4B,WAAxC,QAAOjN,UAAS2B,IAAT3B,CAAcmN,KAAdnN,mBAIN,MCVT,YAAkC,aAC3B6L,MAAMC,eAGPsB,EAAkB,KAAKhC,SAAvBgC,CAAkC,YAAlCA,SACGjF,OAAOkF,gBAAgB,oBACvBlF,OAAOgF,MAAMb,SAAW,QACxBnE,OAAOgF,MAAMvI,IAAM,QACnBuD,OAAOgF,MAAMrI,KAAO,QACpBqD,OAAOgF,MAAMpI,MAAQ,QACrBoD,OAAOgF,MAAMtI,OAAS,QACtBsD,OAAOgF,MAAMG,WAAa,QAC1BnF,OAAOgF,MAAMI,EAAyB,WAAzBA,GAAyC,SAGxDC,wBAID,KAAKxB,OAAL,CAAayB,sBACVtF,OAAO1G,WAAWiM,YAAY,KAAKvF,QAEnC,KCzBT,aAA2C,MACnCvG,GAAgBT,EAAQS,oBACvBA,GAAgBA,EAAc+L,WAA9B/L,CAA4C7B,0BCJwB,MACrE6N,GAAmC,MAA1B7G,KAAavF,SACtBqM,EAASD,EAAS7G,EAAanF,aAAbmF,CAA2B4G,WAApCC,KACRE,qBAAkC,CAAEC,UAAF,EAHkC,MAOvE7L,EAAgB2L,EAAOpM,UAAvBS,QAPuE,GAa7D8L,QAShB,mBAKE,GAEMC,aAFN,MAGqBH,iBAAiB,SAAUjC,EAAMoC,YAAa,CAAEF,UAAF,EAHnE,MAMMG,GAAgBhM,gBAGpB,SACA2J,EAAMoC,YACNpC,EAAMsC,iBAEFD,kBACAE,mBCpCR,YAA+C,CACxC,KAAKvC,KAAL,CAAWuC,aAD6B,QAEtCvC,MAAQwC,EACX,KAAKzC,SADMyC,CAEX,KAAKrC,OAFMqC,CAGX,KAAKxC,KAHMwC,CAIX,KAAKC,cAJMD,CAF8B,ECA/C,eAA+D,aAExCE,oBAAoB,SAAU1C,EAAMoC,eAGnDE,cAAc7C,QAAQuC,KAAU,GAC7BU,oBAAoB,SAAU1C,EAAMoC,YAD7C,KAKMA,YAAc,OACdE,mBACAD,cAAgB,OAChBE,mBCZR,YAAgD,CAC1C,KAAKvC,KAAL,CAAWuC,aAD+B,wBAEvB,KAAKE,eAFkB,MAGvCzC,MAAQ2C,EAAqB,KAAK5C,SAA1B4C,CAAqC,KAAK3C,KAA1C2C,CAH+B,ECFhD,aAAqC,OACtB,EAANC,MAAY,CAACC,MAAMvJ,aAANuJ,CAAbD,EAAqCE,YCE9C,eAAmD,QAC1ChG,QAAa2C,QAAQsD,KAAQ,IAC9BC,GAAO,GAIP,CAAC,CADH,oDAAsDrO,OAAtD,KAEAsO,EAAU1J,IAAV0J,CANgC,KAQzB,IARyB,IAU1B3B,SAAc/H,MAVxB,GCHF,eAA2D,QAClDuD,QAAiB2C,QAAQ,WAAe,MACvCyD,GAAQC,KACVD,MAFyC,GAKnC1B,kBALmC,GAGnC4B,eAAmBD,KAH/B,GCKF,aAAyC,UAK7BrD,EAAKuD,QAALvD,CAAcxD,OAAQwD,EAAKvG,UAIvBuG,EAAKuD,QAALvD,CAAcxD,OAAQwD,EAAKqD,YAGrCrD,EAAKwD,YAALxD,EAAqBjD,OAAOC,IAAPD,CAAYiD,EAAKyD,WAAjB1G,EAA8BtI,UAC3CuL,EAAKwD,aAAcxD,EAAKyD,eAgBtC,sBAME,MAEM5E,GAAmBuB,QAA8CC,EAAQC,aAAtDF,EAKnB1D,EAAY6D,EAChBF,EAAQ3D,SADQ6D,OAKhBF,EAAQZ,SAARY,CAAkBG,IAAlBH,CAAuBhE,iBALPkE,CAMhBF,EAAQZ,SAARY,CAAkBG,IAAlBH,CAAuB5D,OANP8D,WASX+C,aAAa,qBAIF,CAAE3C,SAAUN,EAAQC,aAARD,CAAwB,OAAxBA,CAAkC,UAA9C,KCzDpB,gBAAoD,OAgC3C3G,KAAKgK,KAhCsC,GA+B1ChK,KAAKiK,KA/BqC,MAC5C,CAAE7F,GAAF,CAAKE,GAAL,IACA,CAAExB,QAAF,EAAawD,EAAKlG,QAGlB8J,EAA8B3E,EAClCe,EAAKuD,QAALvD,CAAcP,SADoBR,CAElCjG,KAA8B,YAAlBA,KAASiI,IAFahC,EAGlC4E,gBACED,UAT8C,UAUxChE,KACN,gIAX8C,MAc5CiE,GACJD,WAEIvD,EAAQwD,eAFZD,GAII3M,EAAeE,EAAgB6I,EAAKuD,QAALvD,CAAcxD,MAA9BrF,EACf2M,EAAmB5J,KAGnBT,EAAS,UACH+C,EAAOmE,QADJ,EAOT7G,EAAU,MACRJ,EAAW8C,EAAOrD,IAAlBO,CADQ,KAETA,EAAW8C,EAAOvD,GAAlBS,CAFS,QAGNA,EAAW8C,EAAOtD,MAAlBQ,CAHM,OAIPA,EAAW8C,EAAOpD,KAAlBM,CAJO,EAOVL,EAAc,QAANyE,KAAiB,KAAjBA,CAAyB,SACjCvE,EAAc,OAANyE,KAAgB,MAAhBA,CAAyB,QAKjC+F,EAAmBnC,EAAyB,WAAzBA,KAWrBzI,GAAMF,OACI,QAAVI,IACI,CAACyK,EAAiB9J,MAAlB,CAA2BF,EAAQZ,OAEnCY,EAAQb,MAEF,OAAVM,IACK,CAACuK,EAAiB/J,KAAlB,CAA0BD,EAAQV,MAElCU,EAAQX,KAEb0K,yBAC0B,QAAA,eACZ,OACA,IACTlC,WAAa,gBACf,MAECqC,GAAsB,QAAV3K,IAAqB,CAAC,CAAtBA,CAA0B,EACtC4K,EAAuB,OAAV1K,IAAoB,CAAC,CAArBA,CAAyB,OAC5BN,GAJX,MAKWE,GALX,GAMEwI,cAAc,MAAA,SAIjB0B,GAAa,eACFrD,EAAKtD,SADH,WAKd2G,kBAAiCrD,EAAKqD,cACtC5J,cAAyBuG,EAAKvG,UAC9BgK,iBAAmBzD,EAAKlG,OAALkG,CAAakE,MAAUlE,EAAKyD,eCvFtD,kBAIE,MACMU,GAAalF,IAAgB,CAAC,CAAEgC,MAAF,CAAD,GAAcA,KAA9BhC,EAEbmF,EACJ,CAAC,EAAD,EACA3E,EAAUuB,IAAVvB,CAAezG,KAEXA,EAASiI,IAATjI,MACAA,EAAS8G,OADT9G,EAEAA,EAASvB,KAATuB,CAAiBmL,EAAW1M,KAJhCgI,KAQE,GAAa,MACT0E,QAAc,MACdE,OAAa,cACXzE,QACL,6BAAA,6DAAA,eCrBP,gBAA6C,IAEvC,CAAC0E,GAAmBtE,EAAKuD,QAALvD,CAAcP,SAAjC6E,CAA4C,OAA5CA,CAAqD,cAArDA,cAIDd,GAAenD,EAAQ7K,WAGC,QAAxB,iBACawK,EAAKuD,QAALvD,CAAcxD,MAAdwD,CAAqBuE,aAArBvE,IAGX,qBAMA,CAACA,EAAKuD,QAALvD,CAAcxD,MAAdwD,CAAqB5H,QAArB4H,mBACKJ,KACN,wEAMAlD,GAAYsD,EAAKtD,SAALsD,CAAepC,KAAfoC,CAAqB,GAArBA,EAA0B,CAA1BA,EACZ,CAAExD,QAAF,CAAUyD,WAAV,EAAwBD,EAAKlG,QAC7B0K,EAAsD,CAAC,CAA1C,oBAAkB3P,OAAlB,IAEb4P,EAAMD,EAAa,QAAbA,CAAwB,QAC9BE,EAAkBF,EAAa,KAAbA,CAAqB,OACvChM,EAAOkM,EAAgBC,WAAhBD,GACPE,EAAUJ,EAAa,MAAbA,CAAsB,MAChCK,EAASL,EAAa,QAAbA,CAAwB,QACjCM,EAAmBxG,QAQrB2B,OAAuCzD,IA5CA,KA6CpC1C,QAAQ0C,WACXA,MAAgByD,MAAhBzD,CA9CuC,EAiDvCyD,OAAqCzD,IAjDE,KAkDpC1C,QAAQ0C,WACXyD,OAAqCzD,IAnDE,IAqDtC1C,QAAQ0C,OAAS3B,EAAcmF,EAAKlG,OAALkG,CAAaxD,MAA3B3B,CArDqB,MAwDrCkK,GAAS9E,KAAkBA,KAAiB,CAAnCA,CAAuC6E,EAAmB,EAInEpP,EAAMW,EAAyB2J,EAAKuD,QAALvD,CAAcxD,MAAvCnG,EACN2O,EAAmBxL,WAAW9D,WAAK,GAALA,CAAX8D,CAA4C,EAA5CA,EACnByL,EAAmBzL,WAAW9D,WAAK,QAALA,CAAX8D,CAAiD,EAAjDA,KACrB0L,GACFH,EAAS/E,EAAKlG,OAALkG,CAAaxD,MAAbwD,GAAT+E,cAGUrL,KAAKC,GAALD,CAASA,KAAKyL,GAALzL,CAAS8C,MAAT9C,GAATA,CAA8D,CAA9DA,IAEP8J,iBACA1J,QAAQoK,MAAQ,KACXxK,KAAKgK,KAALhK,GADW,KAER,EAFQ,IC3EvB,cAAwD,IACpC,KAAdiE,WACK,QAF6C,MAG7B,OAAdA,IAH2C,CAI7C,KAJ6C,GCwBxD,yKAAA,CC5BA,KAAMyH,IAAkBC,GAAW3F,KAAX2F,CAAiB,CAAjBA,CAAxB,CAYA,cAA6CC,IAA7C,CAA8D,MACtDC,GAAQH,GAAgBvQ,OAAhBuQ,IACRlG,EAAMkG,GACT1F,KADS0F,CACHG,EAAQ,CADLH,EAETI,MAFSJ,CAEFA,GAAgB1F,KAAhB0F,CAAsB,CAAtBA,GAFEA,QAGLE,GAAUpG,EAAIuG,OAAJvG,EAAVoG,QCZHI,IAAY,MACV,MADU,WAEL,WAFK,kBAGE,kBAHF,EAalB,gBAA4C,IAEtCjE,EAAkBzB,EAAKuD,QAALvD,CAAcP,SAAhCgC,CAA2C,OAA3CA,cAIAzB,EAAK2F,OAAL3F,EAAgBA,EAAKtD,SAALsD,GAAmBA,EAAKS,gCAKtCtE,GAAaQ,EACjBqD,EAAKuD,QAALvD,CAAcxD,MADGG,CAEjBqD,EAAKuD,QAALvD,CAAcC,SAFGtD,CAGjB0D,EAAQ5D,OAHSE,CAIjB0D,EAAQhE,iBAJSM,CAKjBqD,EAAKM,aALY3D,KAQfD,GAAYsD,EAAKtD,SAALsD,CAAepC,KAAfoC,CAAqB,GAArBA,EAA0B,CAA1BA,EACZ4F,EAAoB9G,KACpBnB,EAAYqC,EAAKtD,SAALsD,CAAepC,KAAfoC,CAAqB,GAArBA,EAA0B,CAA1BA,GAAgC,GAE5C6F,YAEIxF,EAAQyF,cACTJ,IAAUK,OACD,gBAETL,IAAUM,YACDC,gBAETP,IAAUQ,mBACDD,yBAGA5F,EAAQyF,mBAGdnG,QAAQ,OAAiB,IAC7BjD,OAAsBmJ,EAAUpR,MAAVoR,GAAqBN,EAAQ,aAI3CvF,EAAKtD,SAALsD,CAAepC,KAAfoC,CAAqB,GAArBA,EAA0B,CAA1BA,CALqB,GAMblB,IANa,MAQ3BP,GAAgByB,EAAKlG,OAALkG,CAAaxD,OAC7B2J,EAAanG,EAAKlG,OAALkG,CAAaC,UAG1B0D,EAAQjK,KAAKiK,MACbyC,EACW,MAAd1J,MACCiH,EAAMpF,EAAcnF,KAApBuK,EAA6BA,EAAMwC,EAAWhN,IAAjBwK,CAD9BjH,EAEc,OAAdA,MACCiH,EAAMpF,EAAcpF,IAApBwK,EAA4BA,EAAMwC,EAAW/M,KAAjBuK,CAH7BjH,EAIc,KAAdA,MACCiH,EAAMpF,EAAcrF,MAApByK,EAA8BA,EAAMwC,EAAWlN,GAAjB0K,CAL/BjH,EAMc,QAAdA,MACCiH,EAAMpF,EAActF,GAApB0K,EAA2BA,EAAMwC,EAAWjN,MAAjByK,EAEzB0C,EAAgB1C,EAAMpF,EAAcpF,IAApBwK,EAA4BA,EAAMxH,EAAWhD,IAAjBwK,EAC5C2C,EAAiB3C,EAAMpF,EAAcnF,KAApBuK,EAA6BA,EAAMxH,EAAW/C,KAAjBuK,EAC9C4C,EAAe5C,EAAMpF,EAActF,GAApB0K,EAA2BA,EAAMxH,EAAWlD,GAAjB0K,EAC1C6C,EACJ7C,EAAMpF,EAAcrF,MAApByK,EAA8BA,EAAMxH,EAAWjD,MAAjByK,EAE1B8C,EACW,MAAd/J,SACc,OAAdA,OADAA,EAEc,KAAdA,OAFAA,EAGc,QAAdA,QAGG8H,EAAsD,CAAC,CAA1C,oBAAkB3P,OAAlB,IACb6R,EACJ,CAAC,CAACrG,EAAQsG,cAAV,GACEnC,GAA4B,OAAd7G,IAAd6G,KACCA,GAA4B,KAAd7G,IAAd6G,GADDA,EAEC,IAA6B,OAAd7G,IAAf,GAFD6G,EAGC,IAA6B,KAAd7G,IAAf,GAJH,EAtC+B,CA4C7ByI,OA5C6B,MA8C1BT,UA9C0B,EAgD3BS,IAhD2B,MAiDjBP,EAAUN,EAAQ,CAAlBM,CAjDiB,QAqDjBe,KArDiB,IAwD1BlK,UAAYA,GAAaiB,EAAY,KAAZA,CAA8B,EAA3CjB,CAxDc,GA4D1B5C,QAAQ0C,YACRwD,EAAKlG,OAALkG,CAAaxD,OACbkE,EACDV,EAAKuD,QAALvD,CAAcxD,MADbkE,CAEDV,EAAKlG,OAALkG,CAAaC,SAFZS,CAGDV,EAAKtD,SAHJgE,EA9D0B,GAqExBE,EAAaZ,EAAKuD,QAALvD,CAAcP,SAA3BmB,GAA4C,MAA5CA,CArEwB,CAAnC,KCrDF,cAA2C,MACnC,CAAEpE,QAAF,CAAUyD,WAAV,EAAwBD,EAAKlG,QAC7B4C,EAAYsD,EAAKtD,SAALsD,CAAepC,KAAfoC,CAAqB,GAArBA,EAA0B,CAA1BA,EACZ2D,EAAQjK,KAAKiK,MACba,EAAsD,CAAC,CAA1C,oBAAkB3P,OAAlB,IACb2D,EAAOgM,EAAa,OAAbA,CAAuB,SAC9BK,EAASL,EAAa,MAAbA,CAAsB,MAC/B7F,EAAc6F,EAAa,OAAbA,CAAuB,eAEvChI,MAAemH,EAAM1D,IAAN0D,MACZ7J,QAAQ0C,UACXmH,EAAM1D,IAAN0D,EAA2BnH,MAE3BA,KAAiBmH,EAAM1D,IAAN0D,MACd7J,QAAQ0C,UAAiBmH,EAAM1D,IAAN0D,KCLlC,oBAA2E,OA6B9DjK,KAAKC,GA7ByD,MAEnEiE,GAAQiJ,EAAIxH,KAAJwH,CAAU,2BAAVA,EACRzD,EAAQ,CAACxF,EAAM,CAANA,EACTsF,EAAOtF,EAAM,CAANA,KAGT,eAIsB,CAAtBsF,KAAKrO,OAALqO,CAAa,GAAbA,EAAyB,IACvB1N,iBAEG,mBAGA,QACA,uBAKDyE,GAAOY,WACNZ,MAAoB,GAApBA,EAbT,CAcO,GAAa,IAATiJ,MAA0B,IAATA,IAArB,CAAoC,IAErC4D,YACS,IAAT5D,KACKxJ,EACLrF,SAASyC,eAATzC,CAAyBkG,YADpBb,CAELtF,OAAO0H,WAAP1H,EAAsB,CAFjBsF,EAKAA,EACLrF,SAASyC,eAATzC,CAAyBiG,WADpBZ,CAELtF,OAAOyH,UAAPzH,EAAqB,CAFhBsF,EAKFoN,EAAO,GAAPA,EAdF,UAiCT,oBAKE,MACMhN,SAKAiN,EAAyD,CAAC,CAA9C,oBAAkBlS,OAAlB,IAIZmS,EAAYjL,EAAO6B,KAAP7B,CAAa,SAAbA,EAAwBkB,GAAxBlB,CAA4BkL,KAAQA,EAAKC,IAALD,EAApClL,EAIZoL,EAAUH,EAAUnS,OAAVmS,CACd/H,IAAgBgI,KAAgC,CAAC,CAAzBA,KAAKG,MAALH,CAAY,MAAZA,CAAxBhI,CADc+H,EAIZA,MAA0D,CAAC,CAArCA,QAAmBnS,OAAnBmS,CAA2B,GAA3BA,CAlB1B,UAmBUpH,KACN,+EApBJ,MA0BMyH,GAAa,iBACfC,GAAkB,CAAC,CAAbH,KASN,GATMA,CACN,CACEH,EACGtH,KADHsH,CACS,CADTA,IAEGxB,MAFHwB,CAEU,CAACA,KAAmBpJ,KAAnBoJ,IAAqC,CAArCA,CAAD,CAFVA,CADF,CAIE,CAACA,KAAmBpJ,KAAnBoJ,IAAqC,CAArCA,CAAD,EAA0CxB,MAA1C,CACEwB,EAAUtH,KAAVsH,CAAgBG,EAAU,CAA1BH,CADF,CAJF,WAWEM,EAAIrK,GAAJqK,CAAQ,OAAe,MAErB3I,GAAc,CAAW,CAAV4G,KAAc,EAAdA,EAAD,EAChB,QADgB,CAEhB,WACAgC,YAEFC,GAGGC,MAHHD,CAGU,OACkB,EAApBjK,KAAEA,EAAE9I,MAAF8I,CAAW,CAAbA,GAAoD,CAAC,CAA3B,aAAW1I,OAAX,GADxB,IAEF0I,EAAE9I,MAAF8I,CAAW,IAFT,KAAA,SAMFA,EAAE9I,MAAF8I,CAAW,KANT,KAAA,IAUGA,EAAEiI,MAAFjI,GAbbiK,KAiBGvK,GAjBHuK,CAiBOX,KAAOa,WAjBdF,CAPE,CAAAF,IA6BF3H,QAAQ,OAAe,GACtBA,QAAQ,OAAkB,CACvBwD,IADuB,SAEP8D,GAA2B,GAAnBO,KAAGG,EAAS,CAAZH,EAAyB,CAAC,CAA1BA,CAA8B,CAAtCP,CAFO,CAA7B,EADF,KAmBF,cAAqC,CAAElL,QAAF,CAArC,CAAiD,MACzC,CAAEW,WAAF,CAAa5C,QAAS,CAAE0C,QAAF,CAAUyD,WAAV,CAAtB,IACA2H,EAAgBlL,EAAUkB,KAAVlB,CAAgB,GAAhBA,EAAqB,CAArBA,KAElB5C,YACAqJ,EAAU,EAAVA,EACQ,CAAC,EAAD,CAAU,CAAV,EAEA0E,YAGU,MAAlBD,QACK3O,KAAOa,EAAQ,CAARA,IACPX,MAAQW,EAAQ,CAARA,GACY,OAAlB8N,QACF3O,KAAOa,EAAQ,CAARA,IACPX,MAAQW,EAAQ,CAARA,GACY,KAAlB8N,QACFzO,MAAQW,EAAQ,CAARA,IACRb,KAAOa,EAAQ,CAARA,GACa,QAAlB8N,SACFzO,MAAQW,EAAQ,CAARA,IACRb,KAAOa,EAAQ,CAARA,KAGX0C,WCpLP,gBAAuD,IACjDH,GACFgE,EAAQhE,iBAARgE,EAA6BlJ,EAAgB6I,EAAKuD,QAALvD,CAAcxD,MAA9BrF,EAK3B6I,EAAKuD,QAALvD,CAAcC,SAAdD,IAPiD,KAQ/B7I,IAR+B,OAc/C2Q,GAAgBlG,EAAyB,WAAzBA,EAChBmG,EAAe/H,EAAKuD,QAALvD,CAAcxD,MAAdwD,CAAqBwB,MACpC,CAAEvI,KAAF,CAAOE,MAAP,CAAa,KAAb,MACOF,IAAM,EAjBkC,GAkBxCE,KAAO,EAlBiC,MAmBvB,EAnBuB,MAqB/CgD,GAAaQ,EACjBqD,EAAKuD,QAALvD,CAAcxD,MADGG,CAEjBqD,EAAKuD,QAALvD,CAAcC,SAFGtD,CAGjB0D,EAAQ5D,OAHSE,GAKjBqD,EAAKM,aALY3D,IAUN1D,KA/BwC,GAgCxCE,MAhCwC,OAAA,GAmC7CgD,YAnC6C,MAqC/C1E,GAAQ4I,EAAQ2H,YAClBxL,GAASwD,EAAKlG,OAALkG,CAAaxD,YAEpByL,GAAQ,WACO,IACb7E,GAAQ5G,WAEVA,MAAoBL,IAApBK,EACA,CAAC6D,EAAQ6H,wBAEDxO,KAAKC,GAALD,CAAS8C,IAAT9C,CAA4ByC,IAA5BzC,GAEH,CAAE,KAAF,CATG,CAAA,aAWS,MACb+E,GAAyB,OAAd/B,KAAwB,MAAxBA,CAAiC,SAC9C0G,GAAQ5G,WAEVA,MAAoBL,IAApBK,EACA,CAAC6D,EAAQ6H,wBAEDxO,KAAKyL,GAALzL,CACN8C,IADM9C,CAENyC,MACiB,OAAdO,KAAwBF,EAAOzC,KAA/B2C,CAAuCF,EAAOxC,MADjDmC,CAFMzC,GAMH,CAAE,KAAF,EAxBG,WA4BRiG,QAAQjD,KAAa,MACnBlE,GACmC,CAAC,CAAxC,kBAAgB3D,OAAhB,IAAwD,WAAxD,CAA4C,mBACrBoT,QAH3B,KAMKnO,QAAQ0C,WC9Ef,cAAoC,MAC5BE,GAAYsD,EAAKtD,UACjBkL,EAAgBlL,EAAUkB,KAAVlB,CAAgB,GAAhBA,EAAqB,CAArBA,EAChByL,EAAiBzL,EAAUkB,KAAVlB,CAAgB,GAAhBA,EAAqB,CAArBA,OAGH,MACZ,CAAEuD,WAAF,CAAazD,QAAb,EAAwBwD,EAAKlG,QAC7B0K,EAA0D,CAAC,CAA9C,oBAAkB3P,OAAlB,IACb2D,EAAOgM,EAAa,MAAbA,CAAsB,MAC7B7F,EAAc6F,EAAa,OAAbA,CAAuB,SAErC4D,EAAe,OACZ,CAAE,IAAQnI,IAAV,CADY,KAEd,KACKA,KAAkBA,IAAlBA,CAA2CzD,IADhD,CAFc,IAOhB1C,QAAQ0C,cAAyB4L,eChB1C,cAAmC,IAC7B,CAAC9D,GAAmBtE,EAAKuD,QAALvD,CAAcP,SAAjC6E,CAA4C,MAA5CA,CAAoD,iBAApDA,gBAICzH,GAAUmD,EAAKlG,OAALkG,CAAaC,UACvBoI,EAAQpJ,EACZe,EAAKuD,QAALvD,CAAcP,SADFR,CAEZjG,KAA8B,iBAAlBA,KAASiI,IAFThC,EAGZ9C,cAGAU,EAAQ3D,MAAR2D,CAAiBwL,EAAMpP,GAAvB4D,EACAA,EAAQ1D,IAAR0D,CAAewL,EAAMjP,KADrByD,EAEAA,EAAQ5D,GAAR4D,CAAcwL,EAAMnP,MAFpB2D,EAGAA,EAAQzD,KAARyD,CAAgBwL,EAAMlP,KACtB,IAEI6G,OAAKsI,gBAIJA,OANL,GAOKjF,WAAW,uBAAyB,EAZ3C,KAaO,IAEDrD,OAAKsI,gBAIJA,OANA,GAOAjF,WAAW,mCC/BpB,cAAoC,MAC5B3G,GAAYsD,EAAKtD,UACjBkL,EAAgBlL,EAAUkB,KAAVlB,CAAgB,GAAhBA,EAAqB,CAArBA,EAChB,CAAEF,QAAF,CAAUyD,WAAV,EAAwBD,EAAKlG,QAC7B0E,EAAuD,CAAC,CAA9C,oBAAkB3J,OAAlB,IAEV0T,EAA4D,CAAC,CAA5C,kBAAgB1T,OAAhB,aAEhB2J,EAAU,MAAVA,CAAmB,OACxByB,MACCsI,EAAiB/L,EAAOgC,EAAU,OAAVA,CAAoB,QAA3BhC,CAAjB+L,CAAwD,CADzDtI,IAGGvD,UAAYoC,OACZhF,QAAQ0C,OAAS3B,OCSxB,OAAe,OASN,OAEE,GAFF,WAAA,MAAA,CATM,QAwDL,OAEC,GAFD,WAAA,MAAA,QAUE,CAVF,CAxDK,iBAsFI,OAER,GAFQ,WAAA,MAAA,yCAAA,SAmBN,CAnBM,mBAyBI,cAzBJ,CAtFJ,cA2HC,OAEL,GAFK,WAAA,MAAA,CA3HD,OA8IN,OAEE,GAFF,WAAA,MAAA,SAQI,WARJ,CA9IM,MAoKP,OAEG,GAFH,WAAA,MAAA,UAaM,MAbN,SAkBK,CAlBL,mBAyBe,UAzBf,CApKO,OAuMN,OAEE,GAFF,WAAA,MAAA,CAvMM,MA0NP,OAEG,GAFH,WAAA,MAAA,CA1NO,cAkPC,OAEL,GAFK,WAAA,MAAA,mBAAA,GAkBT,QAlBS,GAwBT,OAxBS,CAlPD,YA4RD,OAEH,GAFG,WAAA,KAAA,UAAA,uBAAA,CA5RC,CAAf,ICde,WAKF,QALE,iBAAA,iBAAA,mBAAA,UAgCH,IAAM,CAhCH,CAAA,UA0CH,IAAM,CA1CH,CAAA,aAAA,CDcf,CE3BA,QAO4B,iBASKwF,KAAc,MAyF7CsC,eAAiB,IAAM6F,sBAAsB,KAAKC,MAA3BD,CAzFsB,MAEtCC,OAASC,EAAS,KAAKD,MAAL,CAAYE,IAAZ,CAAiB,IAAjB,CAATD,CAF6B,MAKtCrI,aAAeuI,GAAOC,WALgB,MAQtC3I,MAAQ,eAAA,aAAA,iBAAA,CAR8B,MAetCD,UAAYA,GAAaA,EAAU6I,MAAvB7I,CAAgCA,EAAU,CAAVA,CAAhCA,EAf0B,MAgBtCzD,OAASA,GAAUA,EAAOsM,MAAjBtM,CAA0BA,EAAO,CAAPA,CAA1BA,EAhB6B,MAmBtC6D,QAAQZ,YAnB8B,QAoBpCzC,UACF4L,GAAOC,QAAPD,CAAgBnJ,UAChBY,EAAQZ,YACVE,QAAQsB,KAAQ,MACZZ,QAAQZ,kBAEPmJ,GAAOC,QAAPD,CAAgBnJ,SAAhBmJ,QAEAvI,EAAQZ,SAARY,CAAoBA,EAAQZ,SAARY,GAApBA,IARR,EApB2C,MAiCtCZ,UAAY1C,OAAOC,IAAPD,CAAY,KAAKsD,OAAL,CAAaZ,SAAzB1C,EACdE,GADcF,CACVkE,gBAEA,KAAKZ,OAAL,CAAaZ,SAAb,IAHU1C,EAMdK,IANcL,CAMT,OAAUQ,EAAE9F,KAAF8F,CAAUF,EAAE5F,KANbsF,CAjC0B,MA6CtC0C,UAAUE,QAAQoJ,KAAmB,CACpCA,EAAgBjJ,OAAhBiJ,EAA2BhJ,EAAWgJ,EAAgBC,MAA3BjJ,CADS,IAEtBiJ,OACd,KAAK/I,UACL,KAAKzD,OACL,KAAK6D,UAEL,KAAKH,MAPX,EA7C2C,MA0DtCuI,QA1DsC,MA4DrChG,GAAgB,KAAKpC,OAAL,CAAaoC,cA5DQ,QA+DpCwG,sBA/DoC,MAkEtC/I,MAAMuC,wBAKJ,OACAgG,GAAOlT,IAAPkT,CAAY,IAAZA,WAEC,OACDS,GAAQ3T,IAAR2T,CAAa,IAAbA,wBAEc,OACdD,GAAqB1T,IAArB0T,CAA0B,IAA1BA,yBAEe,OACfpH,GAAsBtM,IAAtBsM,CAA2B,IAA3BA,EA1FiB,CAAP+G,GAoHZO,KApHYP,CAoHJ,CAAmB,WAAlB,QAAOxU,OAAP,CAAyCgV,MAAzC,CAAgChV,MAAjC,EAAkDiV,YApH9CT,GAsHZvD,UAtHYuD,IAAAA,GAwHZC,QAxHYD"}
\ No newline at end of file
+{"version":3,"file":"popper.min.js","sources":["../../src/utils/isFunction.js","../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/isIE.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getFixedPositionOffsetParent.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/runModifiers.js","../../src/methods/update.js","../../src/utils/isModifierEnabled.js","../../src/utils/getSupportedPropertyName.js","../../src/methods/destroy.js","../../src/utils/getWindow.js","../../src/utils/setupEventListeners.js","../../src/methods/enableEventListeners.js","../../src/utils/removeEventListeners.js","../../src/methods/disableEventListeners.js","../../src/utils/isNumeric.js","../../src/utils/setStyles.js","../../src/utils/setAttributes.js","../../src/utils/isModifierRequired.js","../../src/utils/getOppositeVariation.js","../../src/utils/clockwise.js","../../src/modifiers/offset.js","../../src/utils/debounce.js","../../src/modifiers/arrow.js","../../src/modifiers/computeStyle.js","../../src/utils/isBrowser.js","../../src/modifiers/flip.js","../../src/index.js","../../src/methods/defaults.js","../../src/modifiers/index.js","../../src/modifiers/shift.js","../../src/modifiers/preventOverflow.js","../../src/modifiers/keepTogether.js","../../src/modifiers/inner.js","../../src/modifiers/hide.js","../../src/modifiers/applyStyle.js"],"sourcesContent":["/**\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 */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n 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 */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\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 */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\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 */\nexport default function 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 const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst 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 */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\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 */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent;\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 const 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 TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n 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 */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\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 */\nexport default function 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 const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\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 const 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 * 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 */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\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 */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const 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 * 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\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const 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","/**\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 */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\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 */\nexport default function getBoundingClientRect(element) {\n let 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 const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const 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 const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let 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 const 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","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const 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 && parent.nodeName === 'HTML') {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let 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 const marginTop = parseFloat(styles.marginTop, 10);\n const 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 (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\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 */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\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\nexport default function 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 let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\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 */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\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 const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\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 boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\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 */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const 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 const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\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 */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\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 */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\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 */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\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 */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const 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 const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\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 */\nexport default function 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","import find from './find';\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 */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\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 */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const 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","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let 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(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\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(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\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(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : '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 * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\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 */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function 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 explicity 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 * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\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 */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\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 const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\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 */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function 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(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","import removeEventListeners from '../utils/removeEventListeners';\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 */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\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 */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\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 */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\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 */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\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 */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\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 */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst 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 */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\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 */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const 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 let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const 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 let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\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 */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const 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 const 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 const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\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 const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\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 const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((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(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((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 */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\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","import isBrowser from './isBrowser';\n\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\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*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\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 */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let 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(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const 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 const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n 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 = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\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 */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // Avoid blurry text by using full pixel integers.\n // For pixel-perfect positioning, top/bottom prefers rounded\n // values, while left/right prefers floored values.\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.round(popper.top),\n bottom: Math.round(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const 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 const 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 let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\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 const invertTop = sideA === 'bottom' ? -1 : 1;\n const 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 const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","export default typeof window !== 'undefined' && typeof document !== 'undefined';\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst 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 */\nexport default function 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 const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let 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((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 const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\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 = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as 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 constructor(reference, popper, options = {}) {\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 = { ...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({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\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(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const 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 update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\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 static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\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.<br />\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","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overriden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, 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 */\nexport default {\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.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n 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.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n 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,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\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.<br />\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 */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\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 unitless, 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.<br />\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.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\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 * > More on this [reading 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 * An scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\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 has always 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 eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point 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 conjuction 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\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 you 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 informations used by Popper.js\n * this object get 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 * @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 */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\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 */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n 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 const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\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 const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\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 */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n 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","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\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 */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\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 */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\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","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\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 */\nexport default function 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 */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const 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 const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\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"],"names":["functionToCheck","getType","toString","call","element","nodeType","css","getComputedStyle","property","nodeName","parentNode","host","document","body","ownerDocument","getStyleComputedProperty","overflow","overflowX","overflowY","test","getScrollParent","getParentNode","version","isIE11","documentElement","noOffsetParent","isIE","offsetParent","nextElementSibling","indexOf","getOffsetParent","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","parseFloat","styles","Math","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","fixedPosition","isIE10","runIsIE","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","excludeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","window","innerWidth","innerHeight","offset","isFixed","parentElement","el","boundaries","getFixedPositionOffsetParent","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","length","key","variation","split","commonOffsetParent","x","marginBottom","y","marginRight","hash","replace","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","Array","prototype","find","arr","findIndex","cur","match","obj","modifiersToRun","ends","modifiers","slice","forEach","warn","fn","enabled","isFunction","data","reference","state","isDestroyed","getReferenceOffsets","options","positionFixed","computeAutoPlacement","flip","originalPlacement","getPopperOffsets","position","runModifiers","isCreated","onUpdate","onCreate","some","name","prefixes","upperProp","charAt","toUpperCase","i","prefix","toCheck","style","isModifierEnabled","removeAttribute","willChange","getSupportedPropertyName","disableEventListeners","removeOnDestroy","removeChild","defaultView","isBody","target","addEventListener","passive","push","updateBound","scrollElement","scrollParents","eventsEnabled","setupEventListeners","scheduleUpdate","removeEventListener","removeEventListeners","n","isNaN","isFinite","unit","isNumeric","value","attributes","setAttribute","requesting","isRequired","requested","counter","index","validPlacements","concat","reverse","str","size","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","mergeWithPrevious","op","reduce","toValue","index2","basePlacement","parseOffset","min","round","floor","max","timeoutDuration","longerTimeoutBrowsers","isBrowser","navigator","userAgent","supportsMicroTasks","Promise","called","resolve","then","scheduled","MSInputMethodContext","documentMode","placements","BEHAVIORS","Popper","requestAnimationFrame","update","debounce","bind","Defaults","jquery","modifierOptions","onLoad","enableEventListeners","destroy","Utils","global","PopperUtils","shiftvariation","isVertical","shiftOffsets","instance","transformProp","popperStyles","transform","priority","check","escapeWithReference","opSide","isModifierRequired","arrowElement","querySelector","len","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","arrow","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","clockwise","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","subtractLength","bound","hide","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","invertTop","invertLeft","arrowStyles"],"mappings":"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"}
\ No newline at end of file