{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/image/img.js","webpack:///./node_modules/bootstrap-vue/esm/components/nav/nav.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tabs.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","BLANK_TEMPLATE","makeBlankImgSrc","width","height","color","src","encodeURIComponent","replace","concat","props","alt","blank","blankColor","block","center","fluid","fluidGrow","left","right","rounded","sizes","srcset","thumbnail","BImg","extend","name","functional","render","h","_ref","_class","data","align","filter","join","attrs","class","computeJustifyContent","cardHeader","fill","justified","pills","small","tabs","tag","vertical","BNav","children","staticClass","_watch","stableSort","array","compareFn","map","a","index","sort","b","this","bind","e","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","push","apply","_objectSpread","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","_makeModelMixin","type","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","event","notDisabled","tab","disabled","BVTabButton","inject","bvTabs","default","controls","id","noKeyNav","posInSet","setSize","tabIndex","methods","focus","$refs","link","handleEvt","keyCode","shiftKey","$emit","indexOf","_this$tab","title","localActive","titleItemClass","titleLinkClass","titleLinkAttributes","$link","active","activeNavItemClass","role","tabindex","on","click","keydown","ref","normalizeSlot","navProps","activeTabClass","card","contentClass","end","lazy","navClass","navWrapperClass","noFade","noNavStyle","BTabs","mixins","provide","currentTab","registeredTabs","computed","fade","localNavClass","classes","watch","newValue","oldValue","$tab","activateTab","previousTab","nextTab","_this","$nextTick","slice","updateTabs","created","$_observer","mounted","setObserver","beforeDestroy","registerTab","unregisterTab","$t","_this2","undefined","disconnect","handler","content","childList","subtree","attributes","attributeFilter","getTabs","$tabs","$children","_isTab","order","selector","safeId","$el","identity","reverse","find","getButtonForTab","buttons","$btn","updateButton","$button","$forceUpdate","result","tabEvent","cancelable","vueTarget","componentId","defaultPrevented","deactivateTab","focusButton","_this3","emitTabClick","clickTab","firstTab","currentIndex","math","lastTab","_this4","$activeTab","$fallbackTab","$buttons","_on","controlledBy","refInFor","$nav","$empty","$content","col","row"],"mappings":"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","file":"js/chunk-1edffcb7.b1d18f1d.js","sourcesContent":["function _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 { Vue, mergeData } from '../../vue';\nimport { NAME_IMG } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { identity } from '../../utils/identity';\nimport { isString } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Constants --\n// Blank image with fill template\n\nvar BLANK_TEMPLATE = ''; // --- Helper methods ---\n\nvar makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n alt: makeProp(PROP_TYPE_STRING),\n blank: makeProp(PROP_TYPE_BOOLEAN, false),\n blankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n center: makeProp(PROP_TYPE_BOOLEAN, false),\n fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Gives fluid images class `w-100` to make them grow to fit container\n fluidGrow: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_NUMBER_STRING),\n left: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n // Possible values:\n // `false`: no rounding of corners\n // `true`: slightly rounded corners\n // 'top': top corners rounded\n // 'right': right corners rounded\n // 'bottom': bottom corners rounded\n // 'left': left corners rounded\n // 'circle': circle/oval\n // '0': force rounding off\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sizes: makeProp(PROP_TYPE_ARRAY_STRING),\n src: makeProp(PROP_TYPE_STRING),\n srcset: makeProp(PROP_TYPE_ARRAY_STRING),\n thumbnail: makeProp(PROP_TYPE_BOOLEAN, false),\n width: makeProp(PROP_TYPE_NUMBER_STRING)\n}, NAME_IMG); // --- Main component ---\n// @vue/component\n\nexport var BImg = /*#__PURE__*/Vue.extend({\n name: NAME_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data;\n var alt = props.alt,\n src = props.src,\n block = props.block,\n fluidGrow = props.fluidGrow,\n rounded = props.rounded;\n var width = toInteger(props.width) || null;\n var height = toInteger(props.height) || null;\n var align = null;\n var srcset = concat(props.srcset).filter(identity).join(',');\n var sizes = concat(props.sizes).filter(identity).join(',');\n\n if (props.blank) {\n if (!height && width) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n if (!width && !height) {\n width = 1;\n height = 1;\n } // Make a blank SVG image\n\n\n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n\n srcset = null;\n sizes = null;\n }\n\n if (props.left) {\n align = 'float-left';\n } else if (props.right) {\n align = 'float-right';\n } else if (props.center) {\n align = 'mx-auto';\n block = true;\n }\n\n return h('img', mergeData(data, {\n attrs: {\n src: src,\n alt: alt,\n width: width ? toString(width) : null,\n height: height ? toString(height) : null,\n srcset: srcset || null,\n sizes: sizes || null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || fluidGrow,\n 'w-100': fluidGrow,\n rounded: rounded === '' || rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(rounded), isString(rounded) && rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n});","function _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 { Vue, mergeData } from '../../vue';\nimport { NAME_NAV } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Helper methods ---\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return \"justify-content-\".concat(value);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n align: makeProp(PROP_TYPE_STRING),\n // Set to `true` if placing in a card header\n cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n fill: makeProp(PROP_TYPE_BOOLEAN, false),\n justified: makeProp(PROP_TYPE_BOOLEAN, false),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'ul'),\n vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_NAV); // --- Main component ---\n// @vue/component\n\nexport var BNav = /*#__PURE__*/Vue.extend({\n name: NAME_NAV,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tabs = props.tabs,\n pills = props.pills,\n vertical = props.vertical,\n align = props.align,\n cardHeader = props.cardHeader;\n return h(props.tag, mergeData(data, {\n staticClass: 'nav',\n class: (_class = {\n 'nav-tabs': tabs,\n 'nav-pills': pills && !tabs,\n 'card-header-tabs': !vertical && cardHeader && tabs,\n 'card-header-pills': !vertical && cardHeader && pills && !tabs,\n 'flex-column': vertical,\n 'nav-fill': !vertical && props.fill,\n 'nav-justified': !vertical && props.justified\n }, _defineProperty(_class, computeJustifyContent(align), !vertical && align), _defineProperty(_class, \"small\", props.small), _class)\n }), children);\n }\n});","var _watch;\n\nfunction 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 { COMPONENT_UID_KEY, Vue } from '../../vue';\nimport { NAME_TABS, NAME_TAB_BUTTON_HELPER } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_ACTIVATE_TAB, EVENT_NAME_CHANGED, EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_PREV } from '../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_TABS_END, SLOT_NAME_TABS_START, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { BNav, props as BNavProps } from '../nav/nav'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Filter function to filter out disabled tabs\n\n\nvar notDisabled = function notDisabled(tab) {\n return !tab.disabled;\n}; // --- Helper components ---\n// @vue/component\n\n\nvar BVTabButton = /*#__PURE__*/Vue.extend({\n name: NAME_TAB_BUTTON_HELPER,\n inject: {\n bvTabs: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n props: {\n controls: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n posInSet: makeProp(PROP_TYPE_NUMBER),\n setSize: makeProp(PROP_TYPE_NUMBER),\n // Reference to the child instance\n tab: makeProp(),\n tabIndex: makeProp(PROP_TYPE_NUMBER)\n },\n methods: {\n focus: function focus() {\n attemptFocus(this.$refs.link);\n },\n handleEvt: function handleEvt(event) {\n /* istanbul ignore next */\n if (this.tab.disabled) {\n return;\n }\n\n var type = event.type,\n keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n\n if (type === 'click') {\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n // For ARIA tabs the SPACE key will also trigger a click/select\n // Even with keyboard navigation disabled, SPACE should \"click\" the button\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && !this.noKeyNav) {\n // For keyboard navigation\n if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n stopEvent(event);\n\n if (shiftKey || keyCode === CODE_HOME) {\n this.$emit(EVENT_NAME_FIRST, event);\n } else {\n this.$emit(EVENT_NAME_PREV, event);\n }\n } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n stopEvent(event);\n\n if (shiftKey || keyCode === CODE_END) {\n this.$emit(EVENT_NAME_LAST, event);\n } else {\n this.$emit(EVENT_NAME_NEXT, event);\n }\n }\n }\n }\n },\n render: function render(h) {\n var id = this.id,\n tabIndex = this.tabIndex,\n setSize = this.setSize,\n posInSet = this.posInSet,\n controls = this.controls,\n handleEvt = this.handleEvt;\n var _this$tab = this.tab,\n title = _this$tab.title,\n localActive = _this$tab.localActive,\n disabled = _this$tab.disabled,\n titleItemClass = _this$tab.titleItemClass,\n titleLinkClass = _this$tab.titleLinkClass,\n titleLinkAttributes = _this$tab.titleLinkAttributes;\n var $link = h(BLink, {\n staticClass: 'nav-link',\n class: [{\n active: localActive && !disabled,\n disabled: disabled\n }, titleLinkClass, // Apply `activeNavItemClass` styles when the tab is active\n localActive ? this.bvTabs.activeNavItemClass : null],\n props: {\n disabled: disabled\n },\n attrs: _objectSpread(_objectSpread({}, titleLinkAttributes), {}, {\n id: id,\n role: 'tab',\n // Roving tab index when keynav enabled\n tabindex: tabIndex,\n 'aria-selected': localActive && !disabled ? 'true' : 'false',\n 'aria-setsize': setSize,\n 'aria-posinset': posInSet,\n 'aria-controls': controls\n }),\n on: {\n click: handleEvt,\n keydown: handleEvt\n },\n ref: 'link'\n }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n return h('li', {\n staticClass: 'nav-item',\n class: [titleItemClass],\n attrs: {\n role: 'presentation'\n }\n }, [$link]);\n }\n}); // --- Props ---\n\nvar navProps = omit(BNavProps, ['tabs', 'isNavBar', 'cardHeader']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), navProps), {}, {\n // Only applied to the currently active ``\n activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Only applied to the currently active ``\n // This prop is sniffed by the `` child\n activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n card: makeProp(PROP_TYPE_BOOLEAN, false),\n contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Synonym for 'bottom'\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n // This prop is sniffed by the `` child\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_TABS); // --- Main component ---\n// @vue/component\n\nexport var BTabs = /*#__PURE__*/Vue.extend({\n name: NAME_TABS,\n mixins: [idMixin, modelMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTabs: this\n };\n },\n props: props,\n data: function data() {\n return {\n // Index of current tab\n currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n // Array of direct child `` instances, in DOM order\n tabs: [],\n // Array of child instances registered (for triggering reactive updates)\n registeredTabs: []\n };\n },\n computed: {\n fade: function fade() {\n // This computed prop is sniffed by the tab child\n return !this.noFade;\n },\n localNavClass: function localNavClass() {\n var classes = [];\n\n if (this.card && this.vertical) {\n classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0');\n }\n\n return [].concat(classes, [this.navClass]);\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n newValue = toInteger(newValue, -1);\n oldValue = toInteger(oldValue, 0);\n var $tab = this.tabs[newValue];\n\n if ($tab && !$tab.disabled) {\n this.activateTab($tab);\n } else {\n // Try next or prev tabs\n if (newValue < oldValue) {\n this.previousTab();\n } else {\n this.nextTab();\n }\n }\n }\n }), _defineProperty(_watch, \"currentTab\", function currentTab(newValue) {\n var index = -1; // Ensure only one tab is active at most\n\n this.tabs.forEach(function ($tab, i) {\n if (i === newValue && !$tab.disabled) {\n $tab.localActive = true;\n index = i;\n } else {\n $tab.localActive = false;\n }\n }); // Update the v-model\n\n this.$emit(MODEL_EVENT_NAME, index);\n }), _defineProperty(_watch, \"tabs\", function tabs(newValue, oldValue) {\n var _this = this;\n\n // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n // if no explicit ID is provided, causing duplicate emits\n if (!looseEqual(newValue.map(function ($tab) {\n return $tab[COMPONENT_UID_KEY];\n }), oldValue.map(function ($tab) {\n return $tab[COMPONENT_UID_KEY];\n }))) {\n // In a `$nextTick()` to ensure `currentTab` has been set first\n this.$nextTick(function () {\n // We emit shallow copies of the new and old arrays of tabs,\n // to prevent users from potentially mutating the internal arrays\n _this.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n });\n }\n }), _defineProperty(_watch, \"registeredTabs\", function registeredTabs() {\n this.updateTabs();\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_observer = null;\n },\n mounted: function mounted() {\n this.setObserver(true);\n },\n beforeDestroy: function beforeDestroy() {\n this.setObserver(false); // Ensure no references to child instances exist\n\n this.tabs = [];\n },\n methods: {\n registerTab: function registerTab($tab) {\n if (!arrayIncludes(this.registeredTabs, $tab)) {\n this.registeredTabs.push($tab);\n }\n },\n unregisterTab: function unregisterTab($tab) {\n this.registeredTabs = this.registeredTabs.slice().filter(function ($t) {\n return $t !== $tab;\n });\n },\n // DOM observer is needed to detect changes in order of tabs\n setObserver: function setObserver() {\n var _this2 = this;\n\n var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.$_observer && this.$_observer.disconnect();\n this.$_observer = null;\n\n if (on) {\n /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n var handler = function handler() {\n _this2.$nextTick(function () {\n requestAF(function () {\n _this2.updateTabs();\n });\n });\n }; // Watch for changes to `` sub components\n\n\n this.$_observer = observeDom(this.$refs.content, handler, {\n childList: true,\n subtree: false,\n attributes: true,\n attributeFilter: ['id']\n });\n }\n },\n getTabs: function getTabs() {\n var $tabs = this.registeredTabs.filter(function ($tab) {\n return $tab.$children.filter(function ($t) {\n return $t._isTab;\n }).length === 0;\n }); // DOM Order of Tabs\n\n var order = [];\n /* istanbul ignore next: too difficult to test */\n\n if (IS_BROWSER && $tabs.length > 0) {\n // We rely on the DOM when mounted to get the \"true\" order of the `` children\n // `querySelectorAll()` always returns elements in document order, regardless of\n // order specified in the selector\n var selector = $tabs.map(function ($tab) {\n return \"#\".concat($tab.safeId());\n }).join(', ');\n order = selectAll(selector, this.$el).map(function ($el) {\n return $el.id;\n }).filter(identity);\n } // Stable sort keeps the original order if not found in the `order` array,\n // which will be an empty array before mount\n\n\n return stableSort($tabs, function (a, b) {\n return order.indexOf(a.safeId()) - order.indexOf(b.safeId());\n });\n },\n updateTabs: function updateTabs() {\n var $tabs = this.getTabs(); // Find last active non-disabled tab in current tabs\n // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n\n var tabIndex = $tabs.indexOf($tabs.slice().reverse().find(function ($tab) {\n return $tab.localActive && !$tab.disabled;\n })); // Else try setting to `currentTab`\n\n if (tabIndex < 0) {\n var currentTab = this.currentTab;\n\n if (currentTab >= $tabs.length) {\n // Handle last tab being removed, so find the last non-disabled tab\n tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n // Current tab is not disabled\n tabIndex = currentTab;\n }\n } // Else find first non-disabled tab in current tabs\n\n\n if (tabIndex < 0) {\n tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n } // Ensure only one tab is active at a time\n\n\n $tabs.forEach(function ($tab, index) {\n $tab.localActive = index === tabIndex;\n });\n this.tabs = $tabs;\n this.currentTab = tabIndex;\n },\n // Find a button that controls a tab, given the tab reference\n // Returns the button vm instance\n getButtonForTab: function getButtonForTab($tab) {\n return (this.$refs.buttons || []).find(function ($btn) {\n return $btn.tab === $tab;\n });\n },\n // Force a button to re-render its content, given a `` instance\n // Called by `` on `update()`\n updateButton: function updateButton($tab) {\n var $button = this.getButtonForTab($tab);\n\n if ($button && $button.$forceUpdate) {\n $button.$forceUpdate();\n }\n },\n // Activate a tab given a `` instance\n // Also accessed by ``\n activateTab: function activateTab($tab) {\n var currentTab = this.currentTab,\n $tabs = this.tabs;\n var result = false;\n\n if ($tab) {\n var index = $tabs.indexOf($tab);\n\n if (index !== currentTab && index > -1 && !$tab.disabled) {\n var tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n cancelable: true,\n vueTarget: this,\n componentId: this.safeId()\n });\n this.$emit(tabEvent.type, index, currentTab, tabEvent);\n\n if (!tabEvent.defaultPrevented) {\n this.currentTab = index;\n result = true;\n }\n }\n } // Couldn't set tab, so ensure v-model is up to date\n\n /* istanbul ignore next: should rarely happen */\n\n\n if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n this.$emit(MODEL_EVENT_NAME, currentTab);\n }\n\n return result;\n },\n // Deactivate a tab given a `` instance\n // Accessed by ``\n deactivateTab: function deactivateTab($tab) {\n if ($tab) {\n // Find first non-disabled tab that isn't the one being deactivated\n // If no tabs are available, then don't deactivate current tab\n return this.activateTab(this.tabs.filter(function ($t) {\n return $t !== $tab;\n }).find(notDisabled));\n }\n /* istanbul ignore next: should never/rarely happen */\n\n\n return false;\n },\n // Focus a tab button given its `` instance\n focusButton: function focusButton($tab) {\n var _this3 = this;\n\n // Wrap in `$nextTick()` to ensure DOM has completed rendering\n this.$nextTick(function () {\n attemptFocus(_this3.getButtonForTab($tab));\n });\n },\n // Emit a click event on a specified `` component instance\n emitTabClick: function emitTabClick(tab, event) {\n if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n tab.$emit(EVENT_NAME_CLICK, event);\n }\n },\n // Click handler\n clickTab: function clickTab($tab, event) {\n this.activateTab($tab);\n this.emitTabClick($tab, event);\n },\n // Move to first non-disabled tab\n firstTab: function firstTab(focus) {\n var $tab = this.tabs.find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to previous non-disabled tab\n previousTab: function previousTab(focus) {\n var currentIndex = mathMax(this.currentTab, 0);\n var $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to next non-disabled tab\n nextTab: function nextTab(focus) {\n var currentIndex = mathMax(this.currentTab, -1);\n var $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to last non-disabled tab\n lastTab: function lastTab(focus) {\n var $tab = this.tabs.slice().reverse().find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n }\n },\n render: function render(h) {\n var _this4 = this;\n\n var align = this.align,\n card = this.card,\n end = this.end,\n fill = this.fill,\n firstTab = this.firstTab,\n justified = this.justified,\n lastTab = this.lastTab,\n nextTab = this.nextTab,\n noKeyNav = this.noKeyNav,\n noNavStyle = this.noNavStyle,\n pills = this.pills,\n previousTab = this.previousTab,\n small = this.small,\n $tabs = this.tabs,\n vertical = this.vertical; // Currently active tab\n\n var $activeTab = $tabs.find(function ($tab) {\n return $tab.localActive && !$tab.disabled;\n }); // Tab button to allow focusing when no active tab found (keynav only)\n\n var $fallbackTab = $tabs.find(function ($tab) {\n return !$tab.disabled;\n }); // For each `` found create the tab buttons\n\n var $buttons = $tabs.map(function ($tab, index) {\n var _on;\n\n var safeId = $tab.safeId; // Ensure at least one tab button is focusable when keynav enabled (if possible)\n\n var tabIndex = null;\n\n if (!noKeyNav) {\n // Buttons are not in tab index unless active, or a fallback tab\n tabIndex = -1;\n\n if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n // Place tab button in tab sequence\n tabIndex = null;\n }\n }\n\n return h(BVTabButton, {\n props: {\n controls: safeId ? safeId() : null,\n id: $tab.controlledBy || (safeId ? safeId(\"_BV_tab_button_\") : null),\n noKeyNav: noKeyNav,\n posInSet: index + 1,\n setSize: $tabs.length,\n tab: $tab,\n tabIndex: tabIndex\n },\n on: (_on = {}, _defineProperty(_on, EVENT_NAME_CLICK, function (event) {\n _this4.clickTab($tab, event);\n }), _defineProperty(_on, EVENT_NAME_FIRST, firstTab), _defineProperty(_on, EVENT_NAME_PREV, previousTab), _defineProperty(_on, EVENT_NAME_NEXT, nextTab), _defineProperty(_on, EVENT_NAME_LAST, lastTab), _on),\n key: $tab[COMPONENT_UID_KEY] || index,\n ref: 'buttons',\n // Needed to make `this.$refs.buttons` an array\n refInFor: true\n });\n });\n var $nav = h(BNav, {\n class: this.localNavClass,\n attrs: {\n role: 'tablist',\n id: this.safeId('_BV_tab_controls_')\n },\n props: {\n fill: fill,\n justified: justified,\n align: align,\n tabs: !noNavStyle && !pills,\n pills: !noNavStyle && pills,\n vertical: vertical,\n small: small,\n cardHeader: card && !vertical\n },\n ref: 'nav'\n }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n $nav = h('div', {\n class: [{\n 'card-header': card && !vertical && !end,\n 'card-footer': card && !vertical && end,\n 'col-auto': vertical\n }, this.navWrapperClass],\n key: 'bv-tabs-nav'\n }, [$nav]);\n var $children = this.normalizeSlot() || [];\n var $empty = h();\n\n if ($children.length === 0) {\n $empty = h('div', {\n class: ['tab-pane', 'active', {\n 'card-body': card\n }],\n key: 'bv-empty-tab'\n }, this.normalizeSlot(SLOT_NAME_EMPTY));\n }\n\n var $content = h('div', {\n staticClass: 'tab-content',\n class: [{\n col: vertical\n }, this.contentClass],\n attrs: {\n id: this.safeId('_BV_tab_container_')\n },\n key: 'bv-content',\n ref: 'content'\n }, [$children, $empty]); // Render final output\n\n return h(this.tag, {\n staticClass: 'tabs',\n class: {\n row: vertical,\n 'no-gutters': vertical && card\n },\n attrs: {\n id: this.safeId()\n }\n }, [end ? $content : h(), $nav, end ? h() : $content]);\n }\n});","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};"],"sourceRoot":""}