{"version":3,"file":"js/child-theme.min.js","mappings":"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","sources":["webpack://tgtheme/./js/child-theme.js","webpack://tgtheme/external var \"jQuery\"","webpack://tgtheme/webpack/bootstrap","webpack://tgtheme/webpack/runtime/global","webpack://tgtheme/webpack/startup"],"sourcesContent":["/*!\n * Bootstrap v4.2.1 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\"\n ? factory(exports, require(\"jquery\"))\n : typeof define === \"function\" && define.amd\n ? define([\"exports\", \"jquery\"], factory)\n : factory((global.bootstrap = {}), global.jQuery);\n})(this, (exports, $) => {\n \"use strict\";\n\n $ = $ && $.hasOwnProperty(\"default\") ? $.default : $;\n\n function _defineProperties(target, props) {\n for (let i = 0; i < props.length; i++) {\n let descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _objectSpread(target) {\n for (let i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n let ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter((sym) => {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n\n ownKeys.forEach((key) => {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.2.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n let TRANSITION_END = \"transitionend\";\n let MAX_UID = 1000000;\n let MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n return {}.toString\n .call(obj)\n .match(/\\s([a-z]+)/i)[1]\n .toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined; // eslint-disable-line no-undefined\n },\n };\n }\n\n function transitionEndEmulator(duration) {\n let _this = this;\n\n let called = false;\n $(this).one(Util.TRANSITION_END, () => {\n called = true;\n });\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator;\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n var Util = {\n TRANSITION_END: \"bsTransitionEnd\",\n getUID: function 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\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n let selector = element.getAttribute(\"data-target\");\n\n if (!selector || selector === \"#\") {\n let hrefAttr = element.getAttribute(\"href\");\n selector = hrefAttr && hrefAttr !== \"#\" ? hrefAttr.trim() : \"\";\n }\n\n return selector && document.querySelector(selector) ? selector : null;\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(\n element\n ) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n let transitionDuration = $(element).css(\"transition-duration\");\n let transitionDelay = $(element).css(\"transition-delay\");\n let floatTransitionDuration = parseFloat(transitionDuration);\n let floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n transitionDuration = transitionDuration.split(\",\")[0];\n transitionDelay = transitionDelay.split(\",\")[0];\n return (\n (parseFloat(transitionDuration) + parseFloat(transitionDelay)) *\n MILLISECONDS_MULTIPLIER\n );\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END);\n },\n // TODO: Remove in v5\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(\n componentName,\n config,\n configTypes\n ) {\n for (let property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n let expectedTypes = configTypes[property];\n let value = config[property];\n let valueType =\n value && Util.isElement(value) ? \"element\" : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n );\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n if (typeof element.getRootNode === \"function\") {\n let root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n };\n setTransitionEndSupport();\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n let NAME = \"alert\";\n let VERSION = \"4.2.1\";\n let DATA_KEY = \"bs.alert\";\n let EVENT_KEY = `.${DATA_KEY}`;\n let DATA_API_KEY = \".data-api\";\n let JQUERY_NO_CONFLICT = $.fn[NAME];\n let Selector = {\n DISMISS: '[data-dismiss=\"alert\"]',\n };\n let Event = {\n CLOSE: `close${EVENT_KEY}`,\n CLOSED: `closed${EVENT_KEY}`,\n CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`,\n };\n let ClassName = {\n ALERT: \"alert\",\n FADE: \"fade\",\n SHOW: \"show\",\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n };\n\n let Alert =\n /*#__PURE__*/\n (function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n let _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n let rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n let customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY);\n this._element = null;\n }; // Private\n\n _proto._getRootElement = function _getRootElement(element) {\n let 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 _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n let closeEvent = $.Event(Event.CLOSE);\n $(element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n let _this = this;\n\n $(element).removeClass(ClassName.SHOW);\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n let transitionDuration = Util.getTransitionDurationFromElement(element);\n $(element)\n .one(Util.TRANSITION_END, (event) => {\n return _this._destroyElement(element, event);\n })\n .emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $(element).detach().trigger(Event.CLOSED).remove();\n }; // Static\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n let $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 Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [\n {\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n },\n },\n ]);\n\n return Alert;\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 * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface;\n $.fn[NAME].Constructor = Alert;\n\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n let NAME$1 = \"button\";\n let VERSION$1 = \"4.2.1\";\n let DATA_KEY$1 = \"bs.button\";\n let EVENT_KEY$1 = `.${DATA_KEY$1}`;\n let DATA_API_KEY$1 = \".data-api\";\n let JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];\n let ClassName$1 = {\n ACTIVE: \"active\",\n BUTTON: \"btn\",\n FOCUS: \"focus\",\n };\n let Selector$1 = {\n DATA_TOGGLE_CARROT: '[data-toggle^=\"button\"]',\n DATA_TOGGLE: '[data-toggle=\"buttons\"]',\n INPUT: 'input:not([type=\"hidden\"])',\n ACTIVE: \".active\",\n BUTTON: \".btn\",\n };\n let Event$1 = {\n CLICK_DATA_API: `click${EVENT_KEY$1}${DATA_API_KEY$1}`,\n FOCUS_BLUR_DATA_API:\n `focus${EVENT_KEY$1}${DATA_API_KEY$1} ` +\n `blur${EVENT_KEY$1}${DATA_API_KEY$1}`,\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n };\n\n let Button =\n /*#__PURE__*/\n (function () {\n function Button(element) {\n this._element = element;\n } // Getters\n\n let _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n let triggerChangeEvent = true;\n let addAriaPressed = true;\n let rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];\n\n if (rootElement) {\n let input = this._element.querySelector(Selector$1.INPUT);\n\n if (input) {\n if (input.type === \"radio\") {\n if (\n input.checked &&\n this._element.classList.contains(ClassName$1.ACTIVE)\n ) {\n triggerChangeEvent = false;\n } else {\n let activeElement = rootElement.querySelector(\n Selector$1.ACTIVE\n );\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName$1.ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (\n input.hasAttribute(\"disabled\") ||\n rootElement.hasAttribute(\"disabled\") ||\n input.classList.contains(\"disabled\") ||\n rootElement.classList.contains(\"disabled\")\n ) {\n return;\n }\n\n input.checked = !this._element.classList.contains(\n ClassName$1.ACTIVE\n );\n $(input).trigger(\"change\");\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute(\n \"aria-pressed\",\n !this._element.classList.contains(ClassName$1.ACTIVE)\n );\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName$1.ACTIVE);\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$1);\n this._element = null;\n }; // Static\n\n Button._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY$1);\n\n if (!data) {\n data = new Button(this);\n $(this).data(DATA_KEY$1, data);\n }\n\n if (config === \"toggle\") {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [\n {\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n },\n },\n ]);\n\n return Button;\n })();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault();\n let button = event.target;\n\n if (!$(button).hasClass(ClassName$1.BUTTON)) {\n button = $(button).closest(Selector$1.BUTTON);\n }\n\n Button._jQueryInterface.call($(button), \"toggle\");\n })\n .on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, (event) => {\n let button = $(event.target).closest(Selector$1.BUTTON)[0];\n $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$1] = Button._jQueryInterface;\n $.fn[NAME$1].Constructor = Button;\n\n $.fn[NAME$1].noConflict = function () {\n $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n let NAME$2 = \"carousel\";\n let VERSION$2 = \"4.2.1\";\n let DATA_KEY$2 = \"bs.carousel\";\n let EVENT_KEY$2 = `.${DATA_KEY$2}`;\n let DATA_API_KEY$2 = \".data-api\";\n let JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];\n let ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n let ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n let TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n let SWIPE_THRESHOLD = 40;\n let Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: \"hover\",\n wrap: true,\n touch: true,\n };\n let DefaultType = {\n interval: \"(number|boolean)\",\n keyboard: \"boolean\",\n slide: \"(boolean|string)\",\n pause: \"(string|boolean)\",\n wrap: \"boolean\",\n touch: \"boolean\",\n };\n let Direction = {\n NEXT: \"next\",\n PREV: \"prev\",\n LEFT: \"left\",\n RIGHT: \"right\",\n };\n let Event$2 = {\n SLIDE: `slide${EVENT_KEY$2}`,\n SLID: `slid${EVENT_KEY$2}`,\n KEYDOWN: `keydown${EVENT_KEY$2}`,\n MOUSEENTER: `mouseenter${EVENT_KEY$2}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY$2}`,\n TOUCHSTART: `touchstart${EVENT_KEY$2}`,\n TOUCHMOVE: `touchmove${EVENT_KEY$2}`,\n TOUCHEND: `touchend${EVENT_KEY$2}`,\n POINTERDOWN: `pointerdown${EVENT_KEY$2}`,\n POINTERUP: `pointerup${EVENT_KEY$2}`,\n DRAG_START: `dragstart${EVENT_KEY$2}`,\n LOAD_DATA_API: `load${EVENT_KEY$2}${DATA_API_KEY$2}`,\n CLICK_DATA_API: `click${EVENT_KEY$2}${DATA_API_KEY$2}`,\n };\n let ClassName$2 = {\n CAROUSEL: \"carousel\",\n ACTIVE: \"active\",\n SLIDE: \"slide\",\n RIGHT: \"carousel-item-right\",\n LEFT: \"carousel-item-left\",\n NEXT: \"carousel-item-next\",\n PREV: \"carousel-item-prev\",\n ITEM: \"carousel-item\",\n POINTER_EVENT: \"pointer-event\",\n };\n let Selector$2 = {\n ACTIVE: \".active\",\n ACTIVE_ITEM: \".active.carousel-item\",\n ITEM: \".carousel-item\",\n ITEM_IMG: \".carousel-item img\",\n NEXT_PREV: \".carousel-item-next, .carousel-item-prev\",\n INDICATORS: \".carousel-indicators\",\n DATA_SLIDE: \"[data-slide], [data-slide-to]\",\n DATA_RIDE: '[data-ride=\"carousel\"]',\n };\n let PointerType = {\n TOUCH: \"touch\",\n PEN: \"pen\",\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n };\n\n let Carousel =\n /*#__PURE__*/\n (function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(\n Selector$2.INDICATORS\n );\n this._touchSupported =\n \"ontouchstart\" in document.documentElement ||\n navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(\n window.PointerEvent || window.MSPointerEvent\n );\n\n this._addEventListeners();\n } // Getters\n\n let _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (\n !document.hidden &&\n $(this._element).is(\":visible\") &&\n $(this._element).css(\"visibility\") !== \"hidden\"\n ) {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(Selector$2.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function 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(\n this\n ),\n this._config.interval\n );\n }\n };\n\n _proto.to = function to(index) {\n let _this = this;\n\n this._activeElement = this._element.querySelector(\n Selector$2.ACTIVE_ITEM\n );\n\n let 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$2.SLID, () => {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n let direction = index > activeIndex ? Direction.NEXT : Direction.PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $(this._element).off(EVENT_KEY$2);\n $.removeData(this._element, DATA_KEY$2);\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 }; // Private\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n let absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n let direction = absDeltax / this.touchDeltaX; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n let _this2 = this;\n\n if (this._config.keyboard) {\n $(this._element).on(Event$2.KEYDOWN, (event) => {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === \"hover\") {\n $(this._element)\n .on(Event$2.MOUSEENTER, (event) => {\n return _this2.pause(event);\n })\n .on(Event$2.MOUSELEAVE, (event) => {\n return _this2.cycle(event);\n });\n }\n\n this._addTouchEventListeners();\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n let _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n let start = function start(event) {\n if (\n _this3._pointerEvent &&\n PointerType[event.originalEvent.pointerType.toUpperCase()]\n ) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n let move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (\n event.originalEvent.touches &&\n event.originalEvent.touches.length > 1\n ) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX =\n event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n let end = function end(event) {\n if (\n _this3._pointerEvent &&\n PointerType[event.originalEvent.pointerType.toUpperCase()]\n ) {\n _this3.touchDeltaX =\n event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === \"hover\") {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout((event) => {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(\n Event$2.DRAG_START,\n (e) => {\n return e.preventDefault();\n }\n );\n\n if (this._pointerEvent) {\n $(this._element).on(Event$2.POINTERDOWN, (event) => {\n return start(event);\n });\n $(this._element).on(Event$2.POINTERUP, (event) => {\n return end(event);\n });\n\n this._element.classList.add(ClassName$2.POINTER_EVENT);\n } else {\n $(this._element).on(Event$2.TOUCHSTART, (event) => {\n return start(event);\n });\n $(this._element).on(Event$2.TOUCHMOVE, (event) => {\n return move(event);\n });\n $(this._element).on(Event$2.TOUCHEND, (event) => {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _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\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n\n default:\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items =\n element && element.parentNode\n ? [].slice.call(\n element.parentNode.querySelectorAll(Selector$2.ITEM)\n )\n : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(\n direction,\n activeElement\n ) {\n let isNextDirection = direction === Direction.NEXT;\n let isPrevDirection = direction === Direction.PREV;\n\n let activeIndex = this._getItemIndex(activeElement);\n\n let lastItemIndex = this._items.length - 1;\n let isGoingToWrap =\n (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex);\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n let delta = direction === Direction.PREV ? -1 : 1;\n let itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1\n ? this._items[this._items.length - 1]\n : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(\n relatedTarget,\n eventDirectionName\n ) {\n let targetIndex = this._getItemIndex(relatedTarget);\n\n let fromIndex = this._getItemIndex(\n this._element.querySelector(Selector$2.ACTIVE_ITEM)\n );\n\n let slideEvent = $.Event(Event$2.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex,\n });\n $(this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(\n element\n ) {\n if (this._indicatorsElement) {\n let indicators = [].slice.call(\n this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE)\n );\n $(indicators).removeClass(ClassName$2.ACTIVE);\n\n let nextIndicator =\n this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName$2.ACTIVE);\n }\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n let _this4 = this;\n\n let activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n let activeElementIndex = this._getItemIndex(activeElement);\n\n let nextElement =\n element ||\n (activeElement && this._getItemByDirection(direction, activeElement));\n\n let nextElementIndex = this._getItemIndex(nextElement);\n\n let isCycling = Boolean(this._interval);\n let directionalClassName;\n let orderClassName;\n let eventDirectionName;\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName$2.LEFT;\n orderClassName = ClassName$2.NEXT;\n eventDirectionName = Direction.LEFT;\n } else {\n directionalClassName = ClassName$2.RIGHT;\n orderClassName = ClassName$2.PREV;\n eventDirectionName = Direction.RIGHT;\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {\n this._isSliding = false;\n return;\n }\n\n let slideEvent = this._triggerSlideEvent(\n nextElement,\n eventDirectionName\n );\n\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 let slidEvent = $.Event(Event$2.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex,\n });\n\n if ($(this._element).hasClass(ClassName$2.SLIDE)) {\n $(nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $(activeElement).addClass(directionalClassName);\n $(nextElement).addClass(directionalClassName);\n let nextElementInterval = parseInt(\n nextElement.getAttribute(\"data-interval\"),\n 10\n );\n\n if (nextElementInterval) {\n this._config.defaultInterval =\n this._config.defaultInterval || this._config.interval;\n this._config.interval = nextElementInterval;\n } else {\n this._config.interval =\n this._config.defaultInterval || this._config.interval;\n }\n\n let transitionDuration =\n Util.getTransitionDurationFromElement(activeElement);\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName$2.ACTIVE);\n $(activeElement).removeClass(\n `${ClassName$2.ACTIVE} ${orderClassName} ${directionalClassName}`\n );\n _this4._isSliding = false;\n setTimeout(() => {\n return $(_this4._element).trigger(slidEvent);\n }, 0);\n })\n .emulateTransitionEnd(transitionDuration);\n } else {\n $(activeElement).removeClass(ClassName$2.ACTIVE);\n $(nextElement).addClass(ClassName$2.ACTIVE);\n this._isSliding = false;\n $(this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n }; // Static\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY$2);\n\n let _config = _objectSpread({}, Default, $(this).data());\n\n if (typeof config === \"object\") {\n _config = _objectSpread({}, _config, config);\n }\n\n let action = typeof config === \"string\" ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $(this).data(DATA_KEY$2, 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\n data[action]();\n } else if (_config.interval) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n let selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n let target = $(selector)[0];\n\n if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {\n return;\n }\n\n let config = _objectSpread({}, $(target).data(), $(this).data());\n\n let 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$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [\n {\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n },\n },\n {\n key: \"Default\",\n get: function get() {\n return Default;\n },\n },\n ]);\n\n return Carousel;\n })();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event$2.CLICK_DATA_API,\n Selector$2.DATA_SLIDE,\n Carousel._dataApiClickHandler\n );\n $(window).on(Event$2.LOAD_DATA_API, () => {\n let carousels = [].slice.call(\n document.querySelectorAll(Selector$2.DATA_RIDE)\n );\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n let $carousel = $(carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$2] = Carousel._jQueryInterface;\n $.fn[NAME$2].Constructor = Carousel;\n\n $.fn[NAME$2].noConflict = function () {\n $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n let NAME$3 = \"collapse\";\n let VERSION$3 = \"4.2.1\";\n let DATA_KEY$3 = \"bs.collapse\";\n let EVENT_KEY$3 = `.${DATA_KEY$3}`;\n let DATA_API_KEY$3 = \".data-api\";\n let JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];\n let Default$1 = {\n toggle: true,\n parent: \"\",\n };\n let DefaultType$1 = {\n toggle: \"boolean\",\n parent: \"(string|element)\",\n };\n let Event$3 = {\n SHOW: `show${EVENT_KEY$3}`,\n SHOWN: `shown${EVENT_KEY$3}`,\n HIDE: `hide${EVENT_KEY$3}`,\n HIDDEN: `hidden${EVENT_KEY$3}`,\n CLICK_DATA_API: `click${EVENT_KEY$3}${DATA_API_KEY$3}`,\n };\n let ClassName$3 = {\n SHOW: \"show\",\n COLLAPSE: \"collapse\",\n COLLAPSING: \"collapsing\",\n COLLAPSED: \"collapsed\",\n };\n let Dimension = {\n WIDTH: \"width\",\n HEIGHT: \"height\",\n };\n let Selector$3 = {\n ACTIVES: \".show, .collapsing\",\n DATA_TOGGLE: '[data-toggle=\"collapse\"]',\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n };\n\n let Collapse =\n /*#__PURE__*/\n (function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(\n document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n )\n );\n let toggleList = [].slice.call(\n document.querySelectorAll(Selector$3.DATA_TOGGLE)\n );\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n let elem = toggleList[i];\n let selector = Util.getSelectorFromElement(elem);\n let filterElement = [].slice\n .call(document.querySelectorAll(selector))\n .filter((foundElem) => {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\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 } // Getters\n\n let _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($(this._element).hasClass(ClassName$3.SHOW)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n let _this = this;\n\n if (\n this._isTransitioning ||\n $(this._element).hasClass(ClassName$3.SHOW)\n ) {\n return;\n }\n\n let actives;\n let activesData;\n\n if (this._parent) {\n actives = [].slice\n .call(this._parent.querySelectorAll(Selector$3.ACTIVES))\n .filter((elem) => {\n if (typeof _this._config.parent === \"string\") {\n return (\n elem.getAttribute(\"data-parent\") === _this._config.parent\n );\n }\n\n return elem.classList.contains(ClassName$3.COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY$3);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n let startEvent = $.Event(Event$3.SHOW);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call(\n $(actives).not(this._selector),\n \"hide\"\n );\n\n if (!activesData) {\n $(actives).data(DATA_KEY$3, null);\n }\n }\n\n let dimension = this._getDimension();\n\n $(this._element)\n .removeClass(ClassName$3.COLLAPSE)\n .addClass(ClassName$3.COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName$3.COLLAPSED)\n .attr(\"aria-expanded\", true);\n }\n\n this.setTransitioning(true);\n\n let complete = function complete() {\n $(_this._element)\n .removeClass(ClassName$3.COLLAPSING)\n .addClass(ClassName$3.COLLAPSE)\n .addClass(ClassName$3.SHOW);\n _this._element.style[dimension] = \"\";\n\n _this.setTransitioning(false);\n\n $(_this._element).trigger(Event$3.SHOWN);\n };\n\n let capitalizedDimension =\n dimension[0].toUpperCase() + dimension.slice(1);\n let scrollSize = `scroll${capitalizedDimension}`;\n let transitionDuration = Util.getTransitionDurationFromElement(\n this._element\n );\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n };\n\n _proto.hide = function hide() {\n let _this2 = this;\n\n if (\n this._isTransitioning ||\n !$(this._element).hasClass(ClassName$3.SHOW)\n ) {\n return;\n }\n\n let startEvent = $.Event(Event$3.HIDE);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n let dimension = this._getDimension();\n\n this._element.style[dimension] = `${\n this._element.getBoundingClientRect()[dimension]\n }px`;\n Util.reflow(this._element);\n $(this._element)\n .addClass(ClassName$3.COLLAPSING)\n .removeClass(ClassName$3.COLLAPSE)\n .removeClass(ClassName$3.SHOW);\n let triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n let trigger = this._triggerArray[i];\n let selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n let $elem = $([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(ClassName$3.SHOW)) {\n $(trigger)\n .addClass(ClassName$3.COLLAPSED)\n .attr(\"aria-expanded\", false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n let complete = function complete() {\n _this2.setTransitioning(false);\n\n $(_this2._element)\n .removeClass(ClassName$3.COLLAPSING)\n .addClass(ClassName$3.COLLAPSE)\n .trigger(Event$3.HIDDEN);\n };\n\n this._element.style[dimension] = \"\";\n let transitionDuration = Util.getTransitionDurationFromElement(\n this._element\n );\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n }; // Private\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n let hasWidth = $(this._element).hasClass(Dimension.WIDTH);\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n let _this3 = this;\n\n let parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\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 let selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`;\n let children = [].slice.call(parent.querySelectorAll(selector));\n $(children).each((i, element) => {\n _this3._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n );\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(\n element,\n triggerArray\n ) {\n let isOpen = $(element).hasClass(ClassName$3.SHOW);\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName$3.COLLAPSED, !isOpen)\n .attr(\"aria-expanded\", isOpen);\n }\n }; // Static\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n let selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n let $this = $(this);\n let data = $this.data(DATA_KEY$3);\n\n let _config = _objectSpread(\n {},\n Default$1,\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$3, data);\n }\n\n if (typeof config === \"string\") {\n if (typeof data[config] === \"undefined\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [\n {\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n },\n },\n {\n key: \"Default\",\n get: function get() {\n return Default$1;\n },\n },\n ]);\n\n return Collapse;\n })();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event$3.CLICK_DATA_API,\n Selector$3.DATA_TOGGLE,\n function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === \"A\") {\n event.preventDefault();\n }\n\n let $trigger = $(this);\n let selector = Util.getSelectorFromElement(this);\n let selectors = [].slice.call(document.querySelectorAll(selector));\n $(selectors).each(function () {\n let $target = $(this);\n let data = $target.data(DATA_KEY$3);\n let config = data ? \"toggle\" : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n }\n );\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$3] = Collapse._jQueryInterface;\n $.fn[NAME$3].Constructor = Collapse;\n\n $.fn[NAME$3].noConflict = function () {\n $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.6\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n let isBrowser =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n\n let longerTimeoutBrowsers = [\"Edge\", \"Trident\", \"Firefox\"];\n let timeoutDuration = 0;\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (\n isBrowser &&\n navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0\n ) {\n timeoutDuration = 1;\n break;\n }\n }\n\n function microtaskDebounce(fn) {\n let called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(() => {\n called = false;\n fn();\n });\n };\n }\n\n function taskDebounce(fn) {\n let scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n }\n\n let supportsMicroTasks = isBrowser && window.Promise;\n\n /**\n * Create a debounced version of a method, that's asynchronously deferred\n * but called in the minimum time possible.\n *\n * @method\n * @memberof Popper.Utils\n * @argument {Function} fn\n * @returns {Function}\n */\n let debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n /**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n function isFunction(functionToCheck) {\n let getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === \"[object Function]\"\n );\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 */\n function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n let window = element.ownerDocument.defaultView;\n let css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n }\n\n /**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\n function getParentNode(element) {\n if (element.nodeName === \"HTML\") {\n return element;\n }\n return element.parentNode || element.host;\n }\n\n /**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\n 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\n let _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n }\n\n let isIE11 =\n isBrowser && !!(window.MSInputMethodContext && document.documentMode);\n let 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 */\n 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\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 */\n function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n let noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n let nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === \"BODY\" || nodeName === \"HTML\") {\n return element\n ? element.ownerDocument.documentElement\n : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n [\"TH\", \"TD\", \"TABLE\"].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, \"position\") === \"static\"\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n }\n\n function isOffsetContainer(element) {\n let nodeName = element.nodeName;\n\n if (nodeName === \"BODY\") {\n return false;\n }\n return (\n nodeName === \"HTML\" ||\n getOffsetParent(element.firstElementChild) === element\n );\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 */\n function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n }\n\n /**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\n 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 let order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n let start = order ? element1 : element2;\n let end = order ? element2 : element1;\n\n // Get common ancestor container\n let range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n let commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\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 let element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n }\n\n /**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\n function getScroll(element) {\n let side =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"top\";\n\n let upperSide = side === \"top\" ? \"scrollTop\" : \"scrollLeft\";\n let nodeName = element.nodeName;\n\n if (nodeName === \"BODY\" || nodeName === \"HTML\") {\n let html = element.ownerDocument.documentElement;\n let scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n }\n\n /*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\n function includeScroll(rect, element) {\n let subtract =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n let scrollTop = getScroll(element, \"top\");\n let scrollLeft = getScroll(element, \"left\");\n let modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n }\n\n /*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\n function getBordersSize(styles, axis) {\n let sideA = axis === \"x\" ? \"Left\" : \"Top\";\n let 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\n function 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 ? parseInt(html[`offset${axis}`]) +\n parseInt(\n computedStyle[`margin${axis === \"Height\" ? \"Top\" : \"Left\"}`]\n ) +\n parseInt(\n computedStyle[`margin${axis === \"Height\" ? \"Bottom\" : \"Right\"}`]\n )\n : 0\n );\n }\n\n function getWindowSizes(document) {\n let body = document.body;\n let html = document.documentElement;\n let 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 let classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n let createClass = (function () {\n function defineProperties(target, props) {\n for (let i = 0; i < props.length; i++) {\n let descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n })();\n\n let defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n };\n\n let _extends =\n Object.assign ||\n function (target) {\n for (let i = 1; i < arguments.length; i++) {\n let source = arguments[i];\n\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n /**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\n function getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n });\n }\n\n /**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n 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 let scrollTop = getScroll(element, \"top\");\n let scrollLeft = getScroll(element, \"left\");\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n let 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 let sizes =\n element.nodeName === \"HTML\" ? getWindowSizes(element.ownerDocument) : {};\n let width =\n sizes.width || element.clientWidth || result.right - result.left;\n let 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 let 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\n function getOffsetRectRelativeToArbitraryNode(children, parent) {\n let fixedPosition =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n let isIE10 = isIE(10);\n let isHTML = parent.nodeName === \"HTML\";\n let childrenRect = getBoundingClientRect(children);\n let parentRect = getBoundingClientRect(parent);\n let scrollParent = getScrollParent(children);\n\n let styles = getStyleComputedProperty(parent);\n let borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n let borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n 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 let marginTop = parseFloat(styles.marginTop, 10);\n let 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\n function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n let excludeScroll =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n let html = element.ownerDocument.documentElement;\n let relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n let width = Math.max(html.clientWidth, window.innerWidth || 0);\n let height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n let scrollTop = !excludeScroll ? getScroll(html) : 0;\n let scrollLeft = !excludeScroll ? getScroll(html, \"left\") : 0;\n\n let 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\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 */\n function isFixed(element) {\n let 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\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\n 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 /**\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 */\n function getBoundaries(popper, reference, padding, boundariesElement) {\n let fixedPosition =\n arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n let offsetParent = fixedPosition\n ? getFixedPositionOffsetParent(popper)\n : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === \"viewport\") {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(\n offsetParent,\n fixedPosition\n );\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode = void 0;\n if (boundariesElement === \"scrollParent\") {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === \"BODY\") {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === \"window\") {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n let 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 let _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n let isPaddingNumber = typeof padding === \"number\";\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n }\n\n function getArea(_ref) {\n let width = _ref.width,\n height = _ref.height;\n\n return width * height;\n }\n\n /**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement\n ) {\n let padding =\n arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf(\"auto\") === -1) {\n return placement;\n }\n\n let boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n let 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 let sortedAreas = Object.keys(rects)\n .map((key) => {\n return _extends(\n {\n key,\n },\n rects[key],\n {\n area: getArea(rects[key]),\n }\n );\n })\n .sort((a, b) => {\n return b.area - a.area;\n });\n\n let filteredAreas = sortedAreas.filter((_ref2) => {\n let width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n let computedPlacement =\n filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n let variation = placement.split(\"-\")[1];\n\n return computedPlacement + (variation ? `-${variation}` : \"\");\n }\n\n /**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n function getReferenceOffsets(state, popper, reference) {\n let fixedPosition =\n arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n let commonOffsetParent = fixedPosition\n ? getFixedPositionOffsetParent(popper)\n : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(\n reference,\n commonOffsetParent,\n fixedPosition\n );\n }\n\n /**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n function getOuterSizes(element) {\n let window = element.ownerDocument.defaultView;\n let styles = window.getComputedStyle(element);\n let x =\n parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n let y =\n parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n let result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n }\n\n /**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n function getOppositePlacement(placement) {\n let hash = { left: \"right\", right: \"left\", bottom: \"top\", top: \"bottom\" };\n return placement.replace(/left|right|bottom|top/g, (matched) => {\n return hash[matched];\n });\n }\n\n /**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\n function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split(\"-\")[0];\n\n // Get popper node sizes\n let popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n let 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 let isHoriz = [\"right\", \"left\"].indexOf(placement) !== -1;\n let mainSide = isHoriz ? \"top\" : \"left\";\n let secondarySide = isHoriz ? \"left\" : \"top\";\n let measurement = isHoriz ? \"height\" : \"width\";\n let 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 /**\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 */\n 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\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 */\n function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex((cur) => {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n let match = find(arr, (obj) => {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n }\n\n /**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\n function runModifiers(modifiers, data, ends) {\n let modifiersToRun =\n ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, \"name\", ends));\n\n modifiersToRun.forEach((modifier) => {\n if (modifier.function) {\n // eslint-disable-line dot-notation\n console.warn(\"`modifier.function` is deprecated, use `modifier.fn`!\");\n }\n let fn = modifier[\"function\"] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n }\n\n /**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\n 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 /**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\n function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some((_ref) => {\n let name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n }\n\n /**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\n function getSupportedPropertyName(property) {\n let prefixes = [false, \"ms\", \"Webkit\", \"Moz\", \"O\"];\n let upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n let prefix = prefixes[i];\n let toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== \"undefined\") {\n return toCheck;\n }\n }\n return null;\n }\n\n /**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\n 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 /**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\n function getWindow(element) {\n let ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n }\n\n function attachToScrollParents(scrollParent, event, callback, scrollParents) {\n let isBody = scrollParent.nodeName === \"BODY\";\n let 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 */\n function setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener(\"resize\", state.updateBound, {\n passive: true,\n });\n\n // Scroll event listener on scroll parents\n let 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\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 */\n 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\n /**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n 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\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 */\n function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n }\n\n /**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\n function isNumeric(n) {\n return n !== \"\" && !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n /**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n 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 /**\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 */\n function setAttributes(element, attributes) {\n Object.keys(attributes).forEach((prop) => {\n let value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n }\n\n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\n 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 */\n function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n ) {\n // compute reference element offsets\n let referenceOffsets = getReferenceOffsets(\n state,\n popper,\n reference,\n 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 let 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, {\n position: options.positionFixed ? \"fixed\" : \"absolute\",\n });\n\n return options;\n }\n\n /**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n function getRoundedOffsets(data, shouldRound) {\n let _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n let isVertical = [\"left\", \"right\"].indexOf(data.placement) !== -1;\n let isVariation = data.placement.indexOf(\"-\") !== -1;\n let sameWidthOddness = reference.width % 2 === popper.width % 2;\n let bothOddWidth = reference.width % 2 === 1 && popper.width % 2 === 1;\n let noRound = function noRound(v) {\n return v;\n };\n\n let horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthOddness\n ? Math.round\n : Math.floor;\n let verticalToInteger = !shouldRound ? noRound : Math.round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n }\n\n let isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function computeStyle(data, options) {\n let x = options.x,\n y = options.y;\n let popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n let legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n (modifier) => {\n return modifier.name === \"applyStyle\";\n }\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 let gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n let offsetParent = getOffsetParent(data.instance.popper);\n let offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n let styles = {\n position: popper.position,\n };\n\n let offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n let sideA = x === \"bottom\" ? \"top\" : \"bottom\";\n let 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 let 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 = void 0,\n top = void 0;\n if (sideA === \"bottom\") {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === \"HTML\") {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === \"right\") {\n if (offsetParent.nodeName === \"HTML\") {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = \"transform\";\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n let invertTop = sideA === \"bottom\" ? -1 : 1;\n let 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 let attributes = {\n \"x-placement\": data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n }\n\n /**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\n function isModifierRequired(modifiers, requestingName, requestedName) {\n let requesting = find(modifiers, (_ref) => {\n let name = _ref.name;\n return name === requestingName;\n });\n\n let 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 let _requesting = `\\`${requestingName}\\``;\n let 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 /**\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 */\n function arrow(data, options) {\n let _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, \"arrow\", \"keepTogether\")) {\n return data;\n }\n\n 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 let placement = data.placement.split(\"-\")[0];\n let _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n let isVertical = [\"left\", \"right\"].indexOf(placement) !== -1;\n\n let len = isVertical ? \"height\" : \"width\";\n let sideCapitalized = isVertical ? \"Top\" : \"Left\";\n let side = sideCapitalized.toLowerCase();\n let altSide = isVertical ? \"left\" : \"top\";\n let opSide = isVertical ? \"bottom\" : \"right\";\n let arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\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 let 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 let css = getStyleComputedProperty(data.instance.popper);\n let popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n let 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(\n Math.min(popper[len] - arrowElementSize, sideValue),\n 0\n );\n\n data.arrowElement = arrowElement;\n data.offsets.arrow =\n ((_data$offsets$arrow = {}),\n defineProperty(_data$offsets$arrow, side, Math.round(sideValue)),\n defineProperty(_data$offsets$arrow, altSide, \"\"),\n _data$offsets$arrow);\n\n return data;\n }\n\n /**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\n 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 /**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\n let placements = [\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\n // Get rid of `auto` `auto-start` and `auto-end`\n let 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 */\n function clockwise(placement) {\n let counter =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n let index = validPlacements.indexOf(placement);\n let arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n }\n\n let 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 */\n 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 let 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 let popperOffsets = data.offsets.popper;\n let refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n let floor = Math.floor;\n let 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 let overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n let overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n let overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n let overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n let 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 let isVertical = [\"top\", \"bottom\"].indexOf(placement) !== -1;\n let 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 = _extends(\n {},\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 /**\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 */\n function keepTogether(data) {\n let _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n let placement = data.placement.split(\"-\")[0];\n let floor = Math.floor;\n let isVertical = [\"top\", \"bottom\"].indexOf(placement) !== -1;\n let side = isVertical ? \"right\" : \"bottom\";\n let opSide = isVertical ? \"left\" : \"top\";\n let 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\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 */\n function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n let split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n let value = +split[1];\n let 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 = void 0;\n switch (unit) {\n case \"%p\":\n element = popperOffsets;\n break;\n case \"%\":\n case \"%r\":\n default:\n element = referenceOffsets;\n }\n\n let 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 = void 0;\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 */\n function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n let 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 let 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 let fragments = offset.split(/(\\+|\\-)/).map((frag) => {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n let divider = fragments.indexOf(\n find(fragments, (frag) => {\n return frag.search(/,|\\s/) !== -1;\n })\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 let splitRegex = /\\s*,\\s*|\\s+/;\n let ops =\n 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 let 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) => {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n })\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 */\n function offset(data, _ref) {\n let offset = _ref.offset;\n let placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n let basePlacement = placement.split(\"-\")[0];\n\n let offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === \"left\") {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === \"right\") {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === \"top\") {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === \"bottom\") {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n }\n\n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n 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 let transformProp = getSupportedPropertyName(\"transform\");\n let popperStyles = data.instance.popper.style; // assignment to help minification\n let top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = \"\";\n popperStyles.left = \"\";\n popperStyles[transformProp] = \"\";\n\n let 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 let order = options.priority;\n let popper = data.offsets.popper;\n\n let check = {\n primary: function 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 defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n let 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 defineProperty({}, mainSide, value);\n },\n };\n\n order.forEach((placement) => {\n let side =\n [\"left\", \"top\"].indexOf(placement) !== -1 ? \"primary\" : \"secondary\";\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n }\n\n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function shift(data) {\n let placement = data.placement;\n let basePlacement = placement.split(\"-\")[0];\n let shiftvariation = placement.split(\"-\")[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n let _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n let isVertical = [\"bottom\", \"top\"].indexOf(basePlacement) !== -1;\n let side = isVertical ? \"left\" : \"top\";\n let measurement = isVertical ? \"width\" : \"height\";\n\n let shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty(\n {},\n side,\n reference[side] + reference[measurement] - popper[measurement]\n ),\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n }\n\n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function hide(data) {\n if (\n !isModifierRequired(data.instance.modifiers, \"hide\", \"preventOverflow\")\n ) {\n return data;\n }\n\n let refRect = data.offsets.reference;\n let bound = find(data.instance.modifiers, (modifier) => {\n return 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\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 */\n function inner(data) {\n let placement = data.placement;\n let basePlacement = placement.split(\"-\")[0];\n let _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n let isHoriz = [\"left\", \"right\"].indexOf(basePlacement) !== -1;\n\n let 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\n /**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n /**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n let modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: [\"left\", \"right\", \"top\", \"bottom\"],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: \"scrollParent\",\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: \"[x-arrow]\",\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: \"flip\",\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: \"viewport\",\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: \"bottom\",\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: \"right\",\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n };\n\n /**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n /**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\n let Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: \"bottom\",\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n };\n\n /**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n /**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n // Utils\n // Methods\n let Popper = (function () {\n /**\n * Creates 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 the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n let _this = this;\n\n let options =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(\n _extends({}, Popper.Defaults.modifiers, options.modifiers)\n ).forEach((name) => {\n _this.options.modifiers[name] = _extends(\n {},\n Popper.Defaults.modifiers[name] || {},\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 return _extends(\n {\n name,\n },\n _this.options.modifiers[name]\n );\n })\n // sort the modifiers by order\n .sort((a, b) => {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach((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 let eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n createClass(Popper, [\n {\n key: \"update\",\n value: function update$$1() {\n return update.call(this);\n },\n },\n {\n key: \"destroy\",\n value: function destroy$$1() {\n return destroy.call(this);\n },\n },\n {\n key: \"enableEventListeners\",\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n },\n },\n {\n key: \"disableEventListeners\",\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n },\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n },\n ]);\n return Popper;\n })();\n\n /**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n Popper.Utils = (typeof window !== \"undefined\" ? window : global).PopperUtils;\n Popper.placements = placements;\n Popper.Defaults = Defaults;\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n let NAME$4 = \"dropdown\";\n let VERSION$4 = \"4.2.1\";\n let DATA_KEY$4 = \"bs.dropdown\";\n let EVENT_KEY$4 = `.${DATA_KEY$4}`;\n let DATA_API_KEY$4 = \".data-api\";\n let JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];\n let ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n let SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n let TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n let ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n let ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n let RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n let REGEXP_KEYDOWN = new RegExp(\n `${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`\n );\n let Event$4 = {\n HIDE: `hide${EVENT_KEY$4}`,\n HIDDEN: `hidden${EVENT_KEY$4}`,\n SHOW: `show${EVENT_KEY$4}`,\n SHOWN: `shown${EVENT_KEY$4}`,\n CLICK: `click${EVENT_KEY$4}`,\n CLICK_DATA_API: `click${EVENT_KEY$4}${DATA_API_KEY$4}`,\n KEYDOWN_DATA_API: `keydown${EVENT_KEY$4}${DATA_API_KEY$4}`,\n KEYUP_DATA_API: `keyup${EVENT_KEY$4}${DATA_API_KEY$4}`,\n };\n let ClassName$4 = {\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 let Selector$4 = {\n DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n FORM_CHILD: \".dropdown form\",\n MENU: \".dropdown-menu\",\n NAVBAR_NAV: \".navbar-nav\",\n VISIBLE_ITEMS:\n \".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\",\n };\n let 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 let Default$2 = {\n offset: 0,\n flip: true,\n boundary: \"scrollParent\",\n reference: \"toggle\",\n display: \"dynamic\",\n };\n let DefaultType$2 = {\n offset: \"(number|string|function)\",\n flip: \"boolean\",\n boundary: \"(string|element)\",\n reference: \"(string|element)\",\n display: \"string\",\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n };\n\n let Dropdown =\n /*#__PURE__*/\n (function () {\n function Dropdown(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 } // Getters\n\n let _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (\n this._element.disabled ||\n $(this._element).hasClass(ClassName$4.DISABLED)\n ) {\n return;\n }\n\n let parent = Dropdown._getParentFromElement(this._element);\n\n let isActive = $(this._menu).hasClass(ClassName$4.SHOW);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n let relatedTarget = {\n relatedTarget: this._element,\n };\n let showEvent = $.Event(Event$4.SHOW, relatedTarget);\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Disable totally Popper.js for Dropdown in Navbar\n\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(\n \"Bootstrap's dropdowns require Popper.js (https://popper.js.org/)\"\n );\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; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== \"undefined\") {\n referenceElement = this._config.reference[0];\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\n if (this._config.boundary !== \"scrollParent\") {\n $(parent).addClass(ClassName$4.POSITION_STATIC);\n }\n\n this._popper = new Popper(\n referenceElement,\n this._menu,\n this._getPopperConfig()\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\n if (\n \"ontouchstart\" in document.documentElement &&\n $(parent).closest(Selector$4.NAVBAR_NAV).length === 0\n ) {\n $(document.body).children().on(\"mouseover\", null, $.noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute(\"aria-expanded\", true);\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent)\n .toggleClass(ClassName$4.SHOW)\n .trigger($.Event(Event$4.SHOWN, relatedTarget));\n };\n\n _proto.show = function show() {\n if (\n this._element.disabled ||\n $(this._element).hasClass(ClassName$4.DISABLED) ||\n $(this._menu).hasClass(ClassName$4.SHOW)\n ) {\n return;\n }\n\n let relatedTarget = {\n relatedTarget: this._element,\n };\n let showEvent = $.Event(Event$4.SHOW, relatedTarget);\n\n let parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent)\n .toggleClass(ClassName$4.SHOW)\n .trigger($.Event(Event$4.SHOWN, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (\n this._element.disabled ||\n $(this._element).hasClass(ClassName$4.DISABLED) ||\n !$(this._menu).hasClass(ClassName$4.SHOW)\n ) {\n return;\n }\n\n let relatedTarget = {\n relatedTarget: this._element,\n };\n let hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n\n let parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent)\n .toggleClass(ClassName$4.SHOW)\n .trigger($.Event(Event$4.HIDDEN, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$4);\n $(this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n }; // Private\n\n _proto._addEventListeners = function _addEventListeners() {\n let _this = this;\n\n $(this._element).on(Event$4.CLICK, (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread(\n {},\n this.constructor.Default,\n $(this._element).data(),\n config\n );\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n let parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(Selector$4.MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n let $parentDropdown = $(this._element.parentNode);\n let placement = AttachmentMap.BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {\n placement = AttachmentMap.TOP;\n\n if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.TOPEND;\n }\n } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT;\n } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {\n placement = AttachmentMap.LEFT;\n } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $(this._element).closest(\".navbar\").length > 0;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n let _this2 = this;\n\n let offsetConf = {};\n\n if (typeof this._config.offset === \"function\") {\n offsetConf.fn = function (data) {\n data.offsets = _objectSpread(\n {},\n data.offsets,\n _this2._config.offset(data.offsets) || {}\n );\n return data;\n };\n } else {\n offsetConf.offset = this._config.offset;\n }\n\n let 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 }, // Disable Popper.js if we have a static display\n };\n\n if (this._config.display === \"static\") {\n popperConfig.modifiers.applyStyle = {\n enabled: false,\n };\n }\n\n return popperConfig;\n }; // Static\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY$4);\n\n let _config = typeof config === \"object\" ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY$4, data);\n }\n\n if (typeof config === \"string\") {\n if (typeof data[config] === \"undefined\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (\n event &&\n (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n (event.type === \"keyup\" && event.which !== TAB_KEYCODE))\n ) {\n return;\n }\n\n let toggles = [].slice.call(\n document.querySelectorAll(Selector$4.DATA_TOGGLE)\n );\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n let parent = Dropdown._getParentFromElement(toggles[i]);\n\n let context = $(toggles[i]).data(DATA_KEY$4);\n let 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 let dropdownMenu = context._menu;\n\n if (!$(parent).hasClass(ClassName$4.SHOW)) {\n continue;\n }\n\n if (\n event &&\n ((event.type === \"click\" &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === \"keyup\" && event.which === TAB_KEYCODE)) &&\n $.contains(parent, event.target)\n ) {\n continue;\n }\n\n let hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if (\"ontouchstart\" in document.documentElement) {\n $(document.body).children().off(\"mouseover\", null, $.noop);\n }\n\n toggles[i].setAttribute(\"aria-expanded\", \"false\");\n $(dropdownMenu).removeClass(ClassName$4.SHOW);\n $(parent)\n .removeClass(ClassName$4.SHOW)\n .trigger($.Event(Event$4.HIDDEN, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n let parent;\n let selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n }; // eslint-disable-next-line complexity\n\n Dropdown._dataApiKeydownHandler = function _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 (\n /input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE ||\n (event.which !== ESCAPE_KEYCODE &&\n ((event.which !== ARROW_DOWN_KEYCODE &&\n event.which !== ARROW_UP_KEYCODE) ||\n $(event.target).closest(Selector$4.MENU).length))\n : !REGEXP_KEYDOWN.test(event.which)\n ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {\n return;\n }\n\n let parent = Dropdown._getParentFromElement(this);\n\n let isActive = $(parent).hasClass(ClassName$4.SHOW);\n\n if (\n !isActive ||\n (isActive &&\n (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE))\n ) {\n if (event.which === ESCAPE_KEYCODE) {\n let toggle = parent.querySelector(Selector$4.DATA_TOGGLE);\n $(toggle).trigger(\"focus\");\n }\n\n $(this).trigger(\"click\");\n return;\n }\n\n let items = [].slice.call(\n parent.querySelectorAll(Selector$4.VISIBLE_ITEMS)\n );\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) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [\n {\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n },\n },\n {\n key: \"Default\",\n get: function get() {\n return Default$2;\n },\n },\n {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n },\n },\n ]);\n\n return Dropdown;\n })();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(\n Event$4.KEYDOWN_DATA_API,\n Selector$4.DATA_TOGGLE,\n Dropdown._dataApiKeydownHandler\n )\n .on(\n Event$4.KEYDOWN_DATA_API,\n Selector$4.MENU,\n Dropdown._dataApiKeydownHandler\n )\n .on(\n `${Event$4.CLICK_DATA_API} ${Event$4.KEYUP_DATA_API}`,\n Dropdown._clearMenus\n )\n .on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($(this), \"toggle\");\n })\n .on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, (e) => {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$4] = Dropdown._jQueryInterface;\n $.fn[NAME$4].Constructor = Dropdown;\n\n $.fn[NAME$4].noConflict = function () {\n $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n let NAME$5 = \"modal\";\n let VERSION$5 = \"4.2.1\";\n let DATA_KEY$5 = \"bs.modal\";\n let EVENT_KEY$5 = `.${DATA_KEY$5}`;\n let DATA_API_KEY$5 = \".data-api\";\n let JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];\n let ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n let Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true,\n };\n let DefaultType$3 = {\n backdrop: \"(boolean|string)\",\n keyboard: \"boolean\",\n focus: \"boolean\",\n show: \"boolean\",\n };\n let Event$5 = {\n HIDE: `hide${EVENT_KEY$5}`,\n HIDDEN: `hidden${EVENT_KEY$5}`,\n SHOW: `show${EVENT_KEY$5}`,\n SHOWN: `shown${EVENT_KEY$5}`,\n FOCUSIN: `focusin${EVENT_KEY$5}`,\n RESIZE: `resize${EVENT_KEY$5}`,\n CLICK_DISMISS: `click.dismiss${EVENT_KEY$5}`,\n KEYDOWN_DISMISS: `keydown.dismiss${EVENT_KEY$5}`,\n MOUSEUP_DISMISS: `mouseup.dismiss${EVENT_KEY$5}`,\n MOUSEDOWN_DISMISS: `mousedown.dismiss${EVENT_KEY$5}`,\n CLICK_DATA_API: `click${EVENT_KEY$5}${DATA_API_KEY$5}`,\n };\n let ClassName$5 = {\n SCROLLBAR_MEASURER: \"modal-scrollbar-measure\",\n BACKDROP: \"modal-backdrop\",\n OPEN: \"modal-open\",\n FADE: \"fade\",\n SHOW: \"show\",\n };\n let Selector$5 = {\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 * Class Definition\n * ------------------------------------------------------------------------\n */\n };\n\n let Modal =\n /*#__PURE__*/\n (function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(Selector$5.DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n let _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n let _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n this._isTransitioning = true;\n }\n\n let showEvent = $.Event(Event$5.SHOW, {\n relatedTarget,\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\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(this._element).on(\n Event$5.CLICK_DISMISS,\n Selector$5.DATA_DISMISS,\n (event) => {\n return _this.hide(event);\n }\n );\n $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, () => {\n $(_this._element).one(Event$5.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(() => {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n let _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n let hideEvent = $.Event(Event$5.HIDE);\n $(this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n let transition = $(this._element).hasClass(ClassName$5.FADE);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(document).off(Event$5.FOCUSIN);\n $(this._element).removeClass(ClassName$5.SHOW);\n $(this._element).off(Event$5.CLICK_DISMISS);\n $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);\n\n if (transition) {\n let transitionDuration = Util.getTransitionDurationFromElement(\n this._element\n );\n $(this._element)\n .one(Util.TRANSITION_END, (event) => {\n return _this2._hideModal(event);\n })\n .emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach((htmlElement) => {\n return $(htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n\n $(document).off(Event$5.FOCUSIN);\n $.removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n }; // Private\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n let _this3 = this;\n\n let transition = $(this._element).hasClass(ClassName$5.FADE);\n\n if (\n !this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE\n ) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = \"block\";\n\n this._element.removeAttribute(\"aria-hidden\");\n\n this._element.setAttribute(\"aria-modal\", true);\n\n this._element.scrollTop = 0;\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $(this._element).addClass(ClassName$5.SHOW);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n let shownEvent = $.Event(Event$5.SHOWN, {\n relatedTarget,\n });\n\n let transitionComplete = function transitionComplete() {\n if (_this3._config.focus) {\n _this3._element.focus();\n }\n\n _this3._isTransitioning = false;\n $(_this3._element).trigger(shownEvent);\n };\n\n if (transition) {\n let transitionDuration = Util.getTransitionDurationFromElement(\n this._dialog\n );\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n let _this4 = this;\n\n $(document)\n .off(Event$5.FOCUSIN) // Guard against infinite focus loop\n .on(Event$5.FOCUSIN, (event) => {\n if (\n document !== event.target &&\n _this4._element !== event.target &&\n $(_this4._element).has(event.target).length === 0\n ) {\n _this4._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n let _this5 = this;\n\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event$5.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE$1) {\n event.preventDefault();\n\n _this5.hide();\n }\n });\n } else if (!this._isShown) {\n $(this._element).off(Event$5.KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n let _this6 = this;\n\n if (this._isShown) {\n $(window).on(Event$5.RESIZE, (event) => {\n return _this6.handleUpdate(event);\n });\n } else {\n $(window).off(Event$5.RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n let _this7 = this;\n\n this._element.style.display = \"none\";\n\n this._element.setAttribute(\"aria-hidden\", true);\n\n this._element.removeAttribute(\"aria-modal\");\n\n this._isTransitioning = false;\n\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName$5.OPEN);\n\n _this7._resetAdjustments();\n\n _this7._resetScrollbar();\n\n $(_this7._element).trigger(Event$5.HIDDEN);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n let _this8 = this;\n\n let animate = $(this._element).hasClass(ClassName$5.FADE)\n ? ClassName$5.FADE\n : \"\";\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement(\"div\");\n this._backdrop.className = ClassName$5.BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $(this._backdrop).appendTo(document.body);\n $(this._element).on(Event$5.CLICK_DISMISS, (event) => {\n if (_this8._ignoreBackdropClick) {\n _this8._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this8._config.backdrop === \"static\") {\n _this8._element.focus();\n } else {\n _this8.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $(this._backdrop).addClass(ClassName$5.SHOW);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n let backdropTransitionDuration =\n Util.getTransitionDurationFromElement(this._backdrop);\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName$5.SHOW);\n\n let callbackRemove = function callbackRemove() {\n _this8._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n let _backdropTransitionDuration =\n 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 // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _proto._adjustDialog = function _adjustDialog() {\n let 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 _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = \"\";\n this._element.style.paddingRight = \"\";\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n let rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n let _this9 = this;\n\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 let fixedContent = [].slice.call(\n document.querySelectorAll(Selector$5.FIXED_CONTENT)\n );\n let stickyContent = [].slice.call(\n document.querySelectorAll(Selector$5.STICKY_CONTENT)\n ); // Adjust fixed content padding\n\n $(fixedContent).each((index, element) => {\n let actualPadding = element.style.paddingRight;\n let calculatedPadding = $(element).css(\"padding-right\");\n $(element)\n .data(\"padding-right\", actualPadding)\n .css(\n \"padding-right\",\n `${parseFloat(calculatedPadding) + _this9._scrollbarWidth}px`\n );\n }); // Adjust sticky content margin\n\n $(stickyContent).each((index, element) => {\n let actualMargin = element.style.marginRight;\n let calculatedMargin = $(element).css(\"margin-right\");\n $(element)\n .data(\"margin-right\", actualMargin)\n .css(\n \"margin-right\",\n `${parseFloat(calculatedMargin) - _this9._scrollbarWidth}px`\n );\n }); // Adjust body padding\n\n let actualPadding = document.body.style.paddingRight;\n let calculatedPadding = $(document.body).css(\"padding-right\");\n $(document.body)\n .data(\"padding-right\", actualPadding)\n .css(\n \"padding-right\",\n `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n );\n }\n\n $(document.body).addClass(ClassName$5.OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n let fixedContent = [].slice.call(\n document.querySelectorAll(Selector$5.FIXED_CONTENT)\n );\n $(fixedContent).each((index, element) => {\n let padding = $(element).data(\"padding-right\");\n $(element).removeData(\"padding-right\");\n element.style.paddingRight = padding ? padding : \"\";\n }); // Restore sticky content\n\n let elements = [].slice.call(\n document.querySelectorAll(`${Selector$5.STICKY_CONTENT}`)\n );\n $(elements).each((index, element) => {\n let margin = $(element).data(\"margin-right\");\n\n if (typeof margin !== \"undefined\") {\n $(element).css(\"margin-right\", margin).removeData(\"margin-right\");\n }\n }); // Restore body padding\n\n let padding = $(document.body).data(\"padding-right\");\n $(document.body).removeData(\"padding-right\");\n document.body.style.paddingRight = padding ? padding : \"\";\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n let scrollDiv = document.createElement(\"div\");\n scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n let scrollbarWidth =\n scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n }; // Static\n\n Modal._jQueryInterface = function _jQueryInterface(\n config,\n relatedTarget\n ) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY$5);\n\n let _config = _objectSpread(\n {},\n Default$3,\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$5, data);\n }\n\n if (typeof config === \"string\") {\n if (typeof data[config] === \"undefined\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [\n {\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n },\n },\n {\n key: \"Default\",\n get: function get() {\n return Default$3;\n },\n },\n ]);\n\n return Modal;\n })();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event$5.CLICK_DATA_API,\n Selector$5.DATA_TOGGLE,\n function (event) {\n let _this10 = this;\n\n let target;\n let selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n let config = $(target).data(DATA_KEY$5)\n ? \"toggle\"\n : _objectSpread({}, $(target).data(), $(this).data());\n\n if (this.tagName === \"A\" || this.tagName === \"AREA\") {\n event.preventDefault();\n }\n\n var $target = $(target).one(Event$5.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$5.HIDDEN, () => {\n if ($(_this10).is(\":visible\")) {\n _this10.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($(target), config, this);\n }\n );\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$5] = Modal._jQueryInterface;\n $.fn[NAME$5].Constructor = Modal;\n\n $.fn[NAME$5].noConflict = function () {\n $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n let NAME$6 = \"tooltip\";\n let VERSION$6 = \"4.2.1\";\n let DATA_KEY$6 = \"bs.tooltip\";\n let EVENT_KEY$6 = `.${DATA_KEY$6}`;\n let JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];\n let CLASS_PREFIX = \"bs-tooltip\";\n let BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, \"g\");\n let DefaultType$4 = {\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 let AttachmentMap$1 = {\n AUTO: \"auto\",\n TOP: \"top\",\n RIGHT: \"right\",\n BOTTOM: \"bottom\",\n LEFT: \"left\",\n };\n let Default$4 = {\n animation: true,\n template:\n '
' +\n '
' +\n '
',\n trigger: \"hover focus\",\n title: \"\",\n delay: 0,\n html: false,\n selector: false,\n placement: \"top\",\n offset: 0,\n container: false,\n fallbackPlacement: \"flip\",\n boundary: \"scrollParent\",\n };\n let HoverState = {\n SHOW: \"show\",\n OUT: \"out\",\n };\n let Event$6 = {\n HIDE: `hide${EVENT_KEY$6}`,\n HIDDEN: `hidden${EVENT_KEY$6}`,\n SHOW: `show${EVENT_KEY$6}`,\n SHOWN: `shown${EVENT_KEY$6}`,\n INSERTED: `inserted${EVENT_KEY$6}`,\n CLICK: `click${EVENT_KEY$6}`,\n FOCUSIN: `focusin${EVENT_KEY$6}`,\n FOCUSOUT: `focusout${EVENT_KEY$6}`,\n MOUSEENTER: `mouseenter${EVENT_KEY$6}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY$6}`,\n };\n let ClassName$6 = {\n FADE: \"fade\",\n SHOW: \"show\",\n };\n let Selector$6 = {\n TOOLTIP: \".tooltip\",\n TOOLTIP_INNER: \".tooltip-inner\",\n ARROW: \".arrow\",\n };\n let Trigger = {\n HOVER: \"hover\",\n FOCUS: \"focus\",\n CLICK: \"click\",\n MANUAL: \"manual\",\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n };\n\n let Tooltip =\n /*#__PURE__*/\n (function () {\n function Tooltip(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === \"undefined\") {\n throw new TypeError(\n \"Bootstrap's tooltips require Popper.js (https://popper.js.org/)\"\n );\n } // private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = \"\";\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n let _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n let 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$6.SHOW)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $.removeData(this.element, this.constructor.DATA_KEY);\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\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 _proto.show = function show() {\n let _this = this;\n\n if ($(this.element).css(\"display\") === \"none\") {\n throw new Error(\"Please use show on visible elements\");\n }\n\n let showEvent = $.Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent);\n let shadowRoot = Util.findShadowRoot(this.element);\n let isInTheDom = $.contains(\n shadowRoot !== null\n ? shadowRoot\n : this.element.ownerDocument.documentElement,\n this.element\n );\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n let tip = this.getTipElement();\n let tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute(\"id\", tipId);\n this.element.setAttribute(\"aria-describedby\", tipId);\n this.setContent();\n\n if (this.config.animation) {\n $(tip).addClass(ClassName$6.FADE);\n }\n\n let placement =\n typeof this.config.placement === \"function\"\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement;\n\n let attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n let container = this._getContainer();\n\n $(tip).data(this.constructor.DATA_KEY, this);\n\n if (\n !$.contains(this.element.ownerDocument.documentElement, this.tip)\n ) {\n $(tip).appendTo(container);\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED);\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$6.ARROW,\n },\n preventOverflow: {\n boundariesElement: this.config.boundary,\n },\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this._handlePopperPlacementChange(data);\n },\n });\n $(tip).addClass(ClassName$6.SHOW); // 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\n if (\"ontouchstart\" in document.documentElement) {\n $(document.body).children().on(\"mouseover\", null, $.noop);\n }\n\n let complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n let prevHoverState = _this._hoverState;\n _this._hoverState = null;\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$6.FADE)) {\n let transitionDuration = Util.getTransitionDurationFromElement(\n this.tip\n );\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n let _this2 = this;\n\n let tip = this.getTipElement();\n let hideEvent = $.Event(this.constructor.Event.HIDE);\n\n let complete = function complete() {\n if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute(\"aria-describedby\");\n\n $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._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$6.SHOW); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\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$6.FADE)) {\n let transitionDuration = Util.getTransitionDurationFromElement(tip);\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = \"\";\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n }; // Protected\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n let tip = this.getTipElement();\n this.setElementContent(\n $(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)),\n this.getTitle()\n );\n $(tip).removeClass(`${ClassName$6.FADE} ${ClassName$6.SHOW}`);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n let html = this.config.html;\n\n if (\n typeof content === \"object\" &&\n (content.nodeType || content.jquery)\n ) {\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 _proto.getTitle = function getTitle() {\n let title = this.element.getAttribute(\"data-original-title\");\n\n if (!title) {\n title =\n typeof this.config.title === \"function\"\n ? this.config.title.call(this.element)\n : this.config.title;\n }\n\n return title;\n }; // Private\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container);\n }\n\n return $(document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap$1[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n let _this3 = this;\n\n let triggers = this.config.trigger.split(\" \");\n triggers.forEach((trigger) => {\n if (trigger === \"click\") {\n $(_this3.element).on(\n _this3.constructor.Event.CLICK,\n _this3.config.selector,\n (event) => {\n return _this3.toggle(event);\n }\n );\n } else if (trigger !== Trigger.MANUAL) {\n let eventIn =\n trigger === Trigger.HOVER\n ? _this3.constructor.Event.MOUSEENTER\n : _this3.constructor.Event.FOCUSIN;\n let eventOut =\n trigger === Trigger.HOVER\n ? _this3.constructor.Event.MOUSELEAVE\n : _this3.constructor.Event.FOCUSOUT;\n $(_this3.element)\n .on(eventIn, _this3.config.selector, (event) => {\n return _this3._enter(event);\n })\n .on(eventOut, _this3.config.selector, (event) => {\n return _this3._leave(event);\n });\n }\n });\n $(this.element)\n .closest(\".modal\")\n .on(\"hide.bs.modal\", () => {\n if (_this3.element) {\n _this3.hide();\n }\n });\n\n if (this.config.selector) {\n this.config = _objectSpread({}, this.config, {\n trigger: \"manual\",\n selector: \"\",\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n let titleType = typeof this.element.getAttribute(\"data-original-title\");\n\n if (this.element.getAttribute(\"title\") || titleType !== \"string\") {\n this.element.setAttribute(\n \"data-original-title\",\n this.element.getAttribute(\"title\") || \"\"\n );\n this.element.setAttribute(\"title\", \"\");\n }\n };\n\n _proto._enter = function _enter(event, context) {\n let dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n );\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[\n event.type === \"focusin\" ? Trigger.FOCUS : Trigger.HOVER\n ] = true;\n }\n\n if (\n $(context.getTipElement()).hasClass(ClassName$6.SHOW) ||\n context._hoverState === HoverState.SHOW\n ) {\n context._hoverState = HoverState.SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\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 _proto._leave = function _leave(event, context) {\n let dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n );\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[\n event.type === \"focusout\" ? Trigger.FOCUS : Trigger.HOVER\n ] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n 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 _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (let trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread(\n {},\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(NAME$6, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n let config = {};\n\n if (this.config) {\n for (let 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 _proto._cleanTipClass = function _cleanTipClass() {\n let $tip = $(this.getTipElement());\n let tabClass = $tip.attr(\"class\").match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(\"\"));\n }\n };\n\n _proto._handlePopperPlacementChange =\n function _handlePopperPlacementChange(popperData) {\n let popperInstance = popperData.instance;\n this.tip = popperInstance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n let tip = this.getTipElement();\n let initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute(\"x-placement\") !== null) {\n return;\n }\n\n $(tip).removeClass(ClassName$6.FADE);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n }; // Static\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY$6);\n\n let _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$6, data);\n }\n\n if (typeof config === \"string\") {\n if (typeof data[config] === \"undefined\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [\n {\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n },\n },\n {\n key: \"Default\",\n get: function get() {\n return Default$4;\n },\n },\n {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n },\n },\n {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n },\n },\n {\n key: \"Event\",\n get: function get() {\n return Event$6;\n },\n },\n {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n },\n },\n {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n },\n },\n ]);\n\n return Tooltip;\n })();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$6] = Tooltip._jQueryInterface;\n $.fn[NAME$6].Constructor = Tooltip;\n\n $.fn[NAME$6].noConflict = function () {\n $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n let NAME$7 = \"popover\";\n let VERSION$7 = \"4.2.1\";\n let DATA_KEY$7 = \"bs.popover\";\n let EVENT_KEY$7 = `.${DATA_KEY$7}`;\n let JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];\n let CLASS_PREFIX$1 = \"bs-popover\";\n let BSCLS_PREFIX_REGEX$1 = new RegExp(`(^|\\\\s)${CLASS_PREFIX$1}\\\\S+`, \"g\");\n\n let Default$5 = _objectSpread({}, Tooltip.Default, {\n placement: \"right\",\n trigger: \"click\",\n content: \"\",\n template:\n '
' +\n '
' +\n '

' +\n '
',\n });\n\n let DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {\n content: \"(string|element|function)\",\n });\n\n let ClassName$7 = {\n FADE: \"fade\",\n SHOW: \"show\",\n };\n let Selector$7 = {\n TITLE: \".popover-header\",\n CONTENT: \".popover-body\",\n };\n let Event$7 = {\n HIDE: `hide${EVENT_KEY$7}`,\n HIDDEN: `hidden${EVENT_KEY$7}`,\n SHOW: `show${EVENT_KEY$7}`,\n SHOWN: `shown${EVENT_KEY$7}`,\n INSERTED: `inserted${EVENT_KEY$7}`,\n CLICK: `click${EVENT_KEY$7}`,\n FOCUSIN: `focusin${EVENT_KEY$7}`,\n FOCUSOUT: `focusout${EVENT_KEY$7}`,\n MOUSEENTER: `mouseenter${EVENT_KEY$7}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY$7}`,\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n };\n\n let Popover =\n /*#__PURE__*/\n (function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n let _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX$1}-${attachment}`);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n let $tip = $(this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());\n\n let content = this._getContent();\n\n if (typeof content === \"function\") {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(Selector$7.CONTENT), content);\n $tip.removeClass(`${ClassName$7.FADE} ${ClassName$7.SHOW}`);\n }; // Private\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute(\"data-content\") || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n let $tip = $(this.getTipElement());\n let tabClass = $tip.attr(\"class\").match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(\"\"));\n }\n }; // Static\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY$7);\n\n let _config = typeof config === \"object\" ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $(this).data(DATA_KEY$7, data);\n }\n\n if (typeof config === \"string\") {\n if (typeof data[config] === \"undefined\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [\n {\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n },\n },\n {\n key: \"Default\",\n get: function get() {\n return Default$5;\n },\n },\n {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n },\n },\n {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n },\n },\n {\n key: \"Event\",\n get: function get() {\n return Event$7;\n },\n },\n {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n },\n },\n {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n },\n },\n ]);\n\n return Popover;\n })(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$7] = Popover._jQueryInterface;\n $.fn[NAME$7].Constructor = Popover;\n\n $.fn[NAME$7].noConflict = function () {\n $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n let NAME$8 = \"scrollspy\";\n let VERSION$8 = \"4.2.1\";\n let DATA_KEY$8 = \"bs.scrollspy\";\n let EVENT_KEY$8 = `.${DATA_KEY$8}`;\n let DATA_API_KEY$6 = \".data-api\";\n let JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];\n let Default$6 = {\n offset: 10,\n method: \"auto\",\n target: \"\",\n };\n let DefaultType$6 = {\n offset: \"number\",\n method: \"string\",\n target: \"(string|element)\",\n };\n let Event$8 = {\n ACTIVATE: `activate${EVENT_KEY$8}`,\n SCROLL: `scroll${EVENT_KEY$8}`,\n LOAD_DATA_API: `load${EVENT_KEY$8}${DATA_API_KEY$6}`,\n };\n let ClassName$8 = {\n DROPDOWN_ITEM: \"dropdown-item\",\n DROPDOWN_MENU: \"dropdown-menu\",\n ACTIVE: \"active\",\n };\n let Selector$8 = {\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 let OffsetMethod = {\n OFFSET: \"offset\",\n POSITION: \"position\",\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n };\n\n let ScrollSpy =\n /*#__PURE__*/\n (function () {\n function ScrollSpy(element, config) {\n let _this = this;\n\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$8.NAV_LINKS},${this._config.target} ${Selector$8.LIST_ITEMS},${this._config.target} ${Selector$8.DROPDOWN_ITEMS}`;\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $(this._scrollElement).on(Event$8.SCROLL, (event) => {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n let _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n let _this2 = this;\n\n let autoMethod =\n this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET\n : OffsetMethod.POSITION;\n let offsetMethod =\n this._config.method === \"auto\" ? autoMethod : this._config.method;\n let offsetBase =\n offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n let targets = [].slice.call(document.querySelectorAll(this._selector));\n targets\n .map((element) => {\n let target;\n let targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n let targetBCR = target.getBoundingClientRect();\n\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\n return null;\n })\n .filter((item) => {\n return item;\n })\n .sort((a, b) => {\n return a[0] - b[0];\n })\n .forEach((item) => {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$8);\n $(this._scrollElement).off(EVENT_KEY$8);\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 }; // Private\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread(\n {},\n Default$6,\n typeof config === \"object\" && config ? config : {}\n );\n\n if (typeof config.target !== \"string\") {\n let id = $(config.target).attr(\"id\");\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $(config.target).attr(\"id\", id);\n }\n\n config.target = `#${id}`;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset\n : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return (\n this._scrollElement.scrollHeight ||\n Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n );\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight\n : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n let scrollTop = this._getScrollTop() + this._config.offset;\n\n let scrollHeight = this._getScrollHeight();\n\n let maxScroll =\n this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n let target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (\n this._activeTarget &&\n scrollTop < this._offsets[0] &&\n this._offsets[0] > 0\n ) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n let offsetLength = this._offsets.length;\n\n for (let i = offsetLength; i--; ) {\n let isActiveTarget =\n 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 _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n let queries = this._selector.split(\",\").map((selector) => {\n return `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`;\n });\n\n let $link = $(\n [].slice.call(document.querySelectorAll(queries.join(\",\")))\n );\n\n if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {\n $link\n .closest(Selector$8.DROPDOWN)\n .find(Selector$8.DROPDOWN_TOGGLE)\n .addClass(ClassName$8.ACTIVE);\n $link.addClass(ClassName$8.ACTIVE);\n } else {\n // Set triggered link as active\n $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active\n // With both