{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/form/form-invalid-feedback.js","webpack:///./node_modules/bootstrap-vue/esm/components/nav/nav.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tab.js","webpack:///./node_modules/bootstrap-vue/esm/utils/css-escape.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/form-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form-valid-feedback.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-group/form-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tabs.js"],"names":["props","ariaLive","forceShow","id","role","state","tag","tooltip","BFormInvalidFeedback","extend","name","functional","render","h","_ref","data","children","show","class","attrs","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","computeJustifyContent","concat","align","cardHeader","fill","justified","pills","small","tabs","vertical","BNav","_class","staticClass","_objectSpread2","_watch","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","MODEL_PROP_NAME_ACTIVE","MODEL_EVENT_NAME_ACTIVE","BTab","mixins","inject","bvTabs","default","localActive","this","disabled","computed","_isTab","tabClasses","active","card","noBody","activeTabClass","controlledBy","buttonId","safeId","computedNoFade","fade","computedLazy","lazy","watch","newValue","oldValue","activate","deactivate","$emit","firstTab","mounted","registerTab","updated","updateButton","hasNormalizedSlot","beforeDestroy","unregisterTab","methods","activateTab","deactivateTab","$content","directives","ref","normalizeSlot","mode","noFade","escapeChar","firstCharCode","charCodeAt","split","reduce","result","char","index","charCode","toString","BFormRow","inline","textVariant","BFormText","BFormValidFeedback","INPUTS","INPUT_SELECTOR","map","v","join","LEGEND_INTERACTIVE_ELEMENTS","breakpoint","description","feedbackAriaLive","invalidFeedback","label","labelClass","labelFor","labelSize","labelSrOnly","validFeedback","validated","BFormGroup","ariaDescribedby","contentColProps","getColProps","$props","labelAlignClasses","getAlignClasses","labelColProps","isHorizontal","updateAriaDescribedby","_this","$nextTick","prefix","propValue","identity","$input","$refs","content","attr","newIds","oldIds","ids","array","indexOf","trim","onLegendClick","event","tagName","inputs","computedState","isFieldset","$label","labelContent","labelId","labelTag","for","on","click","tabindex","$invalidFeedback","invalidFeedbackContent","invalidFeedbackId","$validFeedback","validFeedbackContent","validFeedbackId","$description","descriptionContent","descriptionId","stateClass","computedAriaInvalid","_makeModelMixin","type","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","notDisabled","tab","BVTabButton","controls","noKeyNav","posInSet","setSize","tabIndex","focus","link","handleEvt","keyCode","shiftKey","_this$tab","title","titleItemClass","titleLinkClass","titleLinkAttributes","$link","activeNavItemClass","keydown","navProps","contentClass","end","navClass","navWrapperClass","noNavStyle","BTabs","provide","currentTab","registeredTabs","localNavClass","classes","$tab","previousTab","nextTab","slice","updateTabs","created","$_observer","setObserver","$t","_this2","undefined","disconnect","handler","childList","subtree","attributes","attributeFilter","getTabs","$tabs","$children","order","selector","$el","a","b","reverse","find","getButtonForTab","buttons","$btn","$button","$forceUpdate","tabEvent","cancelable","vueTarget","componentId","defaultPrevented","focusButton","_this3","emitTabClick","clickTab","currentIndex","lastTab","_this4","$activeTab","$fallbackTab","$buttons","_on","refInFor","$nav","$empty","col","row"],"mappings":"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","file":"js/chunk-30b8281b.0b362278.js","sourcesContent":["import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_INVALID_FEEDBACK } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n ariaLive: makeProp(PROP_TYPE_STRING),\n forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING),\n // Tri-state prop: `true`, `false`, or `null`\n state: makeProp(PROP_TYPE_BOOLEAN, null),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM_INVALID_FEEDBACK); // --- Main component ---\n// @vue/component\n\nexport var BFormInvalidFeedback = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_INVALID_FEEDBACK,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tooltip = props.tooltip,\n ariaLive = props.ariaLive;\n var show = props.forceShow === true || props.state === false;\n return h(props.tag, mergeData(data, {\n class: {\n 'd-block': show,\n 'invalid-feedback': !tooltip,\n 'invalid-tooltip': tooltip\n },\n attrs: {\n id: props.id || null,\n role: props.role || null,\n 'aria-live': ariaLive || null,\n 'aria-atomic': ariaLive ? 'true' : null\n }\n }), children);\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 _objectSpread2, _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 { Vue } from '../../vue';\nimport { NAME_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar MODEL_PROP_NAME_ACTIVE = 'active';\nvar MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_ACTIVE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"buttonId\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"disabled\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"lazy\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"noBody\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"tag\", makeProp(PROP_TYPE_STRING, 'div')), _defineProperty(_objectSpread2, \"title\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"titleItemClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _defineProperty(_objectSpread2, \"titleLinkAttributes\", makeProp(PROP_TYPE_OBJECT)), _defineProperty(_objectSpread2, \"titleLinkClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _objectSpread2))), NAME_TAB); // --- Main component ---\n// @vue/component\n\nexport var BTab = /*#__PURE__*/Vue.extend({\n name: NAME_TAB,\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n bvTabs: {\n default: function _default() {\n return {};\n }\n }\n },\n props: props,\n data: function data() {\n return {\n localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n };\n },\n computed: {\n // For parent sniffing of child\n _isTab: function _isTab() {\n return true;\n },\n tabClasses: function tabClasses() {\n var active = this.localActive,\n disabled = this.disabled;\n return [{\n active: active,\n disabled: disabled,\n 'card-body': this.bvTabs.card && !this.noBody\n }, // Apply `activeTabClass` styles when this tab is active\n active ? this.bvTabs.activeTabClass : null];\n },\n controlledBy: function controlledBy() {\n return this.buttonId || this.safeId('__BV_tab_button__');\n },\n computedNoFade: function computedNoFade() {\n return !(this.bvTabs.fade || false);\n },\n computedLazy: function computedLazy() {\n return this.bvTabs.lazy || this.lazy;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME_ACTIVE, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n if (newValue) {\n // If activated post mount\n this.activate();\n } else {\n /* istanbul ignore next */\n if (!this.deactivate()) {\n // Tab couldn't be deactivated, so we reset the synced active prop\n // Deactivation will fail if no other tabs to activate\n this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n }\n }\n }\n }), _defineProperty(_watch, \"disabled\", function disabled(newValue, oldValue) {\n if (newValue !== oldValue) {\n var firstTab = this.bvTabs.firstTab;\n\n if (newValue && this.localActive && firstTab) {\n this.localActive = false;\n firstTab();\n }\n }\n }), _defineProperty(_watch, \"localActive\", function localActive(newValue) {\n // Make `active` prop work with `.sync` modifier\n this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n }), _watch),\n mounted: function mounted() {\n // Inform `` of our presence\n this.registerTab();\n },\n updated: function updated() {\n // Force the tab button content to update (since slots are not reactive)\n // Only done if we have a title slot, as the title prop is reactive\n var updateButton = this.bvTabs.updateButton;\n\n if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n updateButton(this);\n }\n },\n beforeDestroy: function beforeDestroy() {\n // Inform `` of our departure\n this.unregisterTab();\n },\n methods: {\n // Private methods\n registerTab: function registerTab() {\n // Inform `` of our presence\n var registerTab = this.bvTabs.registerTab;\n\n if (registerTab) {\n registerTab(this);\n }\n },\n unregisterTab: function unregisterTab() {\n // Inform `` of our departure\n var unregisterTab = this.bvTabs.unregisterTab;\n\n if (unregisterTab) {\n unregisterTab(this);\n }\n },\n // Public methods\n activate: function activate() {\n // Not inside a `` component or tab is disabled\n var activateTab = this.bvTabs.activateTab;\n return activateTab && !this.disabled ? activateTab(this) : false;\n },\n deactivate: function deactivate() {\n // Not inside a `` component or not active to begin with\n var deactivateTab = this.bvTabs.deactivateTab;\n return deactivateTab && this.localActive ? deactivateTab(this) : false;\n }\n },\n render: function render(h) {\n var localActive = this.localActive;\n var $content = h(this.tag, {\n staticClass: 'tab-pane',\n class: this.tabClasses,\n directives: [{\n name: 'show',\n value: localActive\n }],\n attrs: {\n role: 'tabpanel',\n id: this.safeId(),\n 'aria-hidden': localActive ? 'false' : 'true',\n 'aria-labelledby': this.controlledBy || null\n },\n ref: 'panel'\n }, // Render content lazily if requested\n [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n return h(BVTransition, {\n props: {\n mode: 'out-in',\n noFade: this.computedNoFade\n }\n }, [$content]);\n }\n});","import { toString } from './string';\n\nvar escapeChar = function escapeChar(value) {\n return '\\\\' + value;\n}; // The `cssEscape()` util is based on this `CSS.escape()` polyfill:\n// https://github.com/mathiasbynens/CSS.escape\n\n\nexport var cssEscape = function cssEscape(value) {\n value = toString(value);\n var length = value.length;\n var firstCharCode = value.charCodeAt(0);\n return value.split('').reduce(function (result, char, index) {\n var charCode = value.charCodeAt(index); // If the character is NULL (U+0000), use (U+FFFD) as replacement\n\n if (charCode === 0x0000) {\n return result + \"\\uFFFD\";\n } // If the character ...\n\n\n if ( // ... is U+007F OR\n charCode === 0x007f || // ... is in the range [\\1-\\1F] (U+0001 to U+001F) OR ...\n charCode >= 0x0001 && charCode <= 0x001f || // ... is the first character and is in the range [0-9] (U+0030 to U+0039) OR ...\n index === 0 && charCode >= 0x0030 && charCode <= 0x0039 || // ... is the second character and is in the range [0-9] (U+0030 to U+0039)\n // and the first character is a `-` (U+002D) ...\n index === 1 && charCode >= 0x0030 && charCode <= 0x0039 && firstCharCode === 0x002d) {\n // ... https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n return result + escapeChar(\"\".concat(charCode.toString(16), \" \"));\n } // If the character ...\n\n\n if ( // ... is the first character AND ...\n index === 0 && // ... is a `-` (U+002D) AND ...\n charCode === 0x002d && // ... there is no second character ...\n length === 1) {\n // ... use the escaped character\n return result + escapeChar(char);\n } // If the character ...\n\n\n if ( // ... is greater than or equal to U+0080 OR ...\n charCode >= 0x0080 || // ... is `-` (U+002D) OR ...\n charCode === 0x002d || // ... is `_` (U+005F) OR ...\n charCode === 0x005f || // ... is in the range [0-9] (U+0030 to U+0039) OR ...\n charCode >= 0x0030 && charCode <= 0x0039 || // ... is in the range [A-Z] (U+0041 to U+005A) OR ...\n charCode >= 0x0041 && charCode <= 0x005a || // ... is in the range [a-z] (U+0061 to U+007A) ...\n charCode >= 0x0061 && charCode <= 0x007a) {\n // ... use the character itself\n return result + char;\n } // Otherwise use the escaped character\n // See: https://drafts.csswg.org/cssom/#escape-a-character\n\n\n return result + escapeChar(char);\n }, '');\n};","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_ROW } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_FORM_ROW); // --- Main component ---\n// @vue/component\n\nexport var BFormRow = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_ROW,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'form-row'\n }), children);\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_FORM_TEXT } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'small'),\n textVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_FORM_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BFormText = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_TEXT,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n class: _defineProperty({\n 'form-text': !props.inline\n }, \"text-\".concat(props.textVariant), props.textVariant),\n attrs: {\n id: props.id\n }\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_VALID_FEEDBACK } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n ariaLive: makeProp(PROP_TYPE_STRING),\n forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING),\n // Tri-state prop: `true`, `false`, or `null`\n state: makeProp(PROP_TYPE_BOOLEAN, null),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM_VALID_FEEDBACK); // --- Main component ---\n// @vue/component\n\nexport var BFormValidFeedback = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_VALID_FEEDBACK,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tooltip = props.tooltip,\n ariaLive = props.ariaLive;\n var show = props.forceShow === true || props.state === true;\n return h(props.tag, mergeData(data, {\n class: {\n 'd-block': show,\n 'valid-feedback': !tooltip,\n 'valid-tooltip': tooltip\n },\n attrs: {\n id: props.id || null,\n role: props.role || null,\n 'aria-live': ariaLive || null,\n 'aria-atomic': ariaLive ? 'true' : null\n }\n }), children);\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 { NAME_FORM_GROUP } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_SPACE_SPLIT } from '../../constants/regex';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_DESCRIPTION, SLOT_NAME_INVALID_FEEDBACK, SLOT_NAME_LABEL, SLOT_NAME_VALID_FEEDBACK } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { cssEscape } from '../../utils/css-escape';\nimport { select, selectAll, isVisible, setAttr, removeAttr, getAttr, attemptFocus } from '../../utils/dom';\nimport { identity } from '../../utils/identity';\nimport { isBoolean } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BCol } from '../layout/col';\nimport { BFormRow } from '../layout/form-row';\nimport { BFormText } from '../form/form-text';\nimport { BFormInvalidFeedback } from '../form/form-invalid-feedback';\nimport { BFormValidFeedback } from '../form/form-valid-feedback'; // --- Constants ---\n\nvar INPUTS = ['input', 'select', 'textarea']; // Selector for finding first input in the form group\n\nvar INPUT_SELECTOR = INPUTS.map(function (v) {\n return \"\".concat(v, \":not([disabled])\");\n}).join(); // A list of interactive elements (tag names) inside ``'s legend\n\nvar LEGEND_INTERACTIVE_ELEMENTS = [].concat(INPUTS, ['a', 'button', 'label']); // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formStateProps), getBreakpointsUpCached().reduce(function (props, breakpoint) {\n // i.e. 'content-cols', 'content-cols-sm', 'content-cols-md', ...\n props[suffixPropName(breakpoint, 'contentCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING); // i.e. 'label-align', 'label-align-sm', 'label-align-md', ...\n\n props[suffixPropName(breakpoint, 'labelAlign')] = makeProp(PROP_TYPE_STRING); // i.e. 'label-cols', 'label-cols-sm', 'label-cols-md', ...\n\n props[suffixPropName(breakpoint, 'labelCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n return props;\n }, create(null))), {}, {\n description: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n feedbackAriaLive: makeProp(PROP_TYPE_STRING, 'assertive'),\n invalidFeedback: makeProp(PROP_TYPE_STRING),\n label: makeProp(PROP_TYPE_STRING),\n labelClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n labelFor: makeProp(PROP_TYPE_STRING),\n labelSize: makeProp(PROP_TYPE_STRING),\n labelSrOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false),\n validFeedback: makeProp(PROP_TYPE_STRING),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_FORM_GROUP);\n}; // --- Main component ---\n// We do not use `Vue.extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BFormGroup = {\n name: NAME_FORM_GROUP,\n mixins: [idMixin, formStateMixin, normalizeSlotMixin],\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n data: function data() {\n return {\n ariaDescribedby: null\n };\n },\n computed: {\n contentColProps: function contentColProps() {\n return this.getColProps(this.$props, 'content');\n },\n labelAlignClasses: function labelAlignClasses() {\n return this.getAlignClasses(this.$props, 'label');\n },\n labelColProps: function labelColProps() {\n return this.getColProps(this.$props, 'label');\n },\n isHorizontal: function isHorizontal() {\n // Determine if the form group will be rendered horizontal\n // based on the existence of 'content-col' or 'label-col' props\n return keys(this.contentColProps).length > 0 || keys(this.labelColProps).length > 0;\n }\n },\n watch: {\n ariaDescribedby: function ariaDescribedby(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.updateAriaDescribedby(newValue, oldValue);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n // Set `aria-describedby` on the input specified by `labelFor`\n // We do this in a `$nextTick()` to ensure the children have finished rendering\n _this.updateAriaDescribedby(_this.ariaDescribedby);\n });\n },\n methods: {\n getAlignClasses: function getAlignClasses(props, prefix) {\n return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Align\"))] || null;\n\n if (propValue) {\n result.push(['text', breakpoint, propValue].filter(identity).join('-'));\n }\n\n return result;\n }, []);\n },\n getColProps: function getColProps(props, prefix) {\n return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Cols\"))]; // Handle case where the prop's value is an empty string,\n // which represents `true`\n\n propValue = propValue === '' ? true : propValue || false;\n\n if (!isBoolean(propValue) && propValue !== 'auto') {\n // Convert to column size to number\n propValue = toInteger(propValue, 0); // Ensure column size is greater than `0`\n\n propValue = propValue > 0 ? propValue : false;\n } // Add the prop to the list of props to give to ``\n // If breakpoint is '' (`${prefix}Cols` is `true`), then we use\n // the 'col' prop to make equal width at 'xs'\n\n\n if (propValue) {\n result[breakpoint || (isBoolean(propValue) ? 'col' : 'cols')] = propValue;\n }\n\n return result;\n }, {});\n },\n // Sets the `aria-describedby` attribute on the input if `labelFor` is set\n // Optionally accepts a string of IDs to remove as the second parameter\n // Preserves any `aria-describedby` value(s) user may have on input\n updateAriaDescribedby: function updateAriaDescribedby(newValue, oldValue) {\n var labelFor = this.labelFor;\n\n if (IS_BROWSER && labelFor) {\n // We need to escape `labelFor` since it can be user-provided\n var $input = select(\"#\".concat(cssEscape(labelFor)), this.$refs.content);\n\n if ($input) {\n var attr = 'aria-describedby';\n var newIds = (newValue || '').split(RX_SPACE_SPLIT);\n var oldIds = (oldValue || '').split(RX_SPACE_SPLIT); // Update ID list, preserving any original IDs\n // and ensuring the ID's are unique\n\n var ids = (getAttr($input, attr) || '').split(RX_SPACE_SPLIT).filter(function (id) {\n return !arrayIncludes(oldIds, id);\n }).concat(newIds).filter(function (id, index, ids) {\n return ids.indexOf(id) === index;\n }).filter(identity).join(' ').trim();\n\n if (ids) {\n setAttr($input, attr, ids);\n } else {\n removeAttr($input, attr);\n }\n }\n }\n },\n onLegendClick: function onLegendClick(event) {\n // Don't do anything if `labelFor` is set\n\n /* istanbul ignore next: clicking a label will focus the input, so no need to test */\n if (this.labelFor) {\n return;\n }\n\n var target = event.target;\n var tagName = target ? target.tagName : ''; // If clicked an interactive element inside legend,\n // we just let the default happen\n\n /* istanbul ignore next */\n\n if (LEGEND_INTERACTIVE_ELEMENTS.indexOf(tagName) !== -1) {\n return;\n } // If only a single input, focus it, emulating label behaviour\n\n\n var inputs = selectAll(INPUT_SELECTOR, this.$refs.content).filter(isVisible);\n\n if (inputs.length === 1) {\n attemptFocus(inputs[0]);\n }\n }\n },\n render: function render(h) {\n var state = this.computedState,\n feedbackAriaLive = this.feedbackAriaLive,\n isHorizontal = this.isHorizontal,\n labelFor = this.labelFor,\n normalizeSlot = this.normalizeSlot,\n safeId = this.safeId,\n tooltip = this.tooltip;\n var id = safeId();\n var isFieldset = !labelFor;\n var $label = h();\n var labelContent = normalizeSlot(SLOT_NAME_LABEL) || this.label;\n var labelId = labelContent ? safeId('_BV_label_') : null;\n\n if (labelContent || isHorizontal) {\n var labelSize = this.labelSize,\n labelColProps = this.labelColProps;\n var labelTag = isFieldset ? 'legend' : 'label';\n\n if (this.labelSrOnly) {\n if (labelContent) {\n $label = h(labelTag, {\n class: 'sr-only',\n attrs: {\n id: labelId,\n for: labelFor || null\n }\n }, [labelContent]);\n }\n\n $label = h(isHorizontal ? BCol : 'div', {\n props: isHorizontal ? labelColProps : {}\n }, [$label]);\n } else {\n $label = h(isHorizontal ? BCol : labelTag, {\n on: isFieldset ? {\n click: this.onLegendClick\n } : {},\n props: isHorizontal ? _objectSpread(_objectSpread({}, labelColProps), {}, {\n tag: labelTag\n }) : {},\n attrs: {\n id: labelId,\n for: labelFor || null,\n // We add a `tabindex` to legend so that screen readers\n // will properly read the `aria-labelledby` in IE\n tabindex: isFieldset ? '-1' : null\n },\n class: [// Hide the focus ring on the legend\n isFieldset ? 'bv-no-focus-ring' : '', // When horizontal or if a legend is rendered, add 'col-form-label' class\n // for correct sizing as Bootstrap has inconsistent font styling for\n // legend in non-horizontal form groups\n // See: https://github.com/twbs/bootstrap/issues/27805\n isHorizontal || isFieldset ? 'col-form-label' : '', // Emulate label padding top of `0` on legend when not horizontal\n !isHorizontal && isFieldset ? 'pt-0' : '', // If not horizontal and not a legend, we add 'd-block' class to label\n // so that label-align works\n !isHorizontal && !isFieldset ? 'd-block' : '', labelSize ? \"col-form-label-\".concat(labelSize) : '', this.labelAlignClasses, this.labelClass]\n }, [labelContent]);\n }\n }\n\n var $invalidFeedback = h();\n var invalidFeedbackContent = normalizeSlot(SLOT_NAME_INVALID_FEEDBACK) || this.invalidFeedback;\n var invalidFeedbackId = invalidFeedbackContent ? safeId('_BV_feedback_invalid_') : null;\n\n if (invalidFeedbackContent) {\n $invalidFeedback = h(BFormInvalidFeedback, {\n props: {\n ariaLive: feedbackAriaLive,\n id: invalidFeedbackId,\n role: feedbackAriaLive ? 'alert' : null,\n // If state is explicitly `false`, always show the feedback\n state: state,\n tooltip: tooltip\n },\n attrs: {\n tabindex: invalidFeedbackContent ? '-1' : null\n }\n }, [invalidFeedbackContent]);\n }\n\n var $validFeedback = h();\n var validFeedbackContent = normalizeSlot(SLOT_NAME_VALID_FEEDBACK) || this.validFeedback;\n var validFeedbackId = validFeedbackContent ? safeId('_BV_feedback_valid_') : null;\n\n if (validFeedbackContent) {\n $validFeedback = h(BFormValidFeedback, {\n props: {\n ariaLive: feedbackAriaLive,\n id: validFeedbackId,\n role: feedbackAriaLive ? 'alert' : null,\n // If state is explicitly `true`, always show the feedback\n state: state,\n tooltip: tooltip\n },\n attrs: {\n tabindex: validFeedbackContent ? '-1' : null\n }\n }, [validFeedbackContent]);\n }\n\n var $description = h();\n var descriptionContent = normalizeSlot(SLOT_NAME_DESCRIPTION) || this.description;\n var descriptionId = descriptionContent ? safeId('_BV_description_') : null;\n\n if (descriptionContent) {\n $description = h(BFormText, {\n attrs: {\n id: descriptionId,\n tabindex: '-1'\n }\n }, [descriptionContent]);\n } // Update `ariaDescribedby`\n // Screen readers will read out any content linked to by `aria-describedby`\n // even if the content is hidden with `display: none;`, hence we only include\n // feedback IDs if the form group's state is explicitly valid or invalid\n\n\n var ariaDescribedby = this.ariaDescribedby = [descriptionId, state === false ? invalidFeedbackId : null, state === true ? validFeedbackId : null].filter(identity).join(' ') || null;\n var $content = h(isHorizontal ? BCol : 'div', {\n props: isHorizontal ? this.contentColProps : {},\n ref: 'content'\n }, [normalizeSlot(SLOT_NAME_DEFAULT, {\n ariaDescribedby: ariaDescribedby,\n descriptionId: descriptionId,\n id: id,\n labelId: labelId\n }) || h(), $invalidFeedback, $validFeedback, $description]); // Return it wrapped in a form group\n // Note: Fieldsets do not support adding `row` or `form-row` directly\n // to them due to browser specific render issues, so we move the `form-row`\n // to an inner wrapper div when horizontal and using a fieldset\n\n return h(isFieldset ? 'fieldset' : isHorizontal ? BFormRow : 'div', {\n staticClass: 'form-group',\n class: [{\n 'was-validated': this.validated\n }, this.stateClass],\n attrs: {\n id: id,\n disabled: isFieldset ? this.disabled : null,\n role: isFieldset ? null : 'group',\n 'aria-invalid': this.computedAriaInvalid,\n // Only apply `aria-labelledby` if we are a horizontal fieldset\n // as the legend is no longer a direct child of fieldset\n 'aria-labelledby': isFieldset && isHorizontal ? labelId : null\n }\n }, isHorizontal && isFieldset ? [h(BFormRow, [$label, $content])] : [$label, $content]);\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});"],"sourceRoot":""}