{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/constants/popper.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/click-out.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/focus-in.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/dropdown.js","webpack:///./node_modules/bootstrap-vue/esm/constants/classes.js"],"names":["PLACEMENT_TOP_START","PLACEMENT_TOP_END","PLACEMENT_BOTTOM_START","PLACEMENT_BOTTOM_END","PLACEMENT_RIGHT_START","PLACEMENT_LEFT_START","clickOutMixin","extend","data","listenForClickOut","watch","newValue","oldValue","this","clickOutElement","clickOutEventName","_clickOutHandler","beforeCreate","mounted","document","beforeDestroy","methods","isClickOut","event","$el","target","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","ROOT_EVENT_NAME_SHOWN","ROOT_EVENT_NAME_HIDDEN","SELECTOR_FORM_CHILD","SELECTOR_ITEM","map","selector","concat","join","els","id","boundary","disabled","dropleft","dropright","dropup","noFlip","offset","popperOpts","right","dropdownMixin","mixins","provide","bvDropdown","inject","bvNavbar","default","props","visible","visibleChangePrevented","computed","inNavbar","toggler","toggle","$refs","directionClass","boundaryClass","eventName","bvEvent","cancelable","vueTarget","menu","relatedTarget","componentId","safeId","emitEvent","defaultPrevented","$off","focusToggler","showMenu","hideMenu","created","$_popper","$_hideTimeout","deactivated","whileOpenListen","destroyPopper","clearHideTimeout","type","emitOnRoot","$emit","_this","warn","el","split","createPopper","$nextTick","focusMenu","element","getPopperConfig","destroy","updatePopper","scheduleUpdate","_unused","clearTimeout","placement","popperConfig","modifiers","flip","enabled","boundariesElement","preventOverflow","isOpen","method","$root","rootCloseListener","vm","show","_this2","hide","refocus","undefined","$once","_event","keyCode","indexOf","onMousedown","propagation","onKeydown","onEsc","focusNext","onSplitClick","hideHandler","_this3","setTimeout","up","_this4","items","getItems","index","focusItem","find","_this5","CLASS_NAME_SHOW"],"mappings":"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","file":"js/chunk-3c6f3afe.7d1b0eb0.js","sourcesContent":["export var PLACEMENT_TOP_START = 'top-start';\nexport var PLACEMENT_TOP_END = 'top-end';\nexport var PLACEMENT_BOTTOM_START = 'bottom-start';\nexport var PLACEMENT_BOTTOM_END = 'bottom-end';\nexport var PLACEMENT_RIGHT_START = 'right-start';\nexport var PLACEMENT_RIGHT_END = 'right-end';\nexport var PLACEMENT_LEFT_START = 'left-start';\nexport var PLACEMENT_LEFT_END = 'left-end';","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { contains } from '../utils/dom';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var clickOutMixin = Vue.extend({\n data: function data() {\n return {\n listenForClickOut: false\n };\n },\n watch: {\n listenForClickOut: function listenForClickOut(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.clickOutElement = null;\n this.clickOutEventName = null;\n },\n mounted: function mounted() {\n if (!this.clickOutElement) {\n this.clickOutElement = document;\n }\n\n if (!this.clickOutEventName) {\n this.clickOutEventName = 'click';\n }\n\n if (this.listenForClickOut) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy() {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n isClickOut: function isClickOut(event) {\n return !contains(this.$el, event.target);\n },\n _clickOutHandler: function _clickOutHandler(event) {\n if (this.clickOutHandler && this.isClickOut(event)) {\n this.clickOutHandler(event);\n }\n }\n }\n});","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var focusInMixin = Vue.extend({\n data: function data() {\n return {\n listenForFocusIn: false\n };\n },\n watch: {\n listenForFocusIn: function listenForFocusIn(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.focusInElement = null;\n },\n mounted: function mounted() {\n if (!this.focusInElement) {\n this.focusInElement = document;\n }\n\n if (this.listenForFocusIn) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy() {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n _focusInHandler: function _focusInHandler(event) {\n if (this.focusInHandler) {\n this.focusInHandler(event);\n }\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Popper from 'popper.js';\nimport { Vue } from '../vue';\nimport { NAME_DROPDOWN } from '../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_TOGGLE } from '../constants/events';\nimport { CODE_DOWN, CODE_ENTER, CODE_ESC, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PLACEMENT_TOP_START, PLACEMENT_TOP_END, PLACEMENT_BOTTOM_START, PLACEMENT_BOTTOM_END, PLACEMENT_RIGHT_START, PLACEMENT_LEFT_START } from '../constants/popper';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { HTMLElement } from '../constants/safe-types';\nimport { BvEvent } from '../utils/bv-event.class';\nimport { attemptFocus, closest, contains, isVisible, requestAF, selectAll } from '../utils/dom';\nimport { getRootEventName, stopEvent } from '../utils/events';\nimport { isNull } from '../utils/inspect';\nimport { mergeDeep, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn';\nimport { clickOutMixin } from './click-out';\nimport { focusInMixin } from './focus-in';\nimport { idMixin, props as idProps } from './id';\nimport { listenOnRootMixin } from './listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_SHOWN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_SHOWN);\nvar ROOT_EVENT_NAME_HIDDEN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_HIDDEN); // CSS selectors\n\nvar SELECTOR_FORM_CHILD = '.dropdown form';\nvar SELECTOR_ITEM = ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n}).join(', '); // --- Helper methods ---\n// Return an array of visible items\n\nvar filterVisibles = function filterVisibles(els) {\n return (els || []).filter(isVisible);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place left if possible\n dropleft: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place right if possible\n dropright: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place on top if possible\n dropup: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable auto-flipping of menu from bottom <=> top\n noFlip: makeProp(PROP_TYPE_BOOLEAN, false),\n // Number of pixels or a CSS unit value to offset menu\n // (i.e. `1px`, `1rem`, etc.)\n offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n popperOpts: makeProp(PROP_TYPE_OBJECT, {}),\n // Right align menu (default is left align)\n right: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_DROPDOWN); // --- Mixin ---\n// @vue/component\n\nexport var dropdownMixin = Vue.extend({\n mixins: [idMixin, listenOnRootMixin, clickOutMixin, focusInMixin],\n provide: function provide() {\n return {\n bvDropdown: this\n };\n },\n inject: {\n bvNavbar: {\n default: null\n }\n },\n props: props,\n data: function data() {\n return {\n visible: false,\n visibleChangePrevented: false\n };\n },\n computed: {\n inNavbar: function inNavbar() {\n return !isNull(this.bvNavbar);\n },\n toggler: function toggler() {\n var toggle = this.$refs.toggle;\n return toggle ? toggle.$el || toggle : null;\n },\n directionClass: function directionClass() {\n if (this.dropup) {\n return 'dropup';\n } else if (this.dropright) {\n return 'dropright';\n } else if (this.dropleft) {\n return 'dropleft';\n }\n\n return '';\n },\n boundaryClass: function boundaryClass() {\n // Position `static` is needed to allow menu to \"breakout\" of the `scrollParent`\n // boundaries when boundary is anything other than `scrollParent`\n // See: https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n return this.boundary !== 'scrollParent' && !this.inNavbar ? 'position-static' : '';\n }\n },\n watch: {\n visible: function visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false;\n return;\n }\n\n if (newValue !== oldValue) {\n var eventName = newValue ? EVENT_NAME_SHOW : EVENT_NAME_HIDE;\n var bvEvent = new BvEvent(eventName, {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.menu,\n relatedTarget: null,\n componentId: this.safeId ? this.safeId() : this.id || null\n });\n this.emitEvent(bvEvent);\n\n if (bvEvent.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true;\n this.visible = oldValue; // Just in case a child element triggered `this.hide(true)`\n\n this.$off(EVENT_NAME_HIDDEN, this.focusToggler);\n return;\n }\n\n if (newValue) {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n },\n disabled: function disabled(newValue, oldValue) {\n if (newValue !== oldValue && newValue && this.visible) {\n // Hide dropdown if disabled changes to true\n this.visible = false;\n }\n }\n },\n created: function created() {\n // Create private non-reactive props\n this.$_popper = null;\n this.$_hideTimeout = null;\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // In case we are inside a ``\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n this.clearHideTimeout();\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvent) {\n var type = bvEvent.type;\n this.emitOnRoot(getRootEventName(NAME_DROPDOWN, type), bvEvent);\n this.$emit(type, bvEvent);\n },\n showMenu: function showMenu() {\n var _this = this;\n\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Only instantiate Popper.js when dropdown is not in ``\n\n\n if (!this.inNavbar) {\n if (typeof Popper === 'undefined') {\n /* istanbul ignore next */\n warn('Popper.js not found. Falling back to CSS positioning', NAME_DROPDOWN);\n } else {\n // For dropup with alignment we use the parent element as popper container\n var el = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n\n el = el.$el || el; // Instantiate Popper.js\n\n this.createPopper(el);\n }\n } // Ensure other menus are closed\n\n\n this.emitOnRoot(ROOT_EVENT_NAME_SHOWN, this); // Enable listeners\n\n this.whileOpenListen(true); // Wrap in `$nextTick()` to ensure menu is fully rendered/shown\n\n this.$nextTick(function () {\n // Focus on the menu container on show\n _this.focusMenu(); // Emit the shown event\n\n\n _this.$emit(EVENT_NAME_SHOWN);\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.emitOnRoot(ROOT_EVENT_NAME_HIDDEN, this);\n this.$emit(EVENT_NAME_HIDDEN);\n this.destroyPopper();\n },\n createPopper: function createPopper(element) {\n this.destroyPopper();\n this.$_popper = new Popper(element, this.$refs.menu, this.getPopperConfig());\n },\n // Ensure popper event listeners are removed cleanly\n destroyPopper: function destroyPopper() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n // Instructs popper to re-computes the dropdown position\n // useful if the content changes size\n updatePopper: function updatePopper() {\n try {\n this.$_popper.scheduleUpdate();\n } catch (_unused) {}\n },\n clearHideTimeout: function clearHideTimeout() {\n clearTimeout(this.$_hideTimeout);\n this.$_hideTimeout = null;\n },\n getPopperConfig: function getPopperConfig() {\n var placement = PLACEMENT_BOTTOM_START;\n\n if (this.dropup) {\n placement = this.right ? PLACEMENT_TOP_END : PLACEMENT_TOP_START;\n } else if (this.dropright) {\n placement = PLACEMENT_RIGHT_START;\n } else if (this.dropleft) {\n placement = PLACEMENT_LEFT_START;\n } else if (this.right) {\n placement = PLACEMENT_BOTTOM_END;\n }\n\n var popperConfig = {\n placement: placement,\n modifiers: {\n offset: {\n offset: this.offset || 0\n },\n flip: {\n enabled: !this.noFlip\n }\n }\n };\n var boundariesElement = this.boundary;\n\n if (boundariesElement) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: boundariesElement\n };\n }\n\n return mergeDeep(popperConfig, this.popperOpts || {});\n },\n // Turn listeners on/off while open\n whileOpenListen: function whileOpenListen(isOpen) {\n // Hide the dropdown when clicked outside\n this.listenForClickOut = isOpen; // Hide the dropdown when it loses focus\n\n this.listenForFocusIn = isOpen; // Hide the dropdown when another dropdown is opened\n\n var method = isOpen ? '$on' : '$off';\n this.$root[method](ROOT_EVENT_NAME_SHOWN, this.rootCloseListener);\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n // Public method to show dropdown\n show: function show() {\n var _this2 = this;\n\n if (this.disabled) {\n return;\n } // Wrap in a `requestAF()` to allow any previous\n // click handling to occur first\n\n\n requestAF(function () {\n _this2.visible = true;\n });\n },\n // Public method to hide dropdown\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n /* istanbul ignore next */\n if (this.disabled) {\n return;\n }\n\n this.visible = false;\n\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only by a button that toggles the menu\n toggle: function toggle(event) {\n event = event || {}; // Early exit when not a click event or ENTER, SPACE or DOWN were pressed\n\n var _event = event,\n type = _event.type,\n keyCode = _event.keyCode;\n\n if (type !== 'click' && !(type === 'keydown' && [CODE_ENTER, CODE_SPACE, CODE_DOWN].indexOf(keyCode) !== -1)) {\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next */\n\n\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit(EVENT_NAME_TOGGLE, event);\n stopEvent(event); // Toggle visibility\n\n if (this.visible) {\n this.hide(true);\n } else {\n this.show();\n }\n },\n // Mousedown handler for the toggle\n\n /* istanbul ignore next */\n onMousedown: function onMousedown(event) {\n // We prevent the 'mousedown' event for the toggle to stop the\n // 'focusin' event from being fired\n // The event would otherwise be picked up by the global 'focusin'\n // listener and there is no cross-browser solution to detect it\n // relates to the toggle click\n // The 'click' event will still be fired and we handle closing\n // other dropdowns there too\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/4328\n stopEvent(event, {\n propagation: false\n });\n },\n // Called from dropdown menu context\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ESC) {\n // Close on ESC\n this.onEsc(event);\n } else if (keyCode === CODE_DOWN) {\n // Down Arrow\n this.focusNext(event, false);\n } else if (keyCode === CODE_UP) {\n // Up Arrow\n this.focusNext(event, true);\n }\n },\n // If user presses ESC, close the menu\n onEsc: function onEsc(event) {\n if (this.visible) {\n this.visible = false;\n stopEvent(event); // Return focus to original trigger button\n\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only in split button mode, for the split button\n onSplitClick: function onSplitClick(event) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit(EVENT_NAME_CLICK, event);\n },\n // Shared hide handler between click-out and focus-in events\n hideHandler: function hideHandler(event) {\n var _this3 = this;\n\n var target = event.target;\n\n if (this.visible && !contains(this.$refs.menu, target) && !contains(this.toggler, target)) {\n this.clearHideTimeout();\n this.$_hideTimeout = setTimeout(function () {\n return _this3.hide();\n }, this.inNavbar ? 300 : 0);\n }\n },\n // Document click-out listener\n clickOutHandler: function clickOutHandler(event) {\n this.hideHandler(event);\n },\n // Document focus-in listener\n focusInHandler: function focusInHandler(event) {\n this.hideHandler(event);\n },\n // Keyboard nav\n focusNext: function focusNext(event, up) {\n var _this4 = this;\n\n // Ignore key up/down on form elements\n var target = event.target;\n\n if (!this.visible || event && closest(SELECTOR_FORM_CHILD, target)) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n stopEvent(event);\n this.$nextTick(function () {\n var items = _this4.getItems();\n\n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var index = items.indexOf(target);\n\n if (up && index > 0) {\n index--;\n } else if (!up && index < items.length - 1) {\n index++;\n }\n\n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0;\n }\n\n _this4.focusItem(index, items);\n });\n },\n focusItem: function focusItem(index, items) {\n var el = items.find(function (el, i) {\n return i === index;\n });\n attemptFocus(el);\n },\n getItems: function getItems() {\n // Get all items\n return filterVisibles(selectAll(SELECTOR_ITEM, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n attemptFocus(this.$refs.menu);\n },\n focusToggler: function focusToggler() {\n var _this5 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this5.toggler);\n });\n }\n }\n});","export var CLASS_NAME_SHOW = 'show';\nexport var CLASS_NAME_FADE = 'fade';"],"sourceRoot":""}