{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/icons/icon.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/components/avatar/avatar.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tabs.js"],"names":["ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","findIconComponent","ctx","iconName","components","$options","iconComponent","$parent","props","icon","stacked","BIcon","extend","name","functional","render","h","_ref","data","parent","replace","concat","computeJustifyContent","align","cardHeader","fill","justified","pills","small","tabs","tag","vertical","BNav","_class","children","staticClass","class","_objectSpread2","_watch","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","attrs","role","id","ref","normalizeSlot","mode","noFade","CLASS_NAME","SIZES","FONT_SIZE_SCALE","BADGE_FONT_SIZE_SCALE","computeSize","linkProps","alt","ariaLabel","badge","badgeLeft","badgeOffset","badgeTop","badgeVariant","button","buttonType","rounded","size","square","src","text","variant","BAvatar","bvAvatarGroup","localSrc","computedSize","computedVariant","computedRounded","fontStyle","fontSize","indexOf","marginStyle","overlapScale","marginLeft","marginRight","badgeStyle","offset","top","bottom","left","right","onImgError","event","onClick","_class2","type","link","style","width","height","on","error","$badge","hasBadgeSlot","badgeText","componentData","click","_makeModelMixin","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","notDisabled","tab","BVTabButton","controls","noKeyNav","posInSet","setSize","tabIndex","focus","$refs","handleEvt","keyCode","shiftKey","_this$tab","title","titleItemClass","titleLinkClass","titleLinkAttributes","$link","activeNavItemClass","tabindex","keydown","navProps","contentClass","end","navClass","navWrapperClass","noNavStyle","BTabs","provide","currentTab","registeredTabs","localNavClass","classes","$tab","previousTab","nextTab","index","_this","map","$nextTick","slice","updateTabs","created","$_observer","setObserver","$t","_this2","undefined","disconnect","handler","content","childList","subtree","attributes","attributeFilter","getTabs","$tabs","$children","order","selector","join","$el","a","b","reverse","find","getButtonForTab","buttons","$btn","$button","$forceUpdate","result","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-3f001c43.3d56c0ae.js","sourcesContent":["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 { Vue, mergeData } from '../vue';\nimport { NAME_ICON } from '../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { RX_ICON_PREFIX } from '../constants/regex';\nimport { omit, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { pascalCase, trim } from '../utils/string';\nimport { BIconBlank } from './icons';\nimport { props as BVIconBaseProps } from './helpers/icon-base'; // --- Helper methods ---\n\nvar findIconComponent = function findIconComponent(ctx, iconName) {\n if (!ctx) {\n return null;\n }\n\n var components = (ctx.$options || {}).components;\n var iconComponent = components[iconName];\n return iconComponent || findIconComponent(ctx.$parent, iconName);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BVIconBaseProps, ['content', 'stacked'])), {}, {\n icon: makeProp(PROP_TYPE_STRING),\n stacked: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_ICON); // --- Main component ---\n// Helper BIcon component\n// Requires the requested icon component to be installed\n// @vue/component\n\nexport var BIcon = /*#__PURE__*/Vue.extend({\n name: NAME_ICON,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props,\n parent = _ref.parent;\n var icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, ''); // If parent context exists, we check to see if the icon has been registered\n // either locally in the parent component, or globally at the `$root` level\n // If not registered, we render a blank icon\n\n return h(icon ? findIconComponent(parent, \"BIcon\".concat(icon)) || BIconBlank : BIconBlank, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n icon: null\n })\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 _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});","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 { Vue } from '../../vue';\nimport { NAME_AVATAR } from '../../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_IMG_ERROR } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BADGE } from '../../constants/slots';\nimport { isNumber, isNumeric, isString } from '../../utils/inspect';\nimport { toFloat } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIcon } from '../../icons/icon';\nimport { BIconPersonFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Constants ---\n\nvar CLASS_NAME = 'b-avatar';\nvar SIZES = ['sm', null, 'lg'];\nvar FONT_SIZE_SCALE = 0.4;\nvar BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7; // --- Helper methods ---\n\nexport var computeSize = function computeSize(value) {\n // Parse to number when value is a float-like string\n value = isString(value) && isNumeric(value) ? toFloat(value, 0) : value; // Convert all numbers to pixel values\n\n return isNumber(value) ? \"\".concat(value, \"px\") : value || null;\n}; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['active', 'event', 'routerTag']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n alt: makeProp(PROP_TYPE_STRING, 'avatar'),\n ariaLabel: makeProp(PROP_TYPE_STRING),\n badge: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n badgeLeft: makeProp(PROP_TYPE_BOOLEAN, false),\n badgeOffset: makeProp(PROP_TYPE_STRING),\n badgeTop: makeProp(PROP_TYPE_BOOLEAN, false),\n badgeVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n button: makeProp(PROP_TYPE_BOOLEAN, false),\n buttonType: makeProp(PROP_TYPE_STRING, 'button'),\n icon: makeProp(PROP_TYPE_STRING),\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n size: makeProp(PROP_TYPE_NUMBER_STRING),\n square: makeProp(PROP_TYPE_BOOLEAN, false),\n src: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_AVATAR); // --- Main component ---\n// @vue/component\n\nexport var BAvatar = /*#__PURE__*/Vue.extend({\n name: NAME_AVATAR,\n mixins: [normalizeSlotMixin],\n inject: {\n bvAvatarGroup: {\n default: null\n }\n },\n props: props,\n data: function data() {\n return {\n localSrc: this.src || null\n };\n },\n computed: {\n computedSize: function computedSize() {\n // Always use the avatar group size\n var bvAvatarGroup = this.bvAvatarGroup;\n return computeSize(bvAvatarGroup ? bvAvatarGroup.size : this.size);\n },\n computedVariant: function computedVariant() {\n var bvAvatarGroup = this.bvAvatarGroup;\n return bvAvatarGroup && bvAvatarGroup.variant ? bvAvatarGroup.variant : this.variant;\n },\n computedRounded: function computedRounded() {\n var bvAvatarGroup = this.bvAvatarGroup;\n var square = bvAvatarGroup && bvAvatarGroup.square ? true : this.square;\n var rounded = bvAvatarGroup && bvAvatarGroup.rounded ? bvAvatarGroup.rounded : this.rounded;\n return square ? '0' : rounded === '' ? true : rounded || 'circle';\n },\n fontStyle: function fontStyle() {\n var size = this.computedSize;\n var fontSize = SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(FONT_SIZE_SCALE, \")\") : null;\n return fontSize ? {\n fontSize: fontSize\n } : {};\n },\n marginStyle: function marginStyle() {\n var size = this.computedSize,\n bvAvatarGroup = this.bvAvatarGroup;\n var overlapScale = bvAvatarGroup ? bvAvatarGroup.overlapScale : 0;\n var value = size && overlapScale ? \"calc(\".concat(size, \" * -\").concat(overlapScale, \")\") : null;\n return value ? {\n marginLeft: value,\n marginRight: value\n } : {};\n },\n badgeStyle: function badgeStyle() {\n var size = this.computedSize,\n badgeTop = this.badgeTop,\n badgeLeft = this.badgeLeft,\n badgeOffset = this.badgeOffset;\n var offset = badgeOffset || '0px';\n return {\n fontSize: SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(BADGE_FONT_SIZE_SCALE, \" )\") : null,\n top: badgeTop ? offset : null,\n bottom: badgeTop ? null : offset,\n left: badgeLeft ? offset : null,\n right: badgeLeft ? null : offset\n };\n }\n },\n watch: {\n src: function src(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localSrc = newValue || null;\n }\n }\n },\n methods: {\n onImgError: function onImgError(event) {\n this.localSrc = null;\n this.$emit(EVENT_NAME_IMG_ERROR, event);\n },\n onClick: function onClick(event) {\n this.$emit(EVENT_NAME_CLICK, event);\n }\n },\n render: function render(h) {\n var _class2;\n\n var variant = this.computedVariant,\n disabled = this.disabled,\n rounded = this.computedRounded,\n icon = this.icon,\n src = this.localSrc,\n text = this.text,\n fontStyle = this.fontStyle,\n marginStyle = this.marginStyle,\n size = this.computedSize,\n button = this.button,\n type = this.buttonType,\n badge = this.badge,\n badgeVariant = this.badgeVariant,\n badgeStyle = this.badgeStyle;\n var link = !button && isLink(this);\n var tag = button ? BButton : link ? BLink : 'span';\n var alt = this.alt;\n var ariaLabel = this.ariaLabel || null;\n var $content = null;\n\n if (this.hasNormalizedSlot()) {\n // Default slot overrides props\n $content = h('span', {\n staticClass: 'b-avatar-custom'\n }, [this.normalizeSlot()]);\n } else if (src) {\n $content = h('img', {\n style: variant ? {} : {\n width: '100%',\n height: '100%'\n },\n attrs: {\n src: src,\n alt: alt\n },\n on: {\n error: this.onImgError\n }\n });\n $content = h('span', {\n staticClass: 'b-avatar-img'\n }, [$content]);\n } else if (icon) {\n $content = h(BIcon, {\n props: {\n icon: icon\n },\n attrs: {\n 'aria-hidden': 'true',\n alt: alt\n }\n });\n } else if (text) {\n $content = h('span', {\n staticClass: 'b-avatar-text',\n style: fontStyle\n }, [h('span', text)]);\n } else {\n // Fallback default avatar content\n $content = h(BIconPersonFill, {\n attrs: {\n 'aria-hidden': 'true',\n alt: alt\n }\n });\n }\n\n var $badge = h();\n var hasBadgeSlot = this.hasNormalizedSlot(SLOT_NAME_BADGE);\n\n if (badge || badge === '' || hasBadgeSlot) {\n var badgeText = badge === true ? '' : badge;\n $badge = h('span', {\n staticClass: 'b-avatar-badge',\n class: _defineProperty({}, \"badge-\".concat(badgeVariant), badgeVariant),\n style: badgeStyle\n }, [hasBadgeSlot ? this.normalizeSlot(SLOT_NAME_BADGE) : badgeText]);\n }\n\n var componentData = {\n staticClass: CLASS_NAME,\n class: (_class2 = {}, _defineProperty(_class2, \"\".concat(CLASS_NAME, \"-\").concat(size), size && SIZES.indexOf(size) !== -1), _defineProperty(_class2, \"badge-\".concat(variant), !button && variant), _defineProperty(_class2, \"rounded\", rounded === true), _defineProperty(_class2, \"rounded-\".concat(rounded), rounded && rounded !== true), _defineProperty(_class2, \"disabled\", disabled), _class2),\n style: _objectSpread(_objectSpread({}, marginStyle), {}, {\n width: size,\n height: size\n }),\n attrs: {\n 'aria-label': ariaLabel || null\n },\n props: button ? {\n variant: variant,\n disabled: disabled,\n type: type\n } : link ? pluckProps(linkProps, this) : {},\n on: button || link ? {\n click: this.onClick\n } : {}\n };\n return h(tag, componentData, [$content, $badge]);\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":""}