{"version":3,"sources":["webpack:///./src/components/EditorialTabs/EditorialTabs.vue?ade9","webpack:///src/components/EditorialTabs/EditorialTabs.vue","webpack:///./src/components/EditorialTabs/EditorialTabs.vue?7a16","webpack:///./src/components/EditorialTabs/EditorialTabs.vue","webpack:///./node_modules/portal-vue/dist/portal-vue.common.js","webpack:///./node_modules/bootstrap-vue/esm/components/alert/alert.js","webpack:///./node_modules/bootstrap-vue/esm/components/alert/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/aspect/aspect.js","webpack:///./node_modules/bootstrap-vue/esm/components/aspect/index.js","webpack:///./node_modules/bootstrap-vue/esm/icons/icon.js","webpack:///./node_modules/bootstrap-vue/esm/components/avatar/avatar.js","webpack:///./node_modules/bootstrap-vue/esm/components/avatar/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/badge/badge.js","webpack:///./node_modules/bootstrap-vue/esm/components/badge/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-link.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-item.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/button/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/button-group/button-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/button-group/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/button-toolbar/button-toolbar.js","webpack:///./node_modules/bootstrap-vue/esm/components/button-toolbar/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/calendar/index.js","webpack:///./node_modules/bootstrap-vue/esm/utils/prefix-prop-name.js","webpack:///./node_modules/bootstrap-vue/esm/utils/unprefix-prop-name.js","webpack:///./node_modules/bootstrap-vue/esm/utils/copy-props.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-footer.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/image/img.js","webpack:///./node_modules/bootstrap-vue/esm/components/image/img-lazy.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img-lazy.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/index.js","webpack:///./node_modules/bootstrap-vue/esm/utils/noop.js","webpack:///./node_modules/bootstrap-vue/esm/components/carousel/carousel.js","webpack:///./node_modules/bootstrap-vue/esm/components/carousel/carousel-slide.js","webpack:///./node_modules/bootstrap-vue/esm/components/carousel/index.js","webpack:///./node_modules/bootstrap-vue/esm/utils/bv-collapse.js","webpack:///./node_modules/bootstrap-vue/esm/utils/target.js","webpack:///./node_modules/bootstrap-vue/esm/directives/toggle/toggle.js","webpack:///./node_modules/bootstrap-vue/esm/components/collapse/collapse.js","webpack:///./node_modules/bootstrap-vue/esm/components/collapse/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-item.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-item-button.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-divider.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-form.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/embed/embed.js","webpack:///./node_modules/bootstrap-vue/esm/components/embed/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form-datalist.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-file/form-file.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-file/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-spinbutton/form-spinbutton.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-spinbutton/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-tags/form-tag.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-tags/form-tags.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-tags/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/time/time.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-timepicker/form-timepicker.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-timepicker/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/image/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-addon.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-prepend.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-append.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/container.js","webpack:///./node_modules/bootstrap-vue/esm/components/jumbotron/jumbotron.js","webpack:///./node_modules/bootstrap-vue/esm/components/jumbotron/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/row.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/link/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/list-group/list-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/list-group/list-group-item.js","webpack:///./node_modules/bootstrap-vue/esm/components/list-group/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-aside.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/nav/nav-item.js","webpack:///./node_modules/bootstrap-vue/esm/components/nav/nav-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/nav/nav-form.js","webpack:///./node_modules/bootstrap-vue/esm/components/nav/nav-item-dropdown.js","webpack:///./node_modules/bootstrap-vue/esm/components/nav/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/navbar/navbar.js","webpack:///./node_modules/bootstrap-vue/esm/components/navbar/navbar-nav.js","webpack:///./node_modules/bootstrap-vue/esm/components/navbar/navbar-brand.js","webpack:///./node_modules/bootstrap-vue/esm/components/navbar/navbar-toggle.js","webpack:///./node_modules/bootstrap-vue/esm/components/navbar/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","webpack:///./node_modules/bootstrap-vue/esm/components/overlay/overlay.js","webpack:///./node_modules/bootstrap-vue/esm/components/overlay/index.js","webpack:///./node_modules/bootstrap-vue/esm/utils/range.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination-nav/pagination-nav.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination-nav/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-popper.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-tooltip-template.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-tooltip.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/tooltip.js","webpack:///./node_modules/bootstrap-vue/esm/components/popover/helpers/bv-popover-template.js","webpack:///./node_modules/bootstrap-vue/esm/components/popover/helpers/bv-popover.js","webpack:///./node_modules/bootstrap-vue/esm/components/popover/popover.js","webpack:///./node_modules/bootstrap-vue/esm/directives/popover/popover.js","webpack:///./node_modules/bootstrap-vue/esm/directives/popover/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/popover/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/progress/progress-bar.js","webpack:///./node_modules/bootstrap-vue/esm/components/progress/progress.js","webpack:///./node_modules/bootstrap-vue/esm/components/progress/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/spinner/index.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/has-listener.js","webpack:///./node_modules/bootstrap-vue/esm/utils/startcase.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/constants.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/normalize-fields.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-stacked.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tr.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/td.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/th.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-table-renderer.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table-lite.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table-simple.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/time/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/toast/toaster.js","webpack:///./node_modules/bootstrap-vue/esm/components/toast/toast.js","webpack:///./node_modules/bootstrap-vue/esm/components/toast/helpers/bv-toast.js","webpack:///./node_modules/bootstrap-vue/esm/components/toast/index.js","webpack:///./node_modules/bootstrap-vue/esm/directives/tooltip/tooltip.js","webpack:///./node_modules/bootstrap-vue/esm/directives/tooltip/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/index.js","webpack:///./node_modules/bootstrap-vue/esm/directives/hover/index.js","webpack:///./node_modules/bootstrap-vue/esm/directives/modal/index.js","webpack:///./node_modules/bootstrap-vue/esm/directives/scrollspy/scrollspy.class.js","webpack:///./node_modules/bootstrap-vue/esm/directives/scrollspy/scrollspy.js","webpack:///./node_modules/bootstrap-vue/esm/directives/scrollspy/index.js","webpack:///./node_modules/bootstrap-vue/esm/directives/toggle/index.js","webpack:///./node_modules/bootstrap-vue/esm/directives/visible/index.js","webpack:///./node_modules/bootstrap-vue/esm/directives/index.js","webpack:///./node_modules/bootstrap-vue/esm/index.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","model","on","scrollIntoViewport","value","callback","$$v","tabIndex","expression","_l","item","itemIndex","key","isActive","scopedSlots","_u","fn","iconName","tabTitle","proxy","title","subtitle","text","ctaLinks","image","layout","imageStyle","textOnTwoColumns","verticalTextAlign","common","actpageFullUrl","_e","staticRenderFns","mixins","name","components","PgImage","PgButton","Tabs","Editorial","PgIconText","data","methods","index","window","scrollTo","component","_interopDefault","ex","Object","defineProperty","exports","Vue","_typeof","obj","Symbol","iterator","constructor","prototype","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","Array","isArray","i","arr2","length","iter","toString","call","from","TypeError","inBrowser","freeze","combinePassengers","transports","slotProps","arguments","undefined","reduce","passengers","transport","temp","newPassengers","concat","stableSort","array","compareFn","map","v","idx","sort","a","b","c","pick","keys","acc","hasOwnProperty","targets","sources","Wormhole","extend","trackInstances","open","to","_transport$order","order","Infinity","newTransport","indexOf","set","currentIndex","$_getTransportIndex","newTransports","slice","push","close","force","splice","registerTarget","target","vm","console","warn","$set","unregisterTarget","$delete","registerSource","source","unregisterSource","hasTarget","hasSource","hasContentFor","_ref","wormhole","_id","Portal","props","disabled","type","Boolean","String","default","Number","slim","tag","Math","round","random","created","_this","$nextTick","mounted","sendUpdate","updated","clear","beforeDestroy","watch","newValue","oldValue","closer","normalizeSlots","$scopedSlots","$slots","normalizeOwnChildren","children","slotContent","h","Tag","class","style","display","PortalTarget","multiple","required","transition","Function","firstRender","ownTransports","$emit","newVal","oldVal","_this2","computed","noWrapper","_id$1","portalProps","targetProps","MountingPortal","inheritAttrs","append","bail","mountTo","targetSlim","targetSlotProps","targetTag","document","el","querySelector","$props","portalTarget","mountEl","createElement","appendChild","_props","parent","$parent","propsData","error","$el","parentNode","removeChild","$destroy","manual","$attrs","$listeners","content","install","Vue$$1","options","portalName","portalTargetName","MountingPortalName","_defineProperty","enumerable","configurable","writable","show","isNaN","BAlert","prop","event","variant","dismissible","dismissLabel","fade","countDownTimerId","countDown","localShow","clearTimer","setTimeout","dismiss","clearInterval","$alert","$dismissBtn","click","normalizeSlot","_uid","role","noFade","AlertPlugin","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","test","len","_arr","_n","_d","_s","_i","next","done","err","CLASS_NAME","RX_ASPECT","RX_SEPARATOR","BAspect","aspect","padding","ratio","_aspect$split$map","split","_aspect$split$map2","width","height","abs","$sizer","paddingBottom","$content","marginLeft","AspectPlugin","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","apply","_objectSpread","forEach","getOwnPropertyDescriptors","defineProperties","RX_ICON_PREFIX","BIcon","functional","icon","stacked","replace","$options","componentRefOrName","RX_NUMBER","FONT_SIZE_SCALE","DEFAULT_SIZES","sm","md","lg","href","rel","activeClass","exact","exactActiveClass","noPrefetch","src","alt","size","square","rounded","button","buttonType","ariaLabel","BAvatar","_class","isButton","isBLink","fontSize","componentData","AvatarPlugin","pill","BBadge","active","BadgePlugin","html","ariaCurrent","BBreadcrumbLink","suppliedProps","domProps","BBreadcrumbItem","items","BBreadcrumb","childNodes","activeDefined","BreadcrumbPlugin","ButtonPlugin","BButton","BBtn","BButtonClose","BBtnClose","vertical","ariaRole","BButtonGroup","ButtonGroupPlugin","BBtnGroup","ITEM_SELECTOR","join","BButtonToolbar","justify","keyNav","getItems","onFocusin","evt","preventDefault","stopPropagation","focusFirst","stop","onKeydown","keyCode","shift","shiftKey","UP","LEFT","focusPrev","DOWN","RIGHT","focusLast","focusNext","setItemFocus","focus","reverse","tabindex","focusin","keydown","ButtonToolbarPlugin","BBtnToolbar","CalendarPlugin","BCalendar","prefix","transformFn","identity","copied","bgVariant","borderVariant","textVariant","titleTag","BCardTitle","subTitle","subTitleTag","subTitleTextVariant","BCardSubTitle","card","bind","bodyClass","overlay","BCardBody","_ref2","cardTitle","cardSubTitle","cardContent","bodyTag","bodyBgVariant","bodyBorderVariant","bodyTextVariant","header","headerHtml","headerClass","BCardHeader","headerTag","headerBgVariant","headerBorderVariant","headerTextVariant","footer","footerHtml","footerClass","BCardFooter","footerTag","footerBgVariant","footerBorderVariant","footerTextVariant","top","bottom","start","left","end","right","BCardImg","baseClass","cardImgProps","imgSrc","align","noBody","BCard","slots","imgFirst","imgLast","img","imgBottom","imgLeft","imgStart","imgRight","imgEnd","BLANK_TEMPLATE","srcset","sizes","block","fluid","fluidGrow","thumbnail","center","blank","blankColor","color","encodeURIComponent","BImg","blankSrc","blankWidth","blankHeight","offset","BImgLazy","directives","bVisible","isShown","computedSrc","computedBlank","computedWidth","computedHeight","computedSrcset","computedSizes","visible","updateShowProp","doShow","_modifiers","modifiers","BCardImgLazy","lazyProps","textTag","BCardText","deck","columns","BCardGroup","CardPlugin","noop","DIRECTION","dirClass","overlayClass","prev","TRANS_DURATION","TOUCH_EVENT_COMPAT_WAIT","SWIPE_THRESHOLD","PointerType","TOUCH","PEN","TransitionEndEvents","WebkitTransition","MozTransition","OTransition","BCarousel","provide","bvCarousel","labelPrev","labelNext","labelGotoSlide","labelIndicators","interval","indicators","controls","noAnimation","noWrap","noTouch","noHoverPause","imgWidth","imgHeight","background","isSliding","transitionEndEvent","slides","direction","isPaused","touchStartX","touchDeltaX","numSlides","setSlide","pause","doSlide","_intervalId","_animationTimeout","_touchTimeout","updateSlides","$refs","inner","subtree","childList","attributes","attributeFilter","clearTimeout","slide","visibilityState","hidden","floor","$once","setInterval","max","restart","contains","activeElement","isCycling","calcDirection","currentSlide","nextSlide","called","onceTransEnd","events","min","curIndex","nextIndex","handleClick","SPACE","ENTER","handleSwipe","absDeltaX","touchStart","pointerType","toUpperCase","clientX","touches","touchMove","touchEnd","_this3","ref","id","safeId","prevHandler","nextHandler","rawName","mouseenter","mouseleave","focusout","tagName","imgAlt","imgBlank","imgBlankColor","contentVisibleUp","contentTag","caption","captionHtml","captionTag","textHtml","BCarouselSlide","inject","contentClasses","noDrag","dragstart","e","contentChildren","some","CarouselPlugin","scrollHeight","onAfterLeave","TRANSITION_PROPS","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","TRANSITION_HANDLERS","enter","afterEnter","leave","afterLeave","BVCollapse","appear","allListenTypes","hover","BVBoundListeners","binding","t","vnode","listenTypes","listener","elm","boundListeners","BV_TOGGLE","BV_TOGGLE_STATE","BV_TOGGLE_CONTROLS","BV_TOGGLE_TARGETS","EVENT_TOGGLE","EVENT_STATE","EVENT_STATE_SYNC","EVENT_STATE_REQUEST","resetProp","handleTargets","context","$root","VBToggle","toggleDirectiveHandler","state","$on","componentUpdated","unbind","$off","EVENT_ACCORDION","BCollapse","isNav","accordion","transitioning","classObject","collapse","emitState","listenOnRoot","handleToggleEvt","handleAccordionEvt","setWindowEvents","handleResize","emitSync","deactivated","activated","toggle","onEnter","onAfterEnter","onLeave","checkDisplayBlock","restore","isBlock","clickHandler","openedId","scope","CollapsePlugin","menuClass","toggleTag","toggleText","toggleClass","noCaret","splitHref","splitTo","splitVariant","splitClass","splitButtonType","validator","lazy","BDropdown","dropdownClasses","directionClass","boundary","menuClasses","toggleClasses","buttonContent","btnProps","onSplitClick","mousedown","onMousedown","menu","hide","BDropdownItem","bvDropdown","linkClass","closeDropdown","onClick","buttonClass","BDropdownItemButton","BDropdownHeader","BDropdownDivider","inline","novalidate","validated","BForm","BDropdownForm","formClass","BDropdownText","headerVariant","headerClasses","ariaDescribedby","BDropdownGroup","headerId","adb","ariaDescribedBy","trim","DropdownPlugin","BDd","BDdItem","BDropdownItemBtn","BDdItemButton","BDdItemBtn","BDdHeader","BDdDivider","BDdForm","BDdText","BDdGroup","str","BEmbed","EmbedPlugin","BFormDatalist","formOptions","option","FormPlugin","BDatalist","BFormText","BFormInvalidFeedback","BFormFeedback","BFormValidFeedback","BFormRow","VALUE_EMPTY_DEPRECATED_MSG","isValidValue","every","BFormFile","accept","capture","placeholder","browseText","dropPlaceholder","directory","noTraverse","noDrop","fileNameFormatter","selectedFile","dragging","hasFocus","selectLabel","files","hasNormalizedSlot","names","f","file","reset","focusHandler","plain","$input","input","onFileChange","dataTransfer","setFiles","queue","webkitGetAsEntry","traverseFileTree","Promise","all","then","filesArr","filesArray","onReset","onDragover","custom","dropEffect","onDragleave","onDrop","path","resolve","isFile","$path","isDirectory","createReader","readEntries","entries","stateClass","form","webkitdirectory","change","label","for","dragover","dragleave","drop","FormFilePlugin","BFile","HOME","END","PAGEUP","PAGEDOWN","DEFAULT_MIN","DEFAULT_MAX","DEFAULT_STEP","DEFAULT_REPEAT_DELAY","DEFAULT_REPEAT_INTERVAL","DEFAULT_REPEAT_THRESHOLD","DEFAULT_REPEAT_MULTIPLIER","defaultValue","BFormSpinbutton","step","wrap","formatterFn","readonly","ariaControls","labelDecrement","labelIncrement","locale","repeatDelay","repeatInterval","repeatThreshold","repeatStepMultiplier","localValue","computedStep","computedMin","computedMax","computedDelay","computedInterval","computedThreshold","computedStepMultiplier","computedPrecision","computedMultiplier","pow","valueAsFixed","toFixed","computedLocale","locales","nf","Intl","NumberFormat","resolvedOptions","computedRTL","defaultFormatter","precision","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","format","_value","_disabled","clearRepeat","_readonly","$_autoDelayTimer","$_autoRepeatTimer","$_keyIsDown","spinner","_unused","blur","_unused2","emitChange","stepValue","multiplier","onFocusBlur","stepUp","stepDown","altKey","ctrlKey","metaKey","resetTimers","handleStepRepeat","onKeyup","stepper","threshold","delay","count","onMouseup","setMouseup","body","_unused3","spinId","isVertical","isInline","isDisabled","isReadonly","isRequired","hasValue","formatter","makeButton","IconCmp","keyRef","shortcut","btnDisabled","slotName","$icon","scale","handler","currentTarget","_unused4","touchstart","$increment","$decrement","$hidden","$spin","dir","lang","keyup","FormSpinbuttonPlugin","BSpinbutton","BFormTag","removeLabel","onDelete","DELETE","tagId","tagLabelId","$remove","$tag","TYPES","RX_SPACES","BACKSPACE","tags","cleanTagsState","valid","invalid","duplicate","BFormTags","inputId","autofocus","inputType","inputClass","inputAttrs","addButtonText","addButtonVariant","tagVariant","tagClass","tagPills","tagRemoveLabel","tagRemovedLabel","tagValidator","duplicateTagText","invalidTagText","separator","removeOnDelete","addOnChange","noAddOnEnter","noOuterFocus","newTag","removedTags","tagsState","computedInputId","computedInputType","computedInputAttrs","computedInputHandlers","onInputInput","onInputChange","onInputKeydown","computedSeparator","computedSeparatorRegExp","RegExp","computedJoiner","joiner","charAt","disableAddButton","splitTags","validateTag","duplicateTags","hasDuplicateTags","invalidTags","hasInvalidTags","old","handleAutofocus","addTag","parsed","parseTags","getInput","invalidAndDuplicates","removeTag","composing","separatorRe","onFocusout","_this4","_this5","defaultRender","inputHandlers","isInvalid","isDuplicate","$tags","remove","invalidFeedbackId","duplicateFeedbackId","outline","minWidth","$button","invisible","tagListId","$field","$ul","$feedback","$invalid","forceShow","$duplicate","_this6","$output","$removed","FormTagsPlugin","BTags","BTag","NUMERIC","RE_TIME","padLeftZeros","num","hms","hh","mm","ss","_hms$split$map$map","_hms$split$map$map2","hours","minutes","seconds","ampm","requireSeconds","BTime","showSeconds","hour12","ariaLabelledby","secondsStep","minutesStep","hideHeader","labelNoTimeSelected","labelSelected","labelHours","labelMinutes","labelSeconds","labelAmpm","labelAm","labelPm","modelHours","modelMinutes","modelSeconds","modelAmpm","isLive","computedHMS","hour","minute","second","dtf","DateTimeFormat","resolved","hourCycle","computedLang","computedHourCycle","is12Hour","isRTL","formatted","formattedTimeString","valueId","computedAriaLabelledby","timeFormatter","timeZone","numberFormatter","Date","UTC","spinScopedSlots","increment","decrement","_ref3","flipV","_parseHMS","newHours","oldHours","setLive","spinners","formatHours","formatMinutes","formatSeconds","formatAmpm","setHours","setMinutes","setSeconds","setAmpm","onSpinLeftRight","cmp","spinIds","makeSpinbutton","classes","spinbuttonProps","refInFor","makeColon","shiftV","$spinners","$value","$header","$slot","propsMixin","resetValue","buttonOnly","buttonVariant","nowButton","labelNowButton","nowButtonVariant","resetButton","labelResetButton","resetButtonVariant","noCloseButton","labelCloseButton","closeButtonVariant","BFormTimepicker","localHMS","localLocale","formattedValue","isVisible","timeProps","self","control","setAndClose","onInput","onContext","ctx","onNowButton","now","getHours","getMinutes","getSeconds","onResetButton","onCloseButton","onShow","onShown","time","onHidden","defaultButtonFn","isHovered","$footer","_label","_label2","$time","rtl","shown","FormTimepickerPlugin","BTimepicker","ImagePlugin","BInputGroupText","commonProps","isText","BInputGroupAddon","BInputGroupPrepend","BInputGroupAppend","prepend","prependHtml","appendHtml","BInputGroup","InputGroupPlugin","BContainer","container","containerFluid","headerLevel","lead","leadHtml","leadTag","BJumbotron","_class2","JumbotronPlugin","COMMON_ALIGNMENT","strNum","computeRowColsClass","memoize","breakpoint","cols","computeRowColsBreakpoint","rowColsPropList","breakpoints","rowColsProps","noGutters","alignV","alignH","alignContent","BRow","_classList$push","classList","LayoutPlugin","BCol","LinkPlugin","BLink","flush","horizontal","BListGroup","actionTags","action","BListGroupItem","isAction","itemProps","ListGroupPlugin","BMediaBody","verticalAlign","BMediaAside","rightAlign","BMedia","$aside","$default","MediaPlugin","BNavItem","linkAttrs","linkClasses","listeners","BNavText","BNavForm","_ref$listeners","$form","BNavItemDropdown","NavPlugin","BNav","BNavItemDd","BNavDropdown","BNavDd","plugins","toggleable","fixed","sticky","print","BNavbar","bvNavbar","breakpointClass","xs","computeJustifyContent","BNavbarNav","fill","justified","small","BNavbarBrand","isLink","BNavbarToggle","toggleState","handleStateEvt","defaultPrevented","expanded","NavbarPlugin","BNavToggle","BSpinner","positionCover","BOverlay","bgColor","opacity","number","noCenter","spinnerType","spinnerVariant","spinnerSmall","overlayTag","wrapTag","zIndex","computedRounded","computedVariant","overlayScope","defaultOverlayFn","$overlay","$background","backgroundColor","backdropFilter","transform","OverlayPlugin","range","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","startNumber","numberOfPages","val","limit","page","stopImmediatePropagation","pills","hideGotoEndButtons","labelFirstPage","firstText","firstNumber","firstClass","labelPrevPage","prevText","prevClass","labelNextPage","nextText","nextClass","labelLastPage","lastText","lastNumber","lastClass","labelPage","pageClass","hideEllipsis","ellipsisText","ellipsisClass","curr","currentPage","localNumberOfPages","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","lastPageNumber","pageList","_this$paginationParam","pages","_i2","_i3","handleKeyNav","getButtons","btn","setBtnFocus","focusCurrent","find","buttons","cnt","_this7","pageNumbers","p","_this$paginationParam2","isActivePage","pageNumber","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","$btnContent","$inner","linkProps","makeEllipsis","isLast","makePageButton","btnContent","makePage","$firstPageBtn","$lastPageBtn","$pagination","DEFAULT_PER_PAGE","DEFAULT_TOTAL_ROWS","perPage","totalRows","BPagination","pagination","result","ceil","pageSizeNumberOfPages","pageNum","PaginationPlugin","baseUrl","useRouter","linkGen","pageGen","noPageDetect","BPaginationNav","computedValue","setNumberOfPages","$router","$watch","guessCurrentPage","getPageInfo","link","info","_link","makeLink","resolveLink","_link2","pathname","hash","search","query","resolveRoute","route","$route","guess","currRoute","loc","location","currLink","PaginationNavPlugin","AttachmentMap","AUTO","TOP","BOTTOM","TOPLEFT","TOPRIGHT","RIGHTTOP","RIGHTBOTTOM","BOTTOMLEFT","BOTTOMRIGHT","LEFTTOP","LEFTBOTTOM","OffsetMap","BVPopper","placement","fallbackPlacement","boundaryPadding","arrowPadding","attachment","getAttachment","templateType","popperConfig","getOffset","flip","behavior","arrow","element","preventOverflow","boundariesElement","onCreate","originalPlacement","popperPlacementChange","onUpdate","$_popper","popperCreate","beforeMount","popperUpdate","popperDestroy","destroyed","arrowOffset","parseFloat","destroy","scheduleUpdate","renderTemplate","beforeEnter","beforeLeave","BVTooltipTemplate","extends","customClass","interactive","templateClasses","noninteractive","templateAttributes","scopedStyleAttrs","templateListeners","$title","innerHTML","MODAL_SELECTOR","MODAL_CLOSE_EVENT","DROPDOWN_CLASS","DROPDOWN_OPEN_SELECTOR","templateData","triggers","BVTooltip","activeTrigger","computedId","parseInt","computedTriggers","toLowerCase","isWithActiveTrigger","trigger","computedTemplateData","newTriggers","oldTriggers","unListen","listen","handleTemplateUpdate","disable","enable","$_tip","$_hoverTimeout","$_hoverState","$_visibleInterval","$_enabled","$_noop","getTarget","scopeId","forceHide","setWhileOpenListeners","clearHoverTimeout","clearVisibilityInterval","destroyTemplate","getTemplate","updateData","titleUpdated","fixTitle","createTemplateAndShow","getContainer","Template","$tip","getPlacementTarget","getBoundary","onTemplateShow","onTemplateShown","onTemplateHide","onTemplateHidden","handleEvent","$mount","hideTemplate","clearActiveTriggers","localPlacementTarget","removeAriaDescribedby","restoreTitle","getTemplateElement","dropdownOpen","showEvt","buildEvent","cancelable","emitEvent","addAriaDescribedby","tip","hideEvt","prevHoverState","getTargetId","isInModal","isDropdown","desc","d","relatedTarget","componentId","vueTarget","bvEvt","evtName","setRootListener","method","doHide","doDisable","doEnable","setModalListener","setDropdownListener","visibleCheck","setOnTouchStartListener","_this8","_this9","documentElement","__vue__","evtTarget","_this10","_this11","BTooltip","localTitle","localContent","templateTitleContent","_show","$_bv_toolpop","updateContent","doOpen","doClose","Component","getComponent","$toolpop","_scopeId","onHide","onDisabled","onEnabled","setTitle","setContent","BVPopoverTemplate","titleDomProps","contentDomProps","BVPopover","BPopover","BV_POPOVER","DefaultTrigger","validTriggers","htmlRE","noFadeRE","placementRE","boundaryRE","delayRE","delayShowRE","delayHideRE","offsetRE","variantRE","spacesRE","bindings","NAME","config","animation","arg","mod","selectedTriggers","__bv_prev_data__","oldData","newData","removePopover","VBPopover","VBPopoverPlugin","PopoverPlugin","BProgressBar","bvProgress","labelHtml","striped","animated","showProgress","showValue","progressBarClasses","computedStriped","computedAnimated","progressBarStyles","computedProgress","computedShowProgress","computedShowValue","BProgress","progressHeight","ProgressPlugin","SpinnerPlugin","hasListener","$events","_events","RX_UNDERSCORE","RX_LOWER_UPPER","RX_START_SPACE_WORD","startCase","$1","$2","IGNORED_FIELD_KEYS","_rowVariant","_cellVariants","_showDetails","EVENT_FILTER","field","origFields","fields","sample","k","memo","primaryKey","localItems","computedFields","computedFieldsObj","computedItems","paginatedItems","sortedItems","filteredItems","localFilter","sortBy","localSortBy","sortDesc","localSortDesc","apiUrl","newItems","getFieldFormatter","isStacked","isStackedAlways","stackedTableClasses","row","ignoreFields","includeFields","fieldsObj","filterByFormatted","stringifyObjectValues","DEBOUNCE_DEPRECATED_MSG","filterFunction","filterIgnoredFields","filterIncludedFields","filterDebounce","deprecated","isFiltered","filterSanitize","computedFilterIgnored","computedFilterIncluded","computedFilterDebounce","ms","localFiltering","hasProvider","noProviderFiltering","filteredCheck","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","$_filterTimer","deep","newCriteria","timeout","regExp","pattern","lastIndex","localeOpts","nullLast","aa","bb","localeCompare","sortDirection","sortCompare","sortCompareOptions","numeric","sortCompareLocale","sortNullLast","noSortReset","labelSortAsc","labelSortDesc","labelSortClear","noLocalSorting","noFooterSorting","sortIconLeft","localSorting","noProviderSorting","isSortable","sortable","sortOptions","usage","sortLocale","sortByFormatted","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortTheadThClasses","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","localPaging","noProviderPaging","captionId","renderCaption","$captionSlot","$caption","renderColgroup","$colgroup","TABLE_TAG_NAMES","labelFor","sel","containsNode","headVariant","BThead","bvTableRowGroup","bvTable","isThead","isDark","dark","isResponsive","isStickyHeader","stickyHeader","hasStickyHeader","tableVariant","theadClasses","theadAttrs","footVariant","BTfoot","isTfoot","tfootClasses","tfootAttrs","LIGHT","DARK","BTr","bvTableTr","inTbody","isTbody","inThead","inTfoot","isRowDark","trClasses","trAttrs","digitsRx","parseSpan","colspan","rowspan","stackedHeading","stickyColumn","BTd","isStackedCell","isStickyColumn","rowVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","BTh","headRowVariant","theadClass","theadTrClass","fieldClasses","thClass","headClicked","stopIfBusy","renderThead","selectAllRows","isSelectable","clearSelected","makeCell","colIndex","headerTitle","hasHeadClickListener","handlers","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","getThValues","thAttr","slotNames","column","srLabel","$cells","$trs","trProps","footRowVariant","tfootTrClass","tfootClass","footClone","renderTFootCustom","renderTfoot","tbodyTransitionProps","tbodyTransitionHandlers","BTbody","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","detailsSlotName","tbodyTrClass","tbodyTrAttr","detailsTdClass","getTdValues","tdValue","defValue","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","rowHovered","tbodyRowEvtStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","rowIndex","cellTag","isRowHeader","cellVariant","tdClass","tdAttr","slotScope","unformatted","toggleDetails","detailsShowing","supportsSelectableRows","rowSelected","isRowSelected","selectRow","unselectRow","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","tableStriped","rowShowDetails","hasRowClickHandler","hasSelectableRowClick","$rows","detailsId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableRowClasses","selectableAttrs","selectableRowAttrs","userTrClasses","userTrAttrs","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","tbodyClass","getTbodyTrs","refs","tbody","trs","itemRows","tr","getTbodyTrIndex","onTbodyRowKeydown","onTBodyRowClicked","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTbody","$busy","renderBusy","cache","defaultSlotName","fullName","lowerName","renderTopRow","renderEmpty","renderBottomRow","auxclick","contextmenu","dblclick","$tbody","showEmpty","emptyText","emptyHtml","emptyFilteredText","emptyFilteredHtml","$empty","computedBusy","busySlotName","busy","localBusy","selectable","selectMode","selectedVariant","noSelectOnClick","selectedRows","selectedLastRow","selectableHasSelection","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","selectedLastClicked","selectionHandler","selected","providerTriggerContext","_providerUpdate","refresh","_providerSetLocal","emitOnRoot","message","bordered","borderless","outlined","responsive","noBorderCollapse","captionTop","tableClass","wrapperClasses","wrapperStyles","maxHeight","tableClasses","isTableSimple","border","tableAttrs","ariaAttrs","rowCount","$table","BTable","BTableLite","BTableSimple","TableLitePlugin","TableSimplePlugin","TablePlugin","TimePlugin","ariaLive","ariaAtomic","DefaultTransition","BToaster","doRender","dead","staticName","$toaster","$target","MIN_DURATION","toaster","isStatus","appendToast","noAutoHide","autoHideDelay","solid","toastClass","static","BToast","isMounted","isTransitioning","isHiding","timer","dismissStarted","resumeDismiss","bToastClasses","computedDuration","computedToaster","transitionHandlers","onBeforeEnter","onBeforeLeave","ensureToaster","clearDismissTimer","setHoverHandler","div","startDismissTimer","onPause","onUnPause","passed","onLinkClick","hiddenEvt","makeToast","$headerContent","$body","$toast","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","PROP_NAME","PROP_NAME_PRIV","BASE_PROPS","propsToSlots","toastContent","BToastPop","handleDestroy","toast","BvToast","_root","mixin","beforeCreate","get","BVToastPlugin","plugin","ToastPlugin","BV_TOOLTIP","noninteractiveRE","removeTooltip","VBTooltip","VBTooltipPlugin","TooltipPlugin","componentsPlugin","FormCheckboxPlugin","FormDatepickerPlugin","FormGroupPlugin","FormInputPlugin","FormRadioPlugin","FormSelectPlugin","FormTextareaPlugin","ModalPlugin","TabsPlugin","VBHoverPlugin","VBHover","VBModalPlugin","VBModal","ACTIVATE_EVENT","Default","throttle","DefaultType","ClassName","DROPDOWN_ITEM","ACTIVE","Selector","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","HREF_REGEX","match","componentName","configTypes","property","expectedTypes","valueType","_isVue","ScrollSpy","$scroller","$selector","$offsets","$targets","$activeTarget","$scrollHeight","$resizeTimeout","$obs_scroller","$obs_targets","$config","updateConfig","unlisten","cfg","Name","scroller","getScroller","setObservers","disconnect","characterData","resizeThrottle","process","autoMethod","methodFn","offsetBase","getScrollTop","getScrollHeight","scrollTop","maxScroll","getOffsetHeight","activate","isActiveTarget","pageYOffset","innerHeight","links","selector","dropdown","setActiveState","parentElement","sibling","previousElementSibling","BV_SCROLLSPY","onlyDigitsRE","removeScrollspy","dispose","VBScrollspy","inserted","update","VBScrollspyPlugin","VBTogglePlugin","VBVisiblePlugin","VBVisible","directivesPlugin","BootstrapVue"],"mappings":"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","file":"js/chunk-20291322-09d12b35290a22264e37.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"section\",attrs:{\"id\":(\"uuid-\" + (_vm.model.uuid))}},[_c('div',{staticClass:\"section__container\"},[_c('div',{staticClass:\"grid-x align-center motoplex--custom\"},[_c('div',{staticClass:\"cell large-12\"},[_c('b-tabs',{attrs:{\"content-class\":\"nav-tabs-styled\",\"nav-wrapper-class\":\"nav-tabs-styled\"},on:{\"input\":_vm.scrollIntoViewport},model:{value:(_vm.tabIndex),callback:function ($$v) {_vm.tabIndex=$$v},expression:\"tabIndex\"}},_vm._l((_vm.model.tabsItem),function(item,itemIndex){return (_vm.model.tabsItem)?_c('b-tab',{key:itemIndex,attrs:{\"active\":_vm.isActive(itemIndex)},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('pg-icon-text',{attrs:{\"iconName\":item.iconName,\"title\":item.tabTitle}})]},proxy:true}],null,true)},[_c('editorial',{attrs:{\"title\":item.title,\"subtitle\":item.subtitle,\"text\":item.text,\"ctaLinks\":item.ctaLinks || [],\"image\":item.image || {},\"layout\":item.layout,\"imageStyle\":item.imageStyle,\"textOnTwoColumns\":item.textOnTwoColumns,\"verticalTextAlign\":item.verticalTextAlign,\"actpageFullUrl\":_vm.common.actpageFullUrl}})],1):_vm._e()}),1)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <section class=\"section\" :id=\"`uuid-${model.uuid}`\">\n    <div class=\"section__container\">\n      <div class=\"grid-x align-center motoplex--custom\">\n        <div class=\"cell large-12\">\n          <b-tabs v-model=\"tabIndex\" content-class=\"nav-tabs-styled\" nav-wrapper-class=\"nav-tabs-styled\" @input=\"scrollIntoViewport\">\n            <b-tab\n              v-for=\"(item, itemIndex) in model.tabsItem\"\n              :key=\"itemIndex\"\n              :active=\"isActive(itemIndex)\"\n              v-if=\"model.tabsItem\"\n            >\n              <template v-slot:title>\n                <pg-icon-text :iconName=\"item.iconName\" :title=\"item.tabTitle\" />\n\n                <!--             <i :class=\"`icon icon-${item.iconName}`\"></i>\n\n                <span class=\"nav-tabs__title\">{{item.tabTitle}}</span>-->\n              </template>\n\n              <editorial\n                :title=\"item.title\"\n                :subtitle=\"item.subtitle\"\n                :text=\"item.text\"\n                :ctaLinks=\"item.ctaLinks || []\"\n                :image=\"item.image || {}\"\n                :layout=\"item.layout\"\n                :imageStyle=\"item.imageStyle\"\n                :textOnTwoColumns=\"item.textOnTwoColumns\"\n                :verticalTextAlign=\"item.verticalTextAlign\"\n                :actpageFullUrl=\"common.actpageFullUrl\"\n              />\n            </b-tab>\n          </b-tabs>\n        </div>\n      </div>\n    </div>\n  </section>\n</template>\n\n<script>\nimport { mgnlComponentMixin } from \"@wl-vue-mixins/mixins.js\";\nimport PgImage                from \"../Image/Image.vue\";\nimport PgButton from \"../Button/Button.vue\";\nimport Tabs from \"bootstrap-vue\";\nimport Editorial from \"../Editorial/Editorial.vue\";\nimport PgIconText from \"../IconText/IconText.vue\";\n\nexport default {\n  mixins: [mgnlComponentMixin], // !!! all the mgnl components must be configured with mgnlComponentMixin !!!\n  name: \"editorial-tabs\",\n  components: {\n    PgImage,\n    PgButton,\n    Tabs,\n    Editorial,\n    PgIconText\n  },\n  data() {\n    return {\n      tabIndex: 0\n    };\n  },\n  methods: {\n    isActive(index) {\n      return index === 0;\n    },\n    scrollIntoViewport() {\n      window.scrollTo({top: this.$el.getBoundingClientRect().top + window.scrollY - 70, behavior: \"smooth\"});\n    }\n  },\n};\n</script>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorialTabs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorialTabs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditorialTabs.vue?vue&type=template&id=0e9c0a55&\"\nimport script from \"./EditorialTabs.vue?vue&type=script&lang=js&\"\nexport * from \"./EditorialTabs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n /*! \n  * portal-vue © Thorsten Lünborg, 2019 \n  * \n  * Version: 2.1.7\n  * \n  * LICENCE: MIT \n  * \n  * https://github.com/linusborg/portal-vue\n  * \n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(require('vue'));\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n  if (Array.isArray(item) || _typeof(item) === 'object') {\n    return Object.freeze(item);\n  }\n\n  return item;\n}\nfunction combinePassengers(transports) {\n  var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return transports.reduce(function (passengers, transport) {\n    var temp = transport.passengers[0];\n    var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n    return passengers.concat(newPassengers);\n  }, []);\n}\nfunction stableSort(array, compareFn) {\n  return array.map(function (v, idx) {\n    return [idx, v];\n  }).sort(function (a, b) {\n    return compareFn(a[1], b[1]) || a[0] - b[0];\n  }).map(function (c) {\n    return c[1];\n  });\n}\nfunction pick(obj, keys) {\n  return keys.reduce(function (acc, key) {\n    if (obj.hasOwnProperty(key)) {\n      acc[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n  data: function data() {\n    return {\n      transports: transports,\n      targets: targets,\n      sources: sources,\n      trackInstances: inBrowser\n    };\n  },\n  methods: {\n    open: function open(transport) {\n      if (!inBrowser) return;\n      var to = transport.to,\n          from = transport.from,\n          passengers = transport.passengers,\n          _transport$order = transport.order,\n          order = _transport$order === void 0 ? Infinity : _transport$order;\n      if (!to || !from || !passengers) return;\n      var newTransport = {\n        to: to,\n        from: from,\n        passengers: freeze(passengers),\n        order: order\n      };\n      var keys = Object.keys(this.transports);\n\n      if (keys.indexOf(to) === -1) {\n        Vue.set(this.transports, to, []);\n      }\n\n      var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n      var newTransports = this.transports[to].slice(0);\n\n      if (currentIndex === -1) {\n        newTransports.push(newTransport);\n      } else {\n        newTransports[currentIndex] = newTransport;\n      }\n\n      this.transports[to] = stableSort(newTransports, function (a, b) {\n        return a.order - b.order;\n      });\n    },\n    close: function close(transport) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var to = transport.to,\n          from = transport.from;\n      if (!to || !from && force === false) return;\n\n      if (!this.transports[to]) {\n        return;\n      }\n\n      if (force) {\n        this.transports[to] = [];\n      } else {\n        var index = this.$_getTransportIndex(transport);\n\n        if (index >= 0) {\n          // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n          var newTransports = this.transports[to].slice(0);\n          newTransports.splice(index, 1);\n          this.transports[to] = newTransports;\n        }\n      }\n    },\n    registerTarget: function registerTarget(target, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.targets[target]) {\n        console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n      }\n\n      this.$set(this.targets, target, Object.freeze([vm]));\n    },\n    unregisterTarget: function unregisterTarget(target) {\n      this.$delete(this.targets, target);\n    },\n    registerSource: function registerSource(source, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.sources[source]) {\n        console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n      }\n\n      this.$set(this.sources, source, Object.freeze([vm]));\n    },\n    unregisterSource: function unregisterSource(source) {\n      this.$delete(this.sources, source);\n    },\n    hasTarget: function hasTarget(to) {\n      return !!(this.targets[to] && this.targets[to][0]);\n    },\n    hasSource: function hasSource(to) {\n      return !!(this.sources[to] && this.sources[to][0]);\n    },\n    hasContentFor: function hasContentFor(to) {\n      return !!this.transports[to] && !!this.transports[to].length;\n    },\n    // Internal\n    $_getTransportIndex: function $_getTransportIndex(_ref) {\n      var to = _ref.to,\n          from = _ref.from;\n\n      for (var i in this.transports[to]) {\n        if (this.transports[to][i].from === from) {\n          return +i;\n        }\n      }\n\n      return -1;\n    }\n  }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n  name: 'portal',\n  props: {\n    disabled: {\n      type: Boolean\n    },\n    name: {\n      type: String,\n      default: function _default() {\n        return String(_id++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerSource(_this.name, _this);\n    });\n  },\n  mounted: function mounted() {\n    if (!this.disabled) {\n      this.sendUpdate();\n    }\n  },\n  updated: function updated() {\n    if (this.disabled) {\n      this.clear();\n    } else {\n      this.sendUpdate();\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterSource(this.name);\n    this.clear();\n  },\n  watch: {\n    to: function to(newValue, oldValue) {\n      oldValue && oldValue !== newValue && this.clear(oldValue);\n      this.sendUpdate();\n    }\n  },\n  methods: {\n    clear: function clear(target) {\n      var closer = {\n        from: this.name,\n        to: target || this.to\n      };\n      wormhole.close(closer);\n    },\n    normalizeSlots: function normalizeSlots() {\n      return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n    },\n    normalizeOwnChildren: function normalizeOwnChildren(children) {\n      return typeof children === 'function' ? children(this.slotProps) : children;\n    },\n    sendUpdate: function sendUpdate() {\n      var slotContent = this.normalizeSlots();\n\n      if (slotContent) {\n        var transport = {\n          from: this.name,\n          to: this.to,\n          passengers: _toConsumableArray(slotContent),\n          order: this.order\n        };\n        wormhole.open(transport);\n      } else {\n        this.clear();\n      }\n    }\n  },\n  render: function render(h) {\n    var children = this.$slots.default || this.$scopedSlots.default || [];\n    var Tag = this.tag;\n\n    if (children && this.disabled) {\n      return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n    } else {\n      return this.slim ? h() : h(Tag, {\n        class: {\n          'v-portal': true\n        },\n        style: {\n          display: 'none'\n        },\n        key: 'v-portal-placeholder'\n      });\n    }\n  }\n});\n\nvar PortalTarget = Vue.extend({\n  name: 'portalTarget',\n  props: {\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    name: {\n      type: String,\n      required: true\n    },\n    slim: {\n      type: Boolean,\n      default: false\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  data: function data() {\n    return {\n      transports: wormhole.transports,\n      firstRender: true\n    };\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerTarget(_this.name, _this);\n    });\n  },\n  watch: {\n    ownTransports: function ownTransports() {\n      this.$emit('change', this.children().length > 0);\n    },\n    name: function name(newVal, oldVal) {\n      /**\r\n       * TODO\r\n       * This should warn as well ...\r\n       */\n      wormhole.unregisterTarget(oldVal);\n      wormhole.registerTarget(newVal, this);\n    }\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    if (this.transition) {\n      this.$nextTick(function () {\n        // only when we have a transition, because it causes a re-render\n        _this2.firstRender = false;\n      });\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterTarget(this.name);\n  },\n  computed: {\n    ownTransports: function ownTransports() {\n      var transports = this.transports[this.name] || [];\n\n      if (this.multiple) {\n        return transports;\n      }\n\n      return transports.length === 0 ? [] : [transports[transports.length - 1]];\n    },\n    passengers: function passengers() {\n      return combinePassengers(this.ownTransports, this.slotProps);\n    }\n  },\n  methods: {\n    // can't be a computed prop because it has to \"react\" to $slot changes.\n    children: function children() {\n      return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n    },\n    // can't be a computed prop because it has to \"react\" to this.children().\n    noWrapper: function noWrapper() {\n      var noWrapper = this.slim && !this.transition;\n\n      if (noWrapper && this.children().length > 1) {\n        console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n      }\n\n      return noWrapper;\n    }\n  },\n  render: function render(h) {\n    var noWrapper = this.noWrapper();\n    var children = this.children();\n    var Tag = this.transition || this.tag;\n    return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n      props: {\n        // if we have a transition component, pass the tag if it exists\n        tag: this.transition && this.tag ? this.tag : undefined\n      },\n      class: {\n        'vue-portal-target': true\n      }\n    }, children);\n  }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n  name: 'MountingPortal',\n  inheritAttrs: false,\n  props: {\n    append: {\n      type: [Boolean, String]\n    },\n    bail: {\n      type: Boolean\n    },\n    mountTo: {\n      type: String,\n      required: true\n    },\n    // Portal\n    disabled: {\n      type: Boolean\n    },\n    // name for the portal\n    name: {\n      type: String,\n      default: function _default() {\n        return 'mounted_' + String(_id$1++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    // name for the target\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    },\n    // Target\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    targetSlim: {\n      type: Boolean\n    },\n    targetSlotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    targetTag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  created: function created() {\n    if (typeof document === 'undefined') return;\n    var el = document.querySelector(this.mountTo);\n\n    if (!el) {\n      console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n      return;\n    }\n\n    var props = this.$props; // Target already exists\n\n    if (wormhole.targets[props.name]) {\n      if (props.bail) {\n        console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n        Aborting because 'bail: true' is set\"));\n      } else {\n        this.portalTarget = wormhole.targets[props.name];\n      }\n\n      return;\n    }\n\n    var append = props.append;\n\n    if (append) {\n      var type = typeof append === 'string' ? append : 'DIV';\n      var mountEl = document.createElement(type);\n      el.appendChild(mountEl);\n      el = mountEl;\n    } // get props for target from $props\n    // we have to rename a few of them\n\n\n    var _props = pick(this.$props, targetProps);\n\n    _props.slim = this.targetSlim;\n    _props.tag = this.targetTag;\n    _props.slotProps = this.targetSlotProps;\n    _props.name = this.to;\n    this.portalTarget = new PortalTarget({\n      el: el,\n      parent: this.$parent || this,\n      propsData: _props\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    var target = this.portalTarget;\n\n    if (this.append) {\n      var el = target.$el;\n      el.parentNode.removeChild(el);\n    }\n\n    target.$destroy();\n  },\n  render: function render(h) {\n    if (!this.portalTarget) {\n      console.warn(\"[portal-vue] Target wasn't mounted\");\n      return h();\n    } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n    if (!this.$scopedSlots.manual) {\n      var props = pick(this.$props, portalProps);\n      return h(Portal, {\n        props: props,\n        attrs: this.$attrs,\n        on: this.$listeners,\n        scopedSlots: this.$scopedSlots\n      }, this.$slots.default);\n    } // else, we render the scoped slot\n\n\n    var content = this.$scopedSlots.manual({\n      to: this.to\n    }); // if user used <template> for the scoped slot\n    // content will be an array\n\n    if (Array.isArray(content)) {\n      content = content[0];\n    }\n\n    if (!content) return h();\n    return content;\n  }\n});\n\nfunction install(Vue$$1) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  Vue$$1.component(options.portalName || 'Portal', Portal);\n  Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n  Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n}\n\nvar index = {\n  install: install\n};\n\nexports.default = index;\nexports.Portal = Portal;\nexports.PortalTarget = PortalTarget;\nexports.MountingPortal = MountingPortal;\nexports.Wormhole = wormhole;\n//# sourceMappingURL=portal-vue.common.js.map\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 from '../../utils/vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { requestAF } from '../../utils/dom';\nimport { isBoolean } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport BVTransition from '../../utils/bv-transition';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BButtonClose } from '../button/button-close';\nvar NAME = 'BAlert'; // Convert `show` value to a number\n\nvar parseCountDown = function parseCountDown(show) {\n  if (show === '' || isBoolean(show)) {\n    return 0;\n  }\n\n  show = toInteger(show);\n  return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n  if (show === '' || show === true) {\n    return true;\n  }\n\n  if (toInteger(show) < 1) {\n    // Boolean will always return false for the above comparison\n    return false;\n  }\n\n  return !!show;\n}; // Is a value number like (i.e. a number or a number as string)\n\n\nvar isNumericLike = function isNumericLike(value) {\n  return !isNaN(toInteger(value));\n}; // @vue/component\n\n\nexport var BAlert = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [normalizeSlotMixin],\n  model: {\n    prop: 'show',\n    event: 'input'\n  },\n  props: {\n    variant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'variant');\n      }\n    },\n    dismissible: {\n      type: Boolean,\n      default: false\n    },\n    dismissLabel: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'dismissLabel');\n      }\n    },\n    show: {\n      type: [Boolean, Number, String],\n      default: false\n    },\n    fade: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      countDownTimerId: null,\n      countDown: 0,\n      // If initially shown, we need to set these for SSR\n      localShow: parseShow(this.show)\n    };\n  },\n  watch: {\n    show: function show(newVal) {\n      this.countDown = parseCountDown(newVal);\n      this.localShow = parseShow(newVal);\n    },\n    countDown: function countDown(newVal) {\n      var _this = this;\n\n      this.clearTimer();\n\n      if (isNumericLike(this.show)) {\n        // Ignore if this.show transitions to a boolean value.\n        this.$emit('dismiss-count-down', newVal);\n\n        if (this.show !== newVal) {\n          // Update the v-model if needed\n          this.$emit('input', newVal);\n        }\n\n        if (newVal > 0) {\n          this.localShow = true;\n          this.countDownTimerId = setTimeout(function () {\n            _this.countDown--;\n          }, 1000);\n        } else {\n          // Slightly delay the hide to allow any UI updates\n          this.$nextTick(function () {\n            requestAF(function () {\n              _this.localShow = false;\n            });\n          });\n        }\n      }\n    },\n    localShow: function localShow(newVal) {\n      if (!newVal && (this.dismissible || isNumericLike(this.show))) {\n        // Only emit dismissed events for dismissible or auto dismissing alerts\n        this.$emit('dismissed');\n      }\n\n      if (!isNumericLike(this.show) && this.show !== newVal) {\n        // Only emit booleans if we weren't passed a number via `this.show`\n        this.$emit('input', newVal);\n      }\n    }\n  },\n  created: function created() {\n    this.countDown = parseCountDown(this.show);\n    this.localShow = parseShow(this.show);\n  },\n  mounted: function mounted() {\n    this.countDown = parseCountDown(this.show);\n    this.localShow = parseShow(this.show);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearTimer();\n  },\n  methods: {\n    dismiss: function dismiss() {\n      this.clearTimer();\n      this.countDown = 0;\n      this.localShow = false;\n    },\n    clearTimer: function clearTimer() {\n      if (this.countDownTimerId) {\n        clearInterval(this.countDownTimerId);\n        this.countDownTimerId = null;\n      }\n    }\n  },\n  render: function render(h) {\n    var $alert; // undefined\n\n    if (this.localShow) {\n      var $dismissBtn = h();\n\n      if (this.dismissible) {\n        // Add dismiss button\n        $dismissBtn = h(BButtonClose, {\n          attrs: {\n            'aria-label': this.dismissLabel\n          },\n          on: {\n            click: this.dismiss\n          }\n        }, [this.normalizeSlot('dismiss')]);\n      }\n\n      $alert = h('div', {\n        key: this._uid,\n        staticClass: 'alert',\n        class: _defineProperty({\n          'alert-dismissible': this.dismissible\n        }, \"alert-\".concat(this.variant), this.variant),\n        attrs: {\n          role: 'alert',\n          'aria-live': 'polite',\n          'aria-atomic': true\n        }\n      }, [$dismissBtn, this.normalizeSlot('default')]);\n      $alert = [$alert];\n    }\n\n    return h(BVTransition, {\n      props: {\n        noFade: !this.fade\n      }\n    }, $alert);\n  }\n});","import { BAlert } from './alert';\nimport { pluginFactory } from '../../utils/plugins';\nvar AlertPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BAlert: BAlert\n  }\n});\nexport { AlertPlugin, BAlert };","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport Vue from '../../utils/vue';\nimport { toFloat } from '../../utils/number';\nimport normalizeSlotMixin from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar NAME = 'BAspect';\nvar CLASS_NAME = 'b-aspect';\nvar RX_ASPECT = /^\\d+(\\.\\d*)?[/:]\\d+(\\.\\d*)?$/;\nvar RX_SEPARATOR = /[/:]/; // --- Main Component ---\n\nexport var BAspect = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [normalizeSlotMixin],\n  props: {\n    aspect: {\n      // Accepts a number (i.e. `16 / 9`, `1`, `4 / 3`)\n      // Or a string (i.e. '16/9', '16:9', '4:3' '1:1')\n      type: [Number, String],\n      default: '1:1'\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    }\n  },\n  computed: {\n    padding: function padding() {\n      var aspect = this.aspect;\n      var ratio = 1;\n\n      if (RX_ASPECT.test(aspect)) {\n        var _aspect$split$map = aspect.split(RX_SEPARATOR).map(function (v) {\n          return toFloat(v) || 1;\n        }),\n            _aspect$split$map2 = _slicedToArray(_aspect$split$map, 2),\n            width = _aspect$split$map2[0],\n            height = _aspect$split$map2[1];\n\n        ratio = width / height;\n      } else {\n        ratio = toFloat(aspect) || 1;\n      }\n\n      return \"\".concat(100 / Math.abs(ratio), \"%\");\n    }\n  },\n  render: function render(h) {\n    var $sizer = h('div', {\n      staticClass: \"\".concat(CLASS_NAME, \"-sizer flex-grow-1\"),\n      style: {\n        paddingBottom: this.padding,\n        height: 0\n      }\n    });\n    var $content = h('div', {\n      staticClass: \"\".concat(CLASS_NAME, \"-content flex-grow-1 w-100 mw-100\"),\n      style: {\n        marginLeft: '-100%'\n      }\n    }, [this.normalizeSlot('default')]);\n    return h(this.tag, {\n      staticClass: \"\".concat(CLASS_NAME, \" d-flex\")\n    }, [$sizer, $content]);\n  }\n});","import { BAspect } from './aspect';\nimport { pluginFactory } from '../../utils/plugins';\nvar AspectPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BAspect: BAspect\n  }\n});\nexport { AspectPlugin, BAspect };","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 '../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { pascalCase, trim } from '../utils/string';\nimport { BIconBlank } from './icons';\nimport { commonIconProps } from './helpers/icon-base';\nvar RX_ICON_PREFIX = /^BIcon/; // Helper BIcon component\n// Requires the requested icon component to be installed\n\nexport var BIcon = /*#__PURE__*/Vue.extend({\n  name: 'BIcon',\n  functional: true,\n  props: _objectSpread({\n    icon: {\n      type: String,\n      default: null\n    }\n  }, commonIconProps, {\n    stacked: {\n      type: Boolean,\n      default: false\n    }\n  }),\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, '');\n    var iconName = \"BIcon\".concat(icon); // 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    var components = ((parent || {}).$options || {}).components;\n    var componentRefOrName = icon && components ? components[iconName] || BIconBlank : icon ? iconName : BIconBlank;\n    return h(componentRefOrName, mergeData(data, {\n      props: _objectSpread({}, props, {\n        icon: null\n      })\n    }));\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from 'vue-functional-data-merge';\nimport Vue from '../../utils/vue';\nimport pluckProps from '../../utils/pluck-props';\nimport { getComponentConfig } from '../../utils/config';\nimport { isNumber, isString } from '../../utils/inspect';\nimport { toFloat } from '../../utils/number';\nimport { BButton } from '../button/button';\nimport { BLink } from '../link/link';\nimport { BIcon } from '../../icons/icon';\nimport { BIconPersonFill } from '../../icons/icons'; // --- Constants ---\n\nvar NAME = 'BAvatar';\nvar CLASS_NAME = 'b-avatar';\nvar RX_NUMBER = /^[0-9]*\\.?[0-9]+$/;\nvar FONT_SIZE_SCALE = 0.4;\nvar DEFAULT_SIZES = {\n  sm: '1.5em',\n  md: '2.5em',\n  lg: '3.5em'\n}; // --- Props ---\n\nvar linkProps = {\n  href: {\n    type: String // default: null\n\n  },\n  to: {\n    type: [String, Object] // default: null\n\n  },\n  append: {\n    type: Boolean,\n    default: false\n  },\n  replace: {\n    type: Boolean,\n    default: false\n  },\n  disabled: {\n    type: Boolean,\n    default: false\n  },\n  rel: {\n    type: String // default: null\n\n  },\n  target: {\n    type: String // default: null\n\n  },\n  activeClass: {\n    type: String // default: null\n\n  },\n  exact: {\n    type: Boolean,\n    default: false\n  },\n  exactActiveClass: {\n    type: String // default: null\n\n  },\n  noPrefetch: {\n    type: Boolean,\n    default: false\n  }\n};\n\nvar props = _objectSpread({\n  src: {\n    type: String // default: null\n\n  },\n  text: {\n    type: String // default: null\n\n  },\n  icon: {\n    type: String // default: null\n\n  },\n  alt: {\n    type: String,\n    default: 'avatar'\n  },\n  variant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'variant');\n    }\n  },\n  size: {\n    type: [Number, String],\n    default: null\n  },\n  square: {\n    type: Boolean,\n    default: false\n  },\n  rounded: {\n    type: [Boolean, String],\n    default: false\n  },\n  button: {\n    type: Boolean,\n    default: false\n  },\n  buttonType: {\n    type: String,\n    default: 'button'\n  }\n}, linkProps, {\n  ariaLabel: {\n    type: String // default: null\n\n  }\n}); // --- Utility methods ---\n\n\nvar computeSize = function computeSize(value) {\n  // Default to `md` size when `null`, or parse to\n  // number when value is a float-like string\n  value = value === null ? 'md' : isString(value) && RX_NUMBER.test(value) ? toFloat(value) : value; // Convert all numbers to pixel values\n  // Handle default sizes when `sm`, `md` or `lg`\n  // Or use value as is\n\n  return isNumber(value) ? \"\".concat(value, \"px\") : DEFAULT_SIZES[value] || value;\n}; // --- Main component ---\n// @vue/component\n\n\nexport var BAvatar = /*#__PURE__*/Vue.extend({\n  name: NAME,\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 variant = props.variant,\n        disabled = props.disabled,\n        square = props.square,\n        icon = props.icon,\n        src = props.src,\n        text = props.text,\n        isButton = props.button,\n        type = props.buttonType;\n    var isBLink = !isButton && (props.href || props.to);\n    var tag = isButton ? BButton : isBLink ? BLink : 'span';\n    var rounded = square ? false : props.rounded === '' ? true : props.rounded || 'circle';\n    var size = computeSize(props.size);\n    var alt = props.alt || null;\n    var ariaLabel = props.ariaLabel || null;\n    var $content = null;\n\n    if (children) {\n      // Default slot overrides props\n      $content = children;\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 (src) {\n      $content = h('img', {\n        attrs: {\n          src: src,\n          alt: alt\n        }\n      });\n    } else if (text) {\n      var fontSize = size ? \"calc(\".concat(size, \" * \").concat(FONT_SIZE_SCALE, \")\") : null;\n      $content = h('span', {\n        style: {\n          fontSize: fontSize\n        }\n      }, text);\n    } else {\n      $content = h(BIconPersonFill, {\n        attrs: {\n          'aria-hidden': 'true',\n          alt: alt\n        }\n      });\n    }\n\n    var componentData = {\n      staticClass: CLASS_NAME,\n      class: (_class = {}, _defineProperty(_class, \"\".concat(isButton ? 'btn' : 'badge', \"-\").concat(variant), !!variant), _defineProperty(_class, \"rounded\", rounded === true), _defineProperty(_class, 'rounded-0', square), _defineProperty(_class, \"rounded-\".concat(rounded), rounded && rounded !== true), _defineProperty(_class, \"disabled\", disabled), _class),\n      style: {\n        width: size,\n        height: size\n      },\n      attrs: {\n        'aria-label': ariaLabel\n      },\n      props: isButton ? {\n        variant: variant,\n        disabled: disabled,\n        type: type\n      } : isBLink ? pluckProps(linkProps, props) : {}\n    };\n    return h(tag, mergeData(data, componentData), [$content]);\n  }\n});","import { BAvatar } from './avatar';\nimport { pluginFactory } from '../../utils/plugins';\nvar AvatarPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BAvatar: BAvatar\n  }\n});\nexport { AvatarPlugin, BAvatar };","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 '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport pluckProps from '../../utils/pluck-props';\nimport { BLink, propsFactory as linkPropsFactory } from '../link/link';\nvar NAME = 'BBadge';\nvar linkProps = linkPropsFactory();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = _objectSpread({}, linkProps, {\n  tag: {\n    type: String,\n    default: 'span'\n  },\n  variant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'variant');\n    }\n  },\n  pill: {\n    type: Boolean,\n    default: false\n  }\n}); // @vue/component\n\nexport var BBadge = /*#__PURE__*/Vue.extend({\n  name: NAME,\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 isBLink = props.href || props.to;\n    var tag = isBLink ? BLink : props.tag;\n    var componentData = {\n      staticClass: 'badge',\n      class: [props.variant ? \"badge-\".concat(props.variant) : 'badge-secondary', {\n        'badge-pill': props.pill,\n        active: props.active,\n        disabled: props.disabled\n      }],\n      props: isBLink ? pluckProps(linkProps, props) : {}\n    };\n    return h(tag, mergeData(data, componentData), children);\n  }\n});","import { BBadge } from './badge';\nimport { pluginFactory } from '../../utils/plugins';\nvar BadgePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BBadge: BBadge\n  }\n});\nexport { BadgePlugin, BBadge };","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 '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport pluckProps from '../../utils/pluck-props';\nimport { htmlOrText } from '../../utils/html';\nimport { BLink, propsFactory as linkPropsFactory } from '../link/link';\nexport var props = _objectSpread({}, linkPropsFactory(), {\n  text: {\n    type: String,\n    default: null\n  },\n  html: {\n    type: String,\n    default: null\n  },\n  ariaCurrent: {\n    type: String,\n    default: 'location'\n  }\n}); // @vue/component\n\nexport var BBreadcrumbLink = /*#__PURE__*/Vue.extend({\n  name: 'BBreadcrumbLink',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var suppliedProps = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var tag = suppliedProps.active ? 'span' : BLink;\n    var componentData = {\n      props: pluckProps(props, suppliedProps)\n    };\n\n    if (suppliedProps.active) {\n      componentData.attrs = {\n        'aria-current': suppliedProps.ariaCurrent\n      };\n    }\n\n    if (!children) {\n      componentData.domProps = htmlOrText(suppliedProps.html, suppliedProps.text);\n    }\n\n    return h(tag, mergeData(data, componentData), children);\n  }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { BBreadcrumbLink, props } from './breadcrumb-link'; // @vue/component\n\nexport var BBreadcrumbItem = /*#__PURE__*/Vue.extend({\n  name: 'BBreadcrumbItem',\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('li', mergeData(data, {\n      staticClass: 'breadcrumb-item',\n      class: {\n        active: props.active\n      }\n    }), [h(BBreadcrumbLink, {\n      props: props\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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { isArray, isObject } from '../../utils/inspect';\nimport { toString } from '../../utils/string';\nimport { BBreadcrumbItem } from './breadcrumb-item';\nexport var props = {\n  items: {\n    type: Array,\n    default: null\n  }\n}; // @vue/component\n\nexport var BBreadcrumb = /*#__PURE__*/Vue.extend({\n  name: 'BBreadcrumb',\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 childNodes = children; // Build child nodes from items if given.\n\n    if (isArray(props.items)) {\n      var activeDefined = false;\n      childNodes = props.items.map(function (item, idx) {\n        if (!isObject(item)) {\n          item = {\n            text: toString(item)\n          };\n        } // Copy the value here so we can normalize it.\n\n\n        var active = item.active;\n\n        if (active) {\n          activeDefined = true;\n        }\n\n        if (!active && !activeDefined) {\n          // Auto-detect active by position in list.\n          active = idx + 1 === props.items.length;\n        }\n\n        return h(BBreadcrumbItem, {\n          props: _objectSpread({}, item, {\n            active: active\n          })\n        });\n      });\n    }\n\n    return h('ol', mergeData(data, {\n      staticClass: 'breadcrumb'\n    }), childNodes);\n  }\n});","import { BBreadcrumb } from './breadcrumb';\nimport { BBreadcrumbItem } from './breadcrumb-item';\nimport { BBreadcrumbLink } from './breadcrumb-link';\nimport { pluginFactory } from '../../utils/plugins';\nvar BreadcrumbPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BBreadcrumb: BBreadcrumb,\n    BBreadcrumbItem: BBreadcrumbItem,\n    BBreadcrumbLink: BBreadcrumbLink\n  }\n});\nexport { BreadcrumbPlugin, BBreadcrumb, BBreadcrumbItem, BBreadcrumbLink };","import { BButton } from './button';\nimport { BButtonClose } from './button-close';\nimport { pluginFactory } from '../../utils/plugins';\nvar ButtonPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BButton: BButton,\n    BBtn: BButton,\n    BButtonClose: BButtonClose,\n    BBtnClose: BButtonClose\n  }\n});\nexport { ButtonPlugin, BButton, BButtonClose };","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 from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nvar NAME = 'BButtonGroup';\nexport var props = {\n  vertical: {\n    type: Boolean,\n    default: false\n  },\n  size: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig('BButton', 'size');\n    }\n  },\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  ariaRole: {\n    type: String,\n    default: 'group'\n  }\n}; // @vue/component\n\nexport var BButtonGroup = /*#__PURE__*/Vue.extend({\n  name: NAME,\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        'btn-group': !props.vertical,\n        'btn-group-vertical': props.vertical\n      }, \"btn-group-\".concat(props.size), props.size),\n      attrs: {\n        role: props.ariaRole\n      }\n    }), children);\n  }\n});","import { BButtonGroup } from './button-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar ButtonGroupPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BButtonGroup: BButtonGroup,\n    BBtnGroup: BButtonGroup\n  }\n});\nexport { ButtonGroupPlugin, BButtonGroup };","import Vue from '../../utils/vue';\nimport { isVisible, selectAll } from '../../utils/dom';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport KeyCodes from '../../utils/key-codes';\nvar ITEM_SELECTOR = ['.btn:not(.disabled):not([disabled]):not(.dropdown-item)', '.form-control:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'input[type=\"checkbox\"]:not(.disabled)', 'input[type=\"radio\"]:not(.disabled)'].join(','); // @vue/component\n\nexport var BButtonToolbar = /*#__PURE__*/Vue.extend({\n  name: 'BButtonToolbar',\n  mixins: [normalizeSlotMixin],\n  props: {\n    justify: {\n      type: Boolean,\n      default: false\n    },\n    keyNav: {\n      type: Boolean,\n      default: false\n    }\n  },\n  mounted: function mounted() {\n    if (this.keyNav) {\n      // Pre-set the tabindexes if the markup does not include tabindex=\"-1\" on the toolbar items\n      this.getItems();\n    }\n  },\n  methods: {\n    onFocusin: function onFocusin(evt) {\n      if (evt.target === this.$el) {\n        evt.preventDefault();\n        evt.stopPropagation();\n        this.focusFirst(evt);\n      }\n    },\n    stop: function stop(evt) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    },\n    onKeydown: function onKeydown(evt) {\n      if (!this.keyNav) {\n        /* istanbul ignore next: should never happen */\n        return;\n      }\n\n      var key = evt.keyCode;\n      var shift = evt.shiftKey;\n\n      if (key === KeyCodes.UP || key === KeyCodes.LEFT) {\n        this.stop(evt);\n        shift ? this.focusFirst(evt) : this.focusPrev(evt);\n      } else if (key === KeyCodes.DOWN || key === KeyCodes.RIGHT) {\n        this.stop(evt);\n        shift ? this.focusLast(evt) : this.focusNext(evt);\n      }\n    },\n    setItemFocus: function setItemFocus(item) {\n      item && item.focus && item.focus();\n    },\n    focusFirst: function focusFirst() {\n      var items = this.getItems();\n      this.setItemFocus(items[0]);\n    },\n    focusPrev: function focusPrev(evt) {\n      var items = this.getItems();\n      var index = items.indexOf(evt.target);\n\n      if (index > -1) {\n        items = items.slice(0, index).reverse();\n        this.setItemFocus(items[0]);\n      }\n    },\n    focusNext: function focusNext(evt) {\n      var items = this.getItems();\n      var index = items.indexOf(evt.target);\n\n      if (index > -1) {\n        items = items.slice(index + 1);\n        this.setItemFocus(items[0]);\n      }\n    },\n    focusLast: function focusLast() {\n      var items = this.getItems().reverse();\n      this.setItemFocus(items[0]);\n    },\n    getItems: function getItems() {\n      var items = selectAll(ITEM_SELECTOR, this.$el);\n      items.forEach(function (item) {\n        // Ensure tabfocus is -1 on any new elements\n        item.tabIndex = -1;\n      });\n      return items.filter(function (el) {\n        return isVisible(el);\n      });\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'btn-toolbar',\n      class: {\n        'justify-content-between': this.justify\n      },\n      attrs: {\n        role: 'toolbar',\n        tabindex: this.keyNav ? '0' : null\n      },\n      on: this.keyNav ? {\n        focusin: this.onFocusin,\n        keydown: this.onKeydown\n      } : {}\n    }, [this.normalizeSlot('default')]);\n  }\n});","import { BButtonToolbar } from './button-toolbar';\nimport { pluginFactory } from '../../utils/plugins';\nvar ButtonToolbarPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BButtonToolbar: BButtonToolbar,\n    BBtnToolbar: BButtonToolbar\n  }\n});\nexport { ButtonToolbarPlugin, BButtonToolbar };","import { BCalendar } from './calendar';\nimport { pluginFactory } from '../../utils/plugins';\nvar CalendarPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BCalendar: BCalendar\n  }\n});\nexport { CalendarPlugin, BCalendar };","import { upperFirst } from './string';\n/**\n * @param {string} prefix\n * @param {string} value\n */\n\nvar prefixPropName = function prefixPropName(prefix, value) {\n  return prefix + upperFirst(value);\n};\n\nexport default prefixPropName;","import { lowerFirst } from './string';\n/**\n * @param {string} prefix\n * @param {string} value\n */\n\nvar unprefixPropName = function unprefixPropName(prefix, value) {\n  return lowerFirst(value.replace(prefix, ''));\n};\n\nexport default unprefixPropName;","import identity from './identity';\nimport { isArray, isObject } from './inspect';\nimport { clone } from './object';\n/**\n * Copies props from one array/object to a new array/object. Prop values\n * are also cloned as new references to prevent possible mutation of original\n * prop object values. Optionally accepts a function to transform the prop name.\n *\n * @param {[]|{}} props\n * @param {Function} transformFn\n */\n\nvar copyProps = function copyProps(props) {\n  var transformFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identity;\n\n  if (isArray(props)) {\n    return props.map(transformFn);\n  } // Props as an object.\n\n\n  var copied = {};\n\n  for (var prop in props) {\n    /* istanbul ignore else */\n    // eslint-disable-next-line no-prototype-builtins\n    if (props.hasOwnProperty(prop)) {\n      // If the prop value is an object, do a shallow clone to prevent\n      // potential mutations to the original object.\n      copied[transformFn(prop)] = isObject(props[prop]) ? clone(props[prop]) : props[prop];\n    }\n  }\n\n  return copied;\n};\n\nexport default copyProps;","// @vue/component\nexport default {\n  props: {\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    bgVariant: {\n      type: String,\n      default: null\n    },\n    borderVariant: {\n      type: String,\n      default: null\n    },\n    textVariant: {\n      type: String,\n      default: null\n    }\n  }\n};","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  title: {\n    type: String,\n    default: ''\n  },\n  titleTag: {\n    type: String,\n    default: 'h4'\n  }\n}; // @vue/component\n\nexport var BCardTitle = /*#__PURE__*/Vue.extend({\n  name: 'BCardTitle',\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.titleTag, mergeData(data, {\n      staticClass: 'card-title'\n    }), children || props.title);\n  }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nvar NAME = 'BCardSubTitle';\nexport var props = {\n  subTitle: {\n    type: String,\n    default: ''\n  },\n  subTitleTag: {\n    type: String,\n    default: 'h6'\n  },\n  subTitleTextVariant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'subTitleTextVariant');\n    }\n  }\n}; // @vue/component\n\nexport var BCardSubTitle = /*#__PURE__*/Vue.extend({\n  name: NAME,\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.subTitleTag, mergeData(data, {\n      staticClass: 'card-subtitle',\n      class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n    }), children || props.subTitle);\n  }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\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 '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport prefixPropName from '../../utils/prefix-prop-name';\nimport copyProps from '../../utils/copy-props';\nimport pluckProps from '../../utils/pluck-props';\nimport cardMixin from '../../mixins/card';\nimport { BCardTitle, props as titleProps } from './card-title';\nimport { BCardSubTitle, props as subTitleProps } from './card-sub-title';\nexport var props = _objectSpread({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'body')), {\n  bodyClass: {\n    type: [String, Object, Array],\n    default: null\n  }\n}, titleProps, {}, subTitleProps, {\n  overlay: {\n    type: Boolean,\n    default: false\n  }\n}); // @vue/component\n\nexport var BCardBody = /*#__PURE__*/Vue.extend({\n  name: 'BCardBody',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _ref2;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var cardTitle = h();\n    var cardSubTitle = h();\n    var cardContent = children || [h()];\n\n    if (props.title) {\n      cardTitle = h(BCardTitle, {\n        props: pluckProps(titleProps, props)\n      });\n    }\n\n    if (props.subTitle) {\n      cardSubTitle = h(BCardSubTitle, {\n        props: pluckProps(subTitleProps, props),\n        class: ['mb-2']\n      });\n    }\n\n    return h(props.bodyTag, mergeData(data, {\n      staticClass: 'card-body',\n      class: [(_ref2 = {\n        'card-img-overlay': props.overlay\n      }, _defineProperty(_ref2, \"bg-\".concat(props.bodyBgVariant), props.bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(props.bodyBorderVariant), props.bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(props.bodyTextVariant), props.bodyTextVariant), _ref2), props.bodyClass || {}]\n    }), [cardTitle, cardSubTitle].concat(_toConsumableArray(cardContent)));\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 '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport prefixPropName from '../../utils/prefix-prop-name';\nimport copyProps from '../../utils/copy-props';\nimport { htmlOrText } from '../../utils/html';\nimport cardMixin from '../../mixins/card';\nexport var props = _objectSpread({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'header')), {\n  header: {\n    type: String,\n    default: null\n  },\n  headerHtml: {\n    type: String,\n    default: null\n  },\n  headerClass: {\n    type: [String, Object, Array],\n    default: null\n  }\n}); // @vue/component\n\nexport var BCardHeader = /*#__PURE__*/Vue.extend({\n  name: 'BCardHeader',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _ref2;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.headerTag, mergeData(data, {\n      staticClass: 'card-header',\n      class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(props.headerBgVariant), props.headerBgVariant), _defineProperty(_ref2, \"border-\".concat(props.headerBorderVariant), props.headerBorderVariant), _defineProperty(_ref2, \"text-\".concat(props.headerTextVariant), props.headerTextVariant), _ref2)]\n    }), children || [h('div', {\n      domProps: htmlOrText(props.headerHtml, props.header)\n    })]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport prefixPropName from '../../utils/prefix-prop-name';\nimport copyProps from '../../utils/copy-props';\nimport { htmlOrText } from '../../utils/html';\nimport cardMixin from '../../mixins/card';\nexport var props = _objectSpread({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'footer')), {\n  footer: {\n    type: String,\n    default: null\n  },\n  footerHtml: {\n    type: String,\n    default: null\n  },\n  footerClass: {\n    type: [String, Object, Array],\n    default: null\n  }\n}); // @vue/component\n\nexport var BCardFooter = /*#__PURE__*/Vue.extend({\n  name: 'BCardFooter',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _ref2;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.footerTag, mergeData(data, {\n      staticClass: 'card-footer',\n      class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(props.footerBgVariant), props.footerBgVariant), _defineProperty(_ref2, \"border-\".concat(props.footerBorderVariant), props.footerBorderVariant), _defineProperty(_ref2, \"text-\".concat(props.footerTextVariant), props.footerTextVariant), _ref2)]\n    }), children || [h('div', {\n      domProps: htmlOrText(props.footerHtml, props.footer)\n    })]);\n  }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  src: {\n    type: String,\n    default: null,\n    required: true\n  },\n  alt: {\n    type: String,\n    default: null\n  },\n  top: {\n    type: Boolean,\n    default: false\n  },\n  bottom: {\n    type: Boolean,\n    default: false\n  },\n  start: {\n    type: Boolean,\n    default: false\n  },\n  left: {\n    // alias of 'start'\n    type: Boolean,\n    default: false\n  },\n  end: {\n    type: Boolean,\n    default: false\n  },\n  right: {\n    // alias of 'end'\n    type: Boolean,\n    default: false\n  },\n  height: {\n    type: [Number, String],\n    default: null\n  },\n  width: {\n    type: [Number, String],\n    default: null\n  }\n}; // @vue/component\n\nexport var BCardImg = /*#__PURE__*/Vue.extend({\n  name: 'BCardImg',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data;\n    var baseClass = 'card-img';\n\n    if (props.top) {\n      baseClass += '-top';\n    } else if (props.right || props.end) {\n      baseClass += '-right';\n    } else if (props.bottom) {\n      baseClass += '-bottom';\n    } else if (props.left || props.start) {\n      baseClass += '-left';\n    }\n\n    return h('img', mergeData(data, {\n      class: [baseClass],\n      attrs: {\n        src: props.src,\n        alt: props.alt,\n        height: props.height,\n        width: props.width\n      }\n    }));\n  }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\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 '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport prefixPropName from '../../utils/prefix-prop-name';\nimport unPrefixPropName from '../../utils/unprefix-prop-name';\nimport copyProps from '../../utils/copy-props';\nimport pluckProps from '../../utils/pluck-props';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport cardMixin from '../../mixins/card';\nimport { BCardBody, props as bodyProps } from './card-body';\nimport { BCardHeader, props as headerProps } from './card-header';\nimport { BCardFooter, props as footerProps } from './card-footer';\nimport { BCardImg, props as imgProps } from './card-img';\nvar cardImgProps = copyProps(imgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = _objectSpread({}, bodyProps, {}, headerProps, {}, footerProps, {}, cardImgProps, {}, copyProps(cardMixin.props), {\n  align: {\n    type: String,\n    default: null\n  },\n  noBody: {\n    type: Boolean,\n    default: false\n  }\n}); // @vue/component\n\nexport var BCard = /*#__PURE__*/Vue.extend({\n  name: 'BCard',\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        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var $slots = slots(); // Vue < 2.6.x may return undefined for scopedSlots\n\n    var $scopedSlots = scopedSlots || {}; // Create placeholder elements for each section\n\n    var imgFirst = h();\n    var header = h();\n    var content = h();\n    var footer = h();\n    var imgLast = h();\n\n    if (props.imgSrc) {\n      var img = h(BCardImg, {\n        props: pluckProps(cardImgProps, props, unPrefixPropName.bind(null, 'img'))\n      });\n\n      if (props.imgBottom) {\n        imgLast = img;\n      } else {\n        imgFirst = img;\n      }\n    }\n\n    if (props.header || hasNormalizedSlot('header', $scopedSlots, $slots)) {\n      header = h(BCardHeader, {\n        props: pluckProps(headerProps, props)\n      }, normalizeSlot('header', {}, $scopedSlots, $slots));\n    }\n\n    content = normalizeSlot('default', {}, $scopedSlots, $slots) || [];\n\n    if (!props.noBody) {\n      // Wrap content in card-body\n      content = [h(BCardBody, {\n        props: pluckProps(bodyProps, props)\n      }, _toConsumableArray(content))];\n    }\n\n    if (props.footer || hasNormalizedSlot('footer', $scopedSlots, $slots)) {\n      footer = h(BCardFooter, {\n        props: pluckProps(footerProps, props)\n      }, normalizeSlot('footer', {}, $scopedSlots, $slots));\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'card',\n      class: (_class = {\n        'flex-row': props.imgLeft || props.imgStart,\n        'flex-row-reverse': (props.imgRight || props.imgEnd) && !(props.imgLeft || props.imgStart)\n      }, _defineProperty(_class, \"text-\".concat(props.align), props.align), _defineProperty(_class, \"bg-\".concat(props.bgVariant), props.bgVariant), _defineProperty(_class, \"border-\".concat(props.borderVariant), props.borderVariant), _defineProperty(_class, \"text-\".concat(props.textVariant), props.textVariant), _class)\n    }), [imgFirst, header].concat(_toConsumableArray(content), [footer, imgLast]));\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 from '../../utils/vue';\nimport identity from '../../utils/identity';\nimport { concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { isString } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { toString } from '../../utils/string';\nimport { mergeData } from 'vue-functional-data-merge'; // --- Constants --\n\nvar NAME = 'BImg'; // Blank image with fill template\n\nvar BLANK_TEMPLATE = '<svg width=\"%{w}\" height=\"%{h}\" ' + 'xmlns=\"http://www.w3.org/2000/svg\" ' + 'viewBox=\"0 0 %{w} %{h}\" preserveAspectRatio=\"none\">' + '<rect width=\"100%\" height=\"100%\" style=\"fill:%{f};\"></rect>' + '</svg>';\nexport var props = {\n  src: {\n    type: String,\n    default: null\n  },\n  srcset: {\n    type: [String, Array],\n    default: null\n  },\n  sizes: {\n    type: [String, Array],\n    default: null\n  },\n  alt: {\n    type: String,\n    default: null\n  },\n  width: {\n    type: [Number, String],\n    default: null\n  },\n  height: {\n    type: [Number, String],\n    default: null\n  },\n  block: {\n    type: Boolean,\n    default: false\n  },\n  fluid: {\n    type: Boolean,\n    default: false\n  },\n  fluidGrow: {\n    // Gives fluid images class `w-100` to make them grow to fit container\n    type: Boolean,\n    default: false\n  },\n  rounded: {\n    // rounded can be:\n    //   false: no rounding of corners\n    //   true: slightly rounded corners\n    //   'top': top corners rounded\n    //   'right': right corners rounded\n    //   'bottom': bottom corners rounded\n    //   'left': left corners rounded\n    //   'circle': circle/oval\n    //   '0': force rounding off\n    type: [Boolean, String],\n    default: false\n  },\n  thumbnail: {\n    type: Boolean,\n    default: false\n  },\n  left: {\n    type: Boolean,\n    default: false\n  },\n  right: {\n    type: Boolean,\n    default: false\n  },\n  center: {\n    type: Boolean,\n    default: false\n  },\n  blank: {\n    type: Boolean,\n    default: false\n  },\n  blankColor: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'blankColor');\n    }\n  }\n}; // --- Helper methods ---\n\nvar makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n  var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n  return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n}; // @vue/component\n\n\nexport var BImg = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data;\n    var src = props.src;\n    var width = toInteger(props.width) || null;\n    var height = toInteger(props.height) || null;\n    var align = null;\n    var block = props.block;\n    var srcset = concat(props.srcset).filter(identity).join(',');\n    var sizes = concat(props.sizes).filter(identity).join(',');\n\n    if (props.blank) {\n      if (!height && width) {\n        height = width;\n      } else if (!width && height) {\n        width = height;\n      }\n\n      if (!width && !height) {\n        width = 1;\n        height = 1;\n      } // Make a blank SVG image\n\n\n      src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n\n      srcset = null;\n      sizes = null;\n    }\n\n    if (props.left) {\n      align = 'float-left';\n    } else if (props.right) {\n      align = 'float-right';\n    } else if (props.center) {\n      align = 'mx-auto';\n      block = true;\n    }\n\n    return h('img', mergeData(data, {\n      attrs: {\n        src: src,\n        alt: props.alt,\n        width: width ? toString(width) : null,\n        height: height ? toString(height) : null,\n        srcset: srcset || null,\n        sizes: sizes || null\n      },\n      class: (_class = {\n        'img-thumbnail': props.thumbnail,\n        'img-fluid': props.fluid || props.fluidGrow,\n        'w-100': props.fluidGrow,\n        rounded: props.rounded === '' || props.rounded === true\n      }, _defineProperty(_class, \"rounded-\".concat(props.rounded), isString(props.rounded) && props.rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n    }));\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Vue from '../../utils/vue';\nimport identity from '../../utils/identity';\nimport { concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { hasIntersectionObserverSupport } from '../../utils/env';\nimport { toInteger } from '../../utils/number';\nimport { VBVisible } from '../../directives/visible/visible';\nimport { BImg } from './img';\nvar NAME = 'BImgLazy';\nexport var props = {\n  src: {\n    type: String,\n    default: null,\n    required: true\n  },\n  srcset: {\n    type: [String, Array],\n    default: null\n  },\n  sizes: {\n    type: [String, Array],\n    default: null\n  },\n  alt: {\n    type: String,\n    default: null\n  },\n  width: {\n    type: [Number, String],\n    default: null\n  },\n  height: {\n    type: [Number, String],\n    default: null\n  },\n  blankSrc: {\n    // If null, a blank image is generated\n    type: String,\n    default: null\n  },\n  blankColor: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'blankColor');\n    }\n  },\n  blankWidth: {\n    type: [Number, String],\n    default: null\n  },\n  blankHeight: {\n    type: [Number, String],\n    default: null\n  },\n  show: {\n    type: Boolean,\n    default: false\n  },\n  fluid: {\n    type: Boolean,\n    default: false\n  },\n  fluidGrow: {\n    type: Boolean,\n    default: false\n  },\n  block: {\n    type: Boolean,\n    default: false\n  },\n  thumbnail: {\n    type: Boolean,\n    default: false\n  },\n  rounded: {\n    type: [Boolean, String],\n    default: false\n  },\n  left: {\n    type: Boolean,\n    default: false\n  },\n  right: {\n    type: Boolean,\n    default: false\n  },\n  center: {\n    type: Boolean,\n    default: false\n  },\n  offset: {\n    // Distance away from viewport (in pixels) before being\n    // considered \"visible\"\n    type: [Number, String],\n    default: 360\n  }\n}; // @vue/component\n\nexport var BImgLazy = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  directives: {\n    bVisible: VBVisible\n  },\n  props: props,\n  data: function data() {\n    return {\n      isShown: this.show\n    };\n  },\n  computed: {\n    computedSrc: function computedSrc() {\n      return !this.blankSrc || this.isShown ? this.src : this.blankSrc;\n    },\n    computedBlank: function computedBlank() {\n      return !(this.isShown || this.blankSrc);\n    },\n    computedWidth: function computedWidth() {\n      return this.isShown ? this.width : this.blankWidth || this.width;\n    },\n    computedHeight: function computedHeight() {\n      return this.isShown ? this.height : this.blankHeight || this.height;\n    },\n    computedSrcset: function computedSrcset() {\n      var srcset = concat(this.srcset).filter(identity).join(',');\n      return !this.blankSrc || this.isShown ? srcset : null;\n    },\n    computedSizes: function computedSizes() {\n      var sizes = concat(this.sizes).filter(identity).join(',');\n      return !this.blankSrc || this.isShown ? sizes : null;\n    }\n  },\n  watch: {\n    show: function show(newVal, oldVal) {\n      if (newVal !== oldVal) {\n        // If IntersectionObserver support is not available, image is always shown\n        var visible = hasIntersectionObserverSupport ? newVal : true;\n        this.isShown = visible;\n\n        if (visible !== newVal) {\n          // Ensure the show prop is synced (when no IntersectionObserver)\n          this.$nextTick(this.updateShowProp);\n        }\n      }\n    },\n    isShown: function isShown(newVal, oldVal) {\n      if (newVal !== oldVal) {\n        // Update synched show prop\n        this.updateShowProp();\n      }\n    }\n  },\n  mounted: function mounted() {\n    // If IntersectionObserver is not available, image is always shown\n    this.isShown = hasIntersectionObserverSupport ? this.show : true;\n  },\n  methods: {\n    updateShowProp: function updateShowProp() {\n      this.$emit('update:show', this.isShown);\n    },\n    doShow: function doShow(visible) {\n      // If IntersectionObserver is not supported, the callback\n      // will be called with `null` rather than `true` or `false`\n      if ((visible || visible === null) && !this.isShown) {\n        this.isShown = true;\n      }\n    }\n  },\n  render: function render(h) {\n    var directives = [];\n\n    if (!this.isShown) {\n      var _modifiers;\n\n      // We only add the visible directive if we are not shown\n      directives.push({\n        // Visible directive will silently do nothing if\n        // IntersectionObserver is not supported\n        name: 'b-visible',\n        // Value expects a callback (passed one arg of `visible` = `true` or `false`)\n        value: this.doShow,\n        modifiers: (_modifiers = {}, _defineProperty(_modifiers, \"\".concat(toInteger(this.offset) || 0), true), _defineProperty(_modifiers, \"once\", true), _modifiers)\n      });\n    }\n\n    return h(BImg, {\n      directives: directives,\n      props: {\n        // Computed value props\n        src: this.computedSrc,\n        blank: this.computedBlank,\n        width: this.computedWidth,\n        height: this.computedHeight,\n        srcset: this.computedSrcset || null,\n        sizes: this.computedSizes || null,\n        // Passthrough props\n        alt: this.alt,\n        blankColor: this.blankColor,\n        fluid: this.fluid,\n        fluidGrow: this.fluidGrow,\n        block: this.block,\n        thumbnail: this.thumbnail,\n        rounded: this.rounded,\n        left: this.left,\n        right: this.right,\n        center: this.center\n      }\n    });\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Vue from '../../utils/vue';\nimport { omit } from '../../utils/object';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { BImgLazy, props as imgLazyProps } from '../image/img-lazy'; // Copy of `<b-img-lazy>` props, and remove conflicting/non-applicable props\n// The `omit()` util creates a new object, so we can just pass the original props\n\nvar lazyProps = omit(imgLazyProps, ['left', 'right', 'center', 'block', 'rounded', 'thumbnail', 'fluid', 'fluidGrow']);\nexport var props = _objectSpread({}, lazyProps, {\n  top: {\n    type: Boolean,\n    default: false\n  },\n  bottom: {\n    type: Boolean,\n    default: false\n  },\n  start: {\n    type: Boolean,\n    default: false\n  },\n  left: {\n    // alias of 'start'\n    type: Boolean,\n    default: false\n  },\n  end: {\n    type: Boolean,\n    default: false\n  },\n  right: {\n    // alias of 'end'\n    type: Boolean,\n    default: false\n  }\n}); // @vue/component\n\nexport var BCardImgLazy = /*#__PURE__*/Vue.extend({\n  name: 'BCardImgLazy',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data;\n    var baseClass = 'card-img';\n\n    if (props.top) {\n      baseClass += '-top';\n    } else if (props.right || props.end) {\n      baseClass += '-right';\n    } else if (props.bottom) {\n      baseClass += '-bottom';\n    } else if (props.left || props.start) {\n      baseClass += '-left';\n    } // False out the left/center/right props before passing to b-img-lazy\n\n\n    var lazyProps = _objectSpread({}, props, {\n      left: false,\n      right: false,\n      center: false\n    });\n\n    return h(BImgLazy, mergeData(data, {\n      class: [baseClass],\n      props: lazyProps\n    }));\n  }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  textTag: {\n    type: String,\n    default: 'p'\n  }\n}; // @vue/component\n\nexport var BCardText = /*#__PURE__*/Vue.extend({\n  name: 'BCardText',\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.textTag, mergeData(data, {\n      staticClass: 'card-text'\n    }), children);\n  }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  deck: {\n    type: Boolean,\n    default: false\n  },\n  columns: {\n    type: Boolean,\n    default: false\n  }\n}; // @vue/component\n\nexport var BCardGroup = /*#__PURE__*/Vue.extend({\n  name: 'BCardGroup',\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: props.deck ? 'card-deck' : props.columns ? 'card-columns' : 'card-group'\n    }), children);\n  }\n});","import { BCard } from './card';\nimport { BCardHeader } from './card-header';\nimport { BCardBody } from './card-body';\nimport { BCardTitle } from './card-title';\nimport { BCardSubTitle } from './card-sub-title';\nimport { BCardFooter } from './card-footer';\nimport { BCardImg } from './card-img';\nimport { BCardImgLazy } from './card-img-lazy';\nimport { BCardText } from './card-text';\nimport { BCardGroup } from './card-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar CardPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BCard: BCard,\n    BCardHeader: BCardHeader,\n    BCardBody: BCardBody,\n    BCardTitle: BCardTitle,\n    BCardSubTitle: BCardSubTitle,\n    BCardFooter: BCardFooter,\n    BCardImg: BCardImg,\n    BCardImgLazy: BCardImgLazy,\n    BCardText: BCardText,\n    BCardGroup: BCardGroup\n  }\n});\nexport { CardPlugin, BCard, BCardHeader, BCardBody, BCardTitle, BCardSubTitle, BCardFooter, BCardImg, BCardImgLazy, BCardText, BCardGroup };","var noop = function noop() {};\n\nexport default noop;","import Vue from '../../utils/vue';\nimport KeyCodes from '../../utils/key-codes';\nimport noop from '../../utils/noop';\nimport observeDom from '../../utils/observe-dom';\nimport { getComponentConfig } from '../../utils/config';\nimport { selectAll, reflow, addClass, removeClass, setAttr } from '../../utils/dom';\nimport { isBrowser, hasTouchSupport, hasPointerEventSupport } from '../../utils/env';\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOn, eventOff } from '../../utils/events';\nimport { isUndefined } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nvar NAME = 'BCarousel'; // Slide directional classes\n\nvar DIRECTION = {\n  next: {\n    dirClass: 'carousel-item-left',\n    overlayClass: 'carousel-item-next'\n  },\n  prev: {\n    dirClass: 'carousel-item-right',\n    overlayClass: 'carousel-item-prev'\n  }\n}; // Fallback Transition duration (with a little buffer) in ms\n\nvar TRANS_DURATION = 600 + 50; // Time for mouse compat events to fire after touch\n\nvar TOUCH_EVENT_COMPAT_WAIT = 500; // Number of pixels to consider touch move a swipe\n\nvar SWIPE_THRESHOLD = 40; // PointerEvent pointer types\n\nvar PointerType = {\n  TOUCH: 'touch',\n  PEN: 'pen'\n}; // Transition Event names\n\nvar TransitionEndEvents = {\n  WebkitTransition: 'webkitTransitionEnd',\n  MozTransition: 'transitionend',\n  OTransition: 'otransitionend oTransitionEnd',\n  transition: 'transitionend'\n}; // Return the browser specific transitionEnd event name\n\nvar getTransitionEndEvent = function getTransitionEndEvent(el) {\n  for (var name in TransitionEndEvents) {\n    if (!isUndefined(el.style[name])) {\n      return TransitionEndEvents[name];\n    }\n  } // Fallback\n\n  /* istanbul ignore next */\n\n\n  return null;\n}; // @vue/component\n\n\nexport var BCarousel = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [idMixin, normalizeSlotMixin],\n  provide: function provide() {\n    return {\n      bvCarousel: this\n    };\n  },\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    labelPrev: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelPrev');\n      }\n    },\n    labelNext: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelNext');\n      }\n    },\n    labelGotoSlide: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelGotoSlide');\n      }\n    },\n    labelIndicators: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelIndicators');\n      }\n    },\n    interval: {\n      type: Number,\n      default: 5000\n    },\n    indicators: {\n      type: Boolean,\n      default: false\n    },\n    controls: {\n      type: Boolean,\n      default: false\n    },\n    noAnimation: {\n      // Disable slide/fade animation\n      type: Boolean,\n      default: false\n    },\n    fade: {\n      // Enable cross-fade animation instead of slide animation\n      type: Boolean,\n      default: false\n    },\n    noWrap: {\n      // Disable wrapping/looping when start/end is reached\n      type: Boolean,\n      default: false\n    },\n    noTouch: {\n      // Sniffed by carousel-slide\n      type: Boolean,\n      default: false\n    },\n    noHoverPause: {\n      // Disable pause on hover\n      type: Boolean,\n      default: false\n    },\n    imgWidth: {\n      // Sniffed by carousel-slide\n      type: [Number, String] // default: undefined\n\n    },\n    imgHeight: {\n      // Sniffed by carousel-slide\n      type: [Number, String] // default: undefined\n\n    },\n    background: {\n      type: String // default: undefined\n\n    },\n    value: {\n      type: Number,\n      default: 0\n    }\n  },\n  data: function data() {\n    return {\n      index: this.value || 0,\n      isSliding: false,\n      transitionEndEvent: null,\n      slides: [],\n      direction: null,\n      isPaused: !(toInteger(this.interval) > 0),\n      // Touch event handling values\n      touchStartX: 0,\n      touchDeltaX: 0\n    };\n  },\n  computed: {\n    numSlides: function numSlides() {\n      return this.slides.length;\n    }\n  },\n  watch: {\n    value: function value(newVal, oldVal) {\n      if (newVal !== oldVal) {\n        this.setSlide(toInteger(newVal) || 0);\n      }\n    },\n    interval: function interval(newVal, oldVal) {\n      if (newVal === oldVal) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      if (!newVal) {\n        // Pausing slide show\n        this.pause(false);\n      } else {\n        // Restarting or Changing interval\n        this.pause(true);\n        this.start(false);\n      }\n    },\n    isPaused: function isPaused(newVal, oldVal) {\n      if (newVal !== oldVal) {\n        this.$emit(newVal ? 'paused' : 'unpaused');\n      }\n    },\n    index: function index(to, from) {\n      if (to === from || this.isSliding) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      this.doSlide(to, from);\n    }\n  },\n  created: function created() {\n    // Create private non-reactive props\n    this._intervalId = null;\n    this._animationTimeout = null;\n    this._touchTimeout = null; // Set initial paused state\n\n    this.isPaused = !(toInteger(this.interval) > 0);\n  },\n  mounted: function mounted() {\n    // Cache current browser transitionend event name\n    this.transitionEndEvent = getTransitionEndEvent(this.$el) || null; // Get all slides\n\n    this.updateSlides(); // Observe child changes so we can update slide list\n\n    observeDom(this.$refs.inner, this.updateSlides.bind(this), {\n      subtree: false,\n      childList: true,\n      attributes: true,\n      attributeFilter: ['id']\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    clearTimeout(this._animationTimeout);\n    clearTimeout(this._touchTimeout);\n    clearInterval(this._intervalId);\n    this._intervalId = null;\n    this._animationTimeout = null;\n    this._touchTimeout = null;\n  },\n  methods: {\n    // Set slide\n    setSlide: function setSlide(slide) {\n      var _this = this;\n\n      var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      // Don't animate when page is not visible\n\n      /* istanbul ignore if: difficult to test */\n      if (isBrowser && document.visibilityState && document.hidden) {\n        return;\n      }\n\n      var noWrap = this.noWrap;\n      var numSlides = this.numSlides; // Make sure we have an integer (you never know!)\n\n      slide = Math.floor(slide); // Don't do anything if nothing to slide to\n\n      if (numSlides === 0) {\n        return;\n      } // Don't change slide while transitioning, wait until transition is done\n\n\n      if (this.isSliding) {\n        // Schedule slide after sliding complete\n        this.$once('sliding-end', function () {\n          return _this.setSlide(slide, direction);\n        });\n        return;\n      }\n\n      this.direction = direction; // Set new slide index\n      // Wrap around if necessary (if no-wrap not enabled)\n\n      this.index = slide >= numSlides ? noWrap ? numSlides - 1 : 0 : slide < 0 ? noWrap ? 0 : numSlides - 1 : slide; // Ensure the v-model is synched up if no-wrap is enabled\n      // and user tried to slide pass either ends\n\n      if (noWrap && this.index !== slide && this.index !== this.value) {\n        this.$emit('input', this.index);\n      }\n    },\n    // Previous slide\n    prev: function prev() {\n      this.setSlide(this.index - 1, 'prev');\n    },\n    // Next slide\n    next: function next() {\n      this.setSlide(this.index + 1, 'next');\n    },\n    // Pause auto rotation\n    pause: function pause(evt) {\n      if (!evt) {\n        this.isPaused = true;\n      }\n\n      if (this._intervalId) {\n        clearInterval(this._intervalId);\n        this._intervalId = null;\n      }\n    },\n    // Start auto rotate slides\n    start: function start(evt) {\n      if (!evt) {\n        this.isPaused = false;\n      }\n      /* istanbul ignore next: most likely will never happen, but just in case */\n\n\n      if (this._intervalId) {\n        clearInterval(this._intervalId);\n        this._intervalId = null;\n      } // Don't start if no interval, or less than 2 slides\n\n\n      if (this.interval && this.numSlides > 1) {\n        this._intervalId = setInterval(this.next, Math.max(1000, this.interval));\n      }\n    },\n    // Restart auto rotate slides when focus/hover leaves the carousel\n    restart: function restart()\n    /* istanbul ignore next: difficult to test */\n    {\n      if (!this.$el.contains(document.activeElement)) {\n        this.start();\n      }\n    },\n    doSlide: function doSlide(to, from) {\n      var _this2 = this;\n\n      var isCycling = Boolean(this.interval); // Determine sliding direction\n\n      var direction = this.calcDirection(this.direction, from, to);\n      var overlayClass = direction.overlayClass;\n      var dirClass = direction.dirClass; // Determine current and next slides\n\n      var currentSlide = this.slides[from];\n      var nextSlide = this.slides[to]; // Don't do anything if there aren't any slides to slide to\n\n      if (!currentSlide || !nextSlide) {\n        /* istanbul ignore next */\n        return;\n      } // Start animating\n\n\n      this.isSliding = true;\n\n      if (isCycling) {\n        this.pause(false);\n      }\n\n      this.$emit('sliding-start', to); // Update v-model\n\n      this.$emit('input', this.index);\n\n      if (this.noAnimation) {\n        addClass(nextSlide, 'active');\n        removeClass(currentSlide, 'active');\n        this.isSliding = false; // Notify ourselves that we're done sliding (slid)\n\n        this.$nextTick(function () {\n          return _this2.$emit('sliding-end', to);\n        });\n      } else {\n        addClass(nextSlide, overlayClass); // Trigger a reflow of next slide\n\n        reflow(nextSlide);\n        addClass(currentSlide, dirClass);\n        addClass(nextSlide, dirClass); // Transition End handler\n\n        var called = false;\n        /* istanbul ignore next: difficult to test */\n\n        var onceTransEnd = function onceTransEnd() {\n          if (called) {\n            return;\n          }\n\n          called = true;\n          /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n          if (_this2.transitionEndEvent) {\n            var events = _this2.transitionEndEvent.split(/\\s+/);\n\n            events.forEach(function (evt) {\n              return eventOff(currentSlide, evt, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE);\n            });\n          }\n\n          _this2._animationTimeout = null;\n          removeClass(nextSlide, dirClass);\n          removeClass(nextSlide, overlayClass);\n          addClass(nextSlide, 'active');\n          removeClass(currentSlide, 'active');\n          removeClass(currentSlide, dirClass);\n          removeClass(currentSlide, overlayClass);\n          setAttr(currentSlide, 'aria-current', 'false');\n          setAttr(nextSlide, 'aria-current', 'true');\n          setAttr(currentSlide, 'aria-hidden', 'true');\n          setAttr(nextSlide, 'aria-hidden', 'false');\n          _this2.isSliding = false;\n          _this2.direction = null; // Notify ourselves that we're done sliding (slid)\n\n          _this2.$nextTick(function () {\n            return _this2.$emit('sliding-end', to);\n          });\n        }; // Set up transitionend handler\n\n        /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n\n        if (this.transitionEndEvent) {\n          var events = this.transitionEndEvent.split(/\\s+/);\n          events.forEach(function (event) {\n            return eventOn(currentSlide, event, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE);\n          });\n        } // Fallback to setTimeout()\n\n\n        this._animationTimeout = setTimeout(onceTransEnd, TRANS_DURATION);\n      }\n\n      if (isCycling) {\n        this.start(false);\n      }\n    },\n    // Update slide list\n    updateSlides: function updateSlides() {\n      this.pause(true); // Get all slides as DOM elements\n\n      this.slides = selectAll('.carousel-item', this.$refs.inner);\n      var numSlides = this.slides.length; // Keep slide number in range\n\n      var index = Math.max(0, Math.min(Math.floor(this.index), numSlides - 1));\n      this.slides.forEach(function (slide, idx) {\n        var n = idx + 1;\n\n        if (idx === index) {\n          addClass(slide, 'active');\n          setAttr(slide, 'aria-current', 'true');\n        } else {\n          removeClass(slide, 'active');\n          setAttr(slide, 'aria-current', 'false');\n        }\n\n        setAttr(slide, 'aria-posinset', String(n));\n        setAttr(slide, 'aria-setsize', String(numSlides));\n      }); // Set slide as active\n\n      this.setSlide(index);\n      this.start(this.isPaused);\n    },\n    calcDirection: function calcDirection() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n      var curIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var nextIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n      if (!direction) {\n        return nextIndex > curIndex ? DIRECTION.next : DIRECTION.prev;\n      }\n\n      return DIRECTION[direction];\n    },\n    handleClick: function handleClick(evt, fn) {\n      var keyCode = evt.keyCode;\n\n      if (evt.type === 'click' || keyCode === KeyCodes.SPACE || keyCode === KeyCodes.ENTER) {\n        evt.preventDefault();\n        evt.stopPropagation();\n        fn();\n      }\n    },\n    handleSwipe: function handleSwipe()\n    /* istanbul ignore next: JSDOM doesn't support touch events */\n    {\n      var absDeltaX = Math.abs(this.touchDeltaX);\n\n      if (absDeltaX <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltaX / this.touchDeltaX; // Reset touch delta X\n      // https://github.com/twbs/bootstrap/pull/28558\n\n      this.touchDeltaX = 0;\n\n      if (direction > 0) {\n        // Swipe left\n        this.prev();\n      } else if (direction < 0) {\n        // Swipe right\n        this.next();\n      }\n    },\n    touchStart: function touchStart(evt)\n    /* istanbul ignore next: JSDOM doesn't support touch events */\n    {\n      if (hasPointerEventSupport && PointerType[evt.pointerType.toUpperCase()]) {\n        this.touchStartX = evt.clientX;\n      } else if (!hasPointerEventSupport) {\n        this.touchStartX = evt.touches[0].clientX;\n      }\n    },\n    touchMove: function touchMove(evt)\n    /* istanbul ignore next: JSDOM doesn't support touch events */\n    {\n      // Ensure swiping with one touch and not pinching\n      if (evt.touches && evt.touches.length > 1) {\n        this.touchDeltaX = 0;\n      } else {\n        this.touchDeltaX = evt.touches[0].clientX - this.touchStartX;\n      }\n    },\n    touchEnd: function touchEnd(evt)\n    /* istanbul ignore next: JSDOM doesn't support touch events */\n    {\n      if (hasPointerEventSupport && PointerType[evt.pointerType.toUpperCase()]) {\n        this.touchDeltaX = evt.clientX - this.touchStartX;\n      }\n\n      this.handleSwipe(); // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause(false);\n\n      if (this._touchTimeout) {\n        clearTimeout(this._touchTimeout);\n      }\n\n      this._touchTimeout = setTimeout(this.start, TOUCH_EVENT_COMPAT_WAIT + Math.max(1000, this.interval));\n    }\n  },\n  render: function render(h) {\n    var _this3 = this;\n\n    // Wrapper for slides\n    var inner = h('div', {\n      ref: 'inner',\n      class: ['carousel-inner'],\n      attrs: {\n        id: this.safeId('__BV_inner_'),\n        role: 'list'\n      }\n    }, [this.normalizeSlot('default')]); // Prev and next controls\n\n    var controls = h();\n\n    if (this.controls) {\n      var prevHandler = function prevHandler(evt) {\n        /* istanbul ignore next */\n        if (!_this3.isSliding) {\n          _this3.handleClick(evt, _this3.prev);\n        } else {\n          evt.preventDefault();\n        }\n      };\n\n      var nextHandler = function nextHandler(evt) {\n        /* istanbul ignore next */\n        if (!_this3.isSliding) {\n          _this3.handleClick(evt, _this3.next);\n        } else {\n          evt.preventDefault();\n        }\n      };\n\n      controls = [h('a', {\n        class: ['carousel-control-prev'],\n        attrs: {\n          href: '#',\n          role: 'button',\n          'aria-controls': this.safeId('__BV_inner_'),\n          'aria-disabled': this.isSliding ? 'true' : null\n        },\n        on: {\n          click: prevHandler,\n          keydown: prevHandler\n        }\n      }, [h('span', {\n        class: ['carousel-control-prev-icon'],\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      }), h('span', {\n        class: ['sr-only']\n      }, [this.labelPrev])]), h('a', {\n        class: ['carousel-control-next'],\n        attrs: {\n          href: '#',\n          role: 'button',\n          'aria-controls': this.safeId('__BV_inner_'),\n          'aria-disabled': this.isSliding ? 'true' : null\n        },\n        on: {\n          click: nextHandler,\n          keydown: nextHandler\n        }\n      }, [h('span', {\n        class: ['carousel-control-next-icon'],\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      }), h('span', {\n        class: ['sr-only']\n      }, [this.labelNext])])];\n    } // Indicators\n\n\n    var indicators = h('ol', {\n      class: ['carousel-indicators'],\n      directives: [{\n        name: 'show',\n        rawName: 'v-show',\n        value: this.indicators,\n        expression: 'indicators'\n      }],\n      attrs: {\n        id: this.safeId('__BV_indicators_'),\n        'aria-hidden': this.indicators ? 'false' : 'true',\n        'aria-label': this.labelIndicators,\n        'aria-owns': this.safeId('__BV_inner_')\n      }\n    }, this.slides.map(function (slide, n) {\n      return h('li', {\n        key: \"slide_\".concat(n),\n        class: {\n          active: n === _this3.index\n        },\n        attrs: {\n          role: 'button',\n          id: _this3.safeId(\"__BV_indicator_\".concat(n + 1, \"_\")),\n          tabindex: _this3.indicators ? '0' : '-1',\n          'aria-current': n === _this3.index ? 'true' : 'false',\n          'aria-label': \"\".concat(_this3.labelGotoSlide, \" \").concat(n + 1),\n          'aria-describedby': _this3.slides[n].id || null,\n          'aria-controls': _this3.safeId('__BV_inner_')\n        },\n        on: {\n          click: function click(evt) {\n            _this3.handleClick(evt, function () {\n              _this3.setSlide(n);\n            });\n          },\n          keydown: function keydown(evt) {\n            _this3.handleClick(evt, function () {\n              _this3.setSlide(n);\n            });\n          }\n        }\n      });\n    }));\n    var on = {\n      mouseenter: this.noHoverPause ? noop : this.pause,\n      mouseleave: this.noHoverPause ? noop : this.restart,\n      focusin: this.pause,\n      focusout: this.restart,\n      keydown: function keydown(evt) {\n        if (/input|textarea/i.test(evt.target.tagName)) {\n          /* istanbul ignore next */\n          return;\n        }\n\n        var keyCode = evt.keyCode;\n\n        if (keyCode === KeyCodes.LEFT || keyCode === KeyCodes.RIGHT) {\n          evt.preventDefault();\n          evt.stopPropagation();\n\n          _this3[keyCode === KeyCodes.LEFT ? 'prev' : 'next']();\n        }\n      }\n    }; // Touch support event handlers for environment\n\n    if (!this.noTouch && hasTouchSupport) {\n      // Attach appropriate listeners (prepend event name with '&' for passive mode)\n\n      /* istanbul ignore next: JSDOM doesn't support touch events */\n      if (hasPointerEventSupport) {\n        on['&pointerdown'] = this.touchStart;\n        on['&pointerup'] = this.touchEnd;\n      } else {\n        on['&touchstart'] = this.touchStart;\n        on['&touchmove'] = this.touchMove;\n        on['&touchend'] = this.touchEnd;\n      }\n    } // Return the carousel\n\n\n    return h('div', {\n      staticClass: 'carousel',\n      class: {\n        slide: !this.noAnimation,\n        'carousel-fade': !this.noAnimation && this.fade,\n        'pointer-event': !this.noTouch && hasTouchSupport && hasPointerEventSupport\n      },\n      style: {\n        background: this.background\n      },\n      attrs: {\n        role: 'region',\n        id: this.safeId(),\n        'aria-busy': this.isSliding ? 'true' : 'false'\n      },\n      on: on\n    }, [inner, controls, indicators]);\n  }\n});","import Vue from '../../utils/vue';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { hasTouchSupport } from '../../utils/env';\nimport { htmlOrText } from '../../utils/html';\nimport { BImg } from '../image/img';\nexport var props = {\n  imgSrc: {\n    type: String // default: undefined\n\n  },\n  imgAlt: {\n    type: String // default: undefined\n\n  },\n  imgWidth: {\n    type: [Number, String] // default: undefined\n\n  },\n  imgHeight: {\n    type: [Number, String] // default: undefined\n\n  },\n  imgBlank: {\n    type: Boolean,\n    default: false\n  },\n  imgBlankColor: {\n    type: String,\n    default: 'transparent'\n  },\n  contentVisibleUp: {\n    type: String\n  },\n  contentTag: {\n    type: String,\n    default: 'div'\n  },\n  caption: {\n    type: String\n  },\n  captionHtml: {\n    type: String\n  },\n  captionTag: {\n    type: String,\n    default: 'h3'\n  },\n  text: {\n    type: String\n  },\n  textHtml: {\n    type: String\n  },\n  textTag: {\n    type: String,\n    default: 'p'\n  },\n  background: {\n    type: String\n  }\n}; // @vue/component\n\nexport var BCarouselSlide = /*#__PURE__*/Vue.extend({\n  name: 'BCarouselSlide',\n  mixins: [idMixin, normalizeSlotMixin],\n  inject: {\n    bvCarousel: {\n      default: function _default() {\n        return {\n          // Explicitly disable touch if not a child of carousel\n          noTouch: true\n        };\n      }\n    }\n  },\n  props: props,\n  computed: {\n    contentClasses: function contentClasses() {\n      return [this.contentVisibleUp ? 'd-none' : '', this.contentVisibleUp ? \"d-\".concat(this.contentVisibleUp, \"-block\") : ''];\n    },\n    computedWidth: function computedWidth() {\n      // Use local width, or try parent width\n      return this.imgWidth || this.bvCarousel.imgWidth || null;\n    },\n    computedHeight: function computedHeight() {\n      // Use local height, or try parent height\n      return this.imgHeight || this.bvCarousel.imgHeight || null;\n    }\n  },\n  render: function render(h) {\n    var noDrag = !this.bvCarousel.noTouch && hasTouchSupport;\n    var img = this.normalizeSlot('img');\n\n    if (!img && (this.imgSrc || this.imgBlank)) {\n      img = h(BImg, {\n        props: {\n          fluidGrow: true,\n          block: true,\n          src: this.imgSrc,\n          blank: this.imgBlank,\n          blankColor: this.imgBlankColor,\n          width: this.computedWidth,\n          height: this.computedHeight,\n          alt: this.imgAlt\n        },\n        // Touch support event handler\n        on: noDrag ? {\n          dragstart: function dragstart(e) {\n            /* istanbul ignore next: difficult to test in JSDOM */\n            e.preventDefault();\n          }\n        } : {}\n      });\n    }\n\n    if (!img) {\n      img = h();\n    }\n\n    var content = h();\n    var contentChildren = [this.caption || this.captionHtml ? h(this.captionTag, {\n      domProps: htmlOrText(this.captionHtml, this.caption)\n    }) : false, this.text || this.textHtml ? h(this.textTag, {\n      domProps: htmlOrText(this.textHtml, this.text)\n    }) : false, this.normalizeSlot('default') || false];\n\n    if (contentChildren.some(Boolean)) {\n      content = h(this.contentTag, {\n        staticClass: 'carousel-caption',\n        class: this.contentClasses\n      }, contentChildren.map(function (i) {\n        return i || h();\n      }));\n    }\n\n    return h('div', {\n      staticClass: 'carousel-item',\n      style: {\n        background: this.background || this.bvCarousel.background || null\n      },\n      attrs: {\n        id: this.safeId(),\n        role: 'listitem'\n      }\n    }, [img, content]);\n  }\n});","import { BCarousel } from './carousel';\nimport { BCarouselSlide } from './carousel-slide';\nimport { pluginFactory } from '../../utils/plugins';\nvar CarouselPlugin =\n/*#__PURE*/\npluginFactory({\n  components: {\n    BCarousel: BCarousel,\n    BCarouselSlide: BCarouselSlide\n  }\n});\nexport { CarouselPlugin, BCarousel, BCarouselSlide };","// Generic collapse transion helper component\n//\n// Note:\n//   Applies the classes `collapse`, `show` and `collapsing`\n//   during the enter/leave transition phases only\n//   Although it appears that Vue may be leaving the classes\n//   in-place after the transition completes\nimport Vue from './vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getBCR, reflow, requestAF } from './dom'; // Transition event handler helpers\n\nvar onEnter = function onEnter(el) {\n  el.style.height = 0; // Animaton frame delay neeeded for `appear` to work\n\n  requestAF(function () {\n    reflow(el);\n    el.style.height = \"\".concat(el.scrollHeight, \"px\");\n  });\n};\n\nvar onAfterEnter = function onAfterEnter(el) {\n  el.style.height = null;\n};\n\nvar onLeave = function onLeave(el) {\n  el.style.height = 'auto';\n  el.style.display = 'block';\n  el.style.height = \"\".concat(getBCR(el).height, \"px\");\n  reflow(el);\n  el.style.height = 0;\n};\n\nvar onAfterLeave = function onAfterLeave(el) {\n  el.style.height = null;\n}; // Default transition props\n// `appear` will use the enter classes\n\n\nvar TRANSITION_PROPS = {\n  css: true,\n  enterClass: '',\n  enterActiveClass: 'collapsing',\n  enterToClass: 'collapse show',\n  leaveClass: 'collapse show',\n  leaveActiveClass: 'collapsing',\n  leaveToClass: 'collapse'\n}; // Default transition handlers\n// `appear` will use the enter handlers\n\nvar TRANSITION_HANDLERS = {\n  enter: onEnter,\n  afterEnter: onAfterEnter,\n  leave: onLeave,\n  afterLeave: onAfterLeave\n}; // @vue/component\n\nexport var BVCollapse = /*#__PURE__*/Vue.extend({\n  name: 'BVCollapse',\n  functional: true,\n  props: {\n    appear: {\n      // If `true` (and `visible` is `true` on mount), animate initially visible\n      type: Boolean,\n      default: false\n    }\n  },\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h('transition', // We merge in the `appear` prop last\n    mergeData(data, {\n      props: TRANSITION_PROPS,\n      on: TRANSITION_HANDLERS\n    }, {\n      props: props\n    }), // Note: `<tranition>` supports a single root element only\n    children);\n  }\n});","import { keys } from './object';\nimport { eventOn, eventOff } from './events';\nvar allListenTypes = {\n  hover: true,\n  click: true,\n  focus: true\n};\nvar BVBoundListeners = '__BV_boundEventListeners__';\n\nvar getTargets = function getTargets(binding) {\n  var targets = keys(binding.modifiers || {}).filter(function (t) {\n    return !allListenTypes[t];\n  });\n\n  if (binding.value) {\n    targets.push(binding.value);\n  }\n\n  return targets;\n};\n\nvar bindTargets = function bindTargets(vnode, binding, listenTypes, fn) {\n  var targets = getTargets(binding);\n\n  var listener = function listener() {\n    fn({\n      targets: targets,\n      vnode: vnode\n    });\n  };\n\n  keys(allListenTypes).forEach(function (type) {\n    if (listenTypes[type] || binding.modifiers[type]) {\n      eventOn(vnode.elm, type, listener);\n      var boundListeners = vnode.elm[BVBoundListeners] || {};\n      boundListeners[type] = boundListeners[type] || [];\n      boundListeners[type].push(listener);\n      vnode.elm[BVBoundListeners] = boundListeners;\n    }\n  }); // Return the list of targets\n\n  return targets;\n};\n\nvar unbindTargets = function unbindTargets(vnode, binding, listenTypes) {\n  keys(allListenTypes).forEach(function (type) {\n    if (listenTypes[type] || binding.modifiers[type]) {\n      var boundListeners = vnode.elm[BVBoundListeners] && vnode.elm[BVBoundListeners][type];\n\n      if (boundListeners) {\n        boundListeners.forEach(function (listener) {\n          return eventOff(vnode.elm, type, listener);\n        });\n        delete vnode.elm[BVBoundListeners][type];\n      }\n    }\n  });\n};\n\nexport { bindTargets, unbindTargets, getTargets };\nexport default bindTargets;","import looseEqual from '../../utils/loose-equal';\nimport { addClass, hasAttr, removeAttr, removeClass, setAttr } from '../../utils/dom';\nimport { isBrowser } from '../../utils/env';\nimport { bindTargets, getTargets, unbindTargets } from '../../utils/target'; // Target listen types\n\nvar listenTypes = {\n  click: true\n}; // Property key for handler storage\n\nvar BV_TOGGLE = '__BV_toggle__';\nvar BV_TOGGLE_STATE = '__BV_toggle_STATE__';\nvar BV_TOGGLE_CONTROLS = '__BV_toggle_CONTROLS__';\nvar BV_TOGGLE_TARGETS = '__BV_toggle_TARGETS__'; // Emitted control event for collapse (emitted to collapse)\n\nexport var EVENT_TOGGLE = 'bv::toggle::collapse'; // Listen to event for toggle state update (emitted by collapse)\n\nexport var EVENT_STATE = 'bv::collapse::state'; // Private event emitted on `$root` to ensure the toggle state is always synced\n// Gets emitted even if the state of b-collapse has not changed\n// This event is NOT to be documented as people should not be using it\n\nexport var EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // Private event we send to collapse to request state update sync event\n\nexport var EVENT_STATE_REQUEST = 'bv::request::collapse::state'; // Reset and remove a property from the provided element\n\nvar resetProp = function resetProp(el, prop) {\n  el[prop] = null;\n  delete el[prop];\n}; // Handle targets update\n\n\nvar handleTargets = function handleTargets(_ref) {\n  var targets = _ref.targets,\n      vnode = _ref.vnode;\n  targets.forEach(function (target) {\n    vnode.context.$root.$emit(EVENT_TOGGLE, target);\n  });\n}; // Handle directive updates\n\n/* istanbul ignore next: not easy to test */\n\n\nvar handleUpdate = function handleUpdate(el, binding, vnode) {\n  if (!isBrowser) {\n    return;\n  }\n\n  if (!looseEqual(getTargets(binding), el[BV_TOGGLE_TARGETS])) {\n    // Targets have changed, so update accordingly\n    unbindTargets(vnode, binding, listenTypes);\n    var targets = bindTargets(vnode, binding, listenTypes, handleTargets); // Update targets array to element\n\n    el[BV_TOGGLE_TARGETS] = targets; // Add aria attributes to element\n\n    el[BV_TOGGLE_CONTROLS] = targets.join(' '); // ensure aria-controls is up to date\n\n    setAttr(el, 'aria-controls', el[BV_TOGGLE_CONTROLS]); // Request a state update from targets so that we can ensure\n    // expanded state is correct\n\n    targets.forEach(function (target) {\n      vnode.context.$root.$emit(EVENT_STATE_REQUEST, target);\n    });\n  } // Ensure the collapse class and aria-* attributes persist\n  // after element is updated (either by parent re-rendering\n  // or changes to this element or its contents\n\n\n  if (el[BV_TOGGLE_STATE] === true) {\n    addClass(el, 'collapsed');\n    setAttr(el, 'aria-expanded', 'true');\n  } else if (el[BV_TOGGLE_STATE] === false) {\n    removeClass(el, 'collapsed');\n    setAttr(el, 'aria-expanded', 'false');\n  }\n\n  setAttr(el, 'aria-controls', el[BV_TOGGLE_CONTROLS]);\n};\n/*\n * Export our directive\n */\n\n\nexport var VBToggle = {\n  bind: function bind(el, binding, vnode) {\n    var targets = bindTargets(vnode, binding, listenTypes, handleTargets);\n\n    if (isBrowser && vnode.context && targets.length > 0) {\n      // Add targets array to element\n      el[BV_TOGGLE_TARGETS] = targets; // Add aria attributes to element\n\n      el[BV_TOGGLE_CONTROLS] = targets.join(' '); // State is initially collapsed until we receive a state event\n\n      el[BV_TOGGLE_STATE] = false;\n      setAttr(el, 'aria-controls', el[BV_TOGGLE_CONTROLS]);\n      setAttr(el, 'aria-expanded', 'false'); // If element is not a button, we add `role=\"button\"` for accessibility\n\n      if (el.tagName !== 'BUTTON' && !hasAttr(el, 'role')) {\n        setAttr(el, 'role', 'button');\n      } // Toggle state handler\n\n\n      var toggleDirectiveHandler = function toggleDirectiveHandler(id, state) {\n        var targets = el[BV_TOGGLE_TARGETS] || [];\n\n        if (targets.indexOf(id) !== -1) {\n          // Set aria-expanded state\n          setAttr(el, 'aria-expanded', state ? 'true' : 'false'); // Set/Clear 'collapsed' class state\n\n          el[BV_TOGGLE_STATE] = state;\n\n          if (state) {\n            removeClass(el, 'collapsed');\n          } else {\n            addClass(el, 'collapsed');\n          }\n        }\n      }; // Store the toggle handler on the element\n\n\n      el[BV_TOGGLE] = toggleDirectiveHandler; // Listen for toggle state changes (public)\n\n      vnode.context.$root.$on(EVENT_STATE, el[BV_TOGGLE]); // Listen for toggle state sync (private)\n\n      vnode.context.$root.$on(EVENT_STATE_SYNC, el[BV_TOGGLE]);\n    }\n  },\n  componentUpdated: handleUpdate,\n  updated: handleUpdate,\n  unbind: function unbind(el, binding, vnode)\n  /* istanbul ignore next */\n  {\n    unbindTargets(vnode, binding, listenTypes); // Remove our $root listener\n\n    if (el[BV_TOGGLE]) {\n      vnode.context.$root.$off(EVENT_STATE, el[BV_TOGGLE]);\n      vnode.context.$root.$off(EVENT_STATE_SYNC, el[BV_TOGGLE]);\n    } // Reset custom  props\n\n\n    resetProp(el, BV_TOGGLE);\n    resetProp(el, BV_TOGGLE_STATE);\n    resetProp(el, BV_TOGGLE_CONTROLS);\n    resetProp(el, BV_TOGGLE_TARGETS); // Reset classes/attrs\n\n    removeClass(el, 'collapsed');\n    removeAttr(el, 'aria-expanded');\n    removeAttr(el, 'aria-controls');\n    removeAttr(el, 'role');\n  }\n};","import Vue from '../../utils/vue';\nimport { BVCollapse } from '../../utils/bv-collapse';\nimport { addClass, hasClass, removeClass, closest, matches, getCS } from '../../utils/dom';\nimport { isBrowser } from '../../utils/env';\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOnOff } from '../../utils/events';\nimport idMixin from '../../mixins/id';\nimport listenOnRootMixin from '../../mixins/listen-on-root';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { EVENT_TOGGLE, EVENT_STATE, EVENT_STATE_REQUEST, EVENT_STATE_SYNC } from '../../directives/toggle/toggle'; // --- Constants ---\n// Accordion event name we emit on `$root`\n\nvar EVENT_ACCORDION = 'bv::collapse::accordion'; // --- Main component ---\n// @vue/component\n\nexport var BCollapse = /*#__PURE__*/Vue.extend({\n  name: 'BCollapse',\n  mixins: [idMixin, listenOnRootMixin, normalizeSlotMixin],\n  model: {\n    prop: 'visible',\n    event: 'input'\n  },\n  props: {\n    isNav: {\n      type: Boolean,\n      default: false\n    },\n    accordion: {\n      type: String,\n      default: null\n    },\n    visible: {\n      type: Boolean,\n      default: false\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    appear: {\n      // If `true` (and `visible` is `true` on mount), animate initially visible\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      show: this.visible,\n      transitioning: false\n    };\n  },\n  computed: {\n    classObject: function classObject() {\n      return {\n        'navbar-collapse': this.isNav,\n        collapse: !this.transitioning,\n        show: this.show && !this.transitioning\n      };\n    }\n  },\n  watch: {\n    visible: function visible(newVal) {\n      if (newVal !== this.show) {\n        this.show = newVal;\n      }\n    },\n    show: function show(newVal, oldVal) {\n      if (newVal !== oldVal) {\n        this.emitState();\n      }\n    }\n  },\n  created: function created() {\n    this.show = this.visible;\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    this.show = this.visible; // Listen for toggle events to open/close us\n\n    this.listenOnRoot(EVENT_TOGGLE, this.handleToggleEvt); // Listen to other collapses for accordion events\n\n    this.listenOnRoot(EVENT_ACCORDION, this.handleAccordionEvt);\n\n    if (this.isNav) {\n      // Set up handlers\n      this.setWindowEvents(true);\n      this.handleResize();\n    }\n\n    this.$nextTick(function () {\n      _this.emitState();\n    }); // Listen for \"Sync state\" requests from `v-b-toggle`\n\n    this.listenOnRoot(EVENT_STATE_REQUEST, function (id) {\n      if (id === _this.safeId()) {\n        _this.$nextTick(_this.emitSync);\n      }\n    });\n  },\n  updated: function updated() {\n    // Emit a private event every time this component updates to ensure\n    // the toggle button is in sync with the collapse's state\n    // It is emitted regardless if the visible state changes\n    this.emitSync();\n  },\n  deactivated: function deactivated()\n  /* istanbul ignore next */\n  {\n    if (this.isNav) {\n      this.setWindowEvents(false);\n    }\n  },\n  activated: function activated()\n  /* istanbul ignore next */\n  {\n    if (this.isNav) {\n      this.setWindowEvents(true);\n    }\n\n    this.emitSync();\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Trigger state emit if needed\n    this.show = false;\n\n    if (this.isNav && isBrowser) {\n      this.setWindowEvents(false);\n    }\n  },\n  methods: {\n    setWindowEvents: function setWindowEvents(on) {\n      eventOnOff(on, window, 'resize', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n      eventOnOff(on, window, 'orientationchange', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n    },\n    toggle: function toggle() {\n      this.show = !this.show;\n    },\n    onEnter: function onEnter() {\n      this.transitioning = true; // This should be moved out so we can add cancellable events\n\n      this.$emit('show');\n    },\n    onAfterEnter: function onAfterEnter() {\n      this.transitioning = false;\n      this.$emit('shown');\n    },\n    onLeave: function onLeave() {\n      this.transitioning = true; // This should be moved out so we can add cancellable events\n\n      this.$emit('hide');\n    },\n    onAfterLeave: function onAfterLeave() {\n      this.transitioning = false;\n      this.$emit('hidden');\n    },\n    emitState: function emitState() {\n      this.$emit('input', this.show); // Let `v-b-toggle` know the state of this collapse\n\n      this.$root.$emit(EVENT_STATE, this.safeId(), this.show);\n\n      if (this.accordion && this.show) {\n        // Tell the other collapses in this accordion to close\n        this.$root.$emit(EVENT_ACCORDION, this.safeId(), this.accordion);\n      }\n    },\n    emitSync: function emitSync() {\n      // Emit a private event every time this component updates to ensure\n      // the toggle button is in sync with the collapse's state\n      // It is emitted regardless if the visible state changes\n      this.$root.$emit(EVENT_STATE_SYNC, this.safeId(), this.show);\n    },\n    checkDisplayBlock: function checkDisplayBlock() {\n      // Check to see if the collapse has `display: block !important` set\n      // We can't set `display: none` directly on `this.$el`, as it would\n      // trigger a new transition to start (or cancel a current one)\n      var restore = hasClass(this.$el, 'show');\n      removeClass(this.$el, 'show');\n      var isBlock = getCS(this.$el).display === 'block';\n\n      if (restore) {\n        addClass(this.$el, 'show');\n      }\n\n      return isBlock;\n    },\n    clickHandler: function clickHandler(evt) {\n      // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n      var el = evt.target;\n\n      if (!this.isNav || !el || getCS(this.$el).display !== 'block') {\n        /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n        return;\n      }\n\n      if (matches(el, '.nav-link,.dropdown-item') || closest('.nav-link,.dropdown-item', el)) {\n        if (!this.checkDisplayBlock()) {\n          // Only close the collapse if it is not forced to be `display: block !important`\n          this.show = false;\n        }\n      }\n    },\n    handleToggleEvt: function handleToggleEvt(target) {\n      if (target !== this.safeId()) {\n        return;\n      }\n\n      this.toggle();\n    },\n    handleAccordionEvt: function handleAccordionEvt(openedId, accordion) {\n      if (!this.accordion || accordion !== this.accordion) {\n        return;\n      }\n\n      if (openedId === this.safeId()) {\n        // Open this collapse if not shown\n        if (!this.show) {\n          this.toggle();\n        }\n      } else {\n        // Close this collapse if shown\n        if (this.show) {\n          this.toggle();\n        }\n      }\n    },\n    handleResize: function handleResize() {\n      // Handler for orientation/resize to set collapsed state in nav/navbar\n      this.show = getCS(this.$el).display === 'block';\n    }\n  },\n  render: function render(h) {\n    var _this2 = this;\n\n    var scope = {\n      visible: this.show,\n      close: function close() {\n        return _this2.show = false;\n      }\n    };\n    var content = h(this.tag, {\n      class: this.classObject,\n      directives: [{\n        name: 'show',\n        value: this.show\n      }],\n      attrs: {\n        id: this.safeId()\n      },\n      on: {\n        click: this.clickHandler\n      }\n    }, [this.normalizeSlot('default', scope)]);\n    return h(BVCollapse, {\n      props: {\n        appear: this.appear\n      },\n      on: {\n        enter: this.onEnter,\n        afterEnter: this.onAfterEnter,\n        leave: this.onLeave,\n        afterLeave: this.onAfterLeave\n      }\n    }, [content]);\n  }\n});","import { BCollapse } from './collapse';\nimport { VBToggle } from '../../directives/toggle/toggle';\nimport { pluginFactory } from '../../utils/plugins';\nvar CollapsePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BCollapse: BCollapse\n  },\n  directives: {\n    VBToggle: VBToggle\n  }\n});\nexport { CollapsePlugin, BCollapse };","import Vue from '../../utils/vue';\nimport { arrayIncludes } from '../../utils/array';\nimport { stripTags } from '../../utils/html';\nimport { getComponentConfig } from '../../utils/config';\nimport idMixin from '../../mixins/id';\nimport dropdownMixin from '../../mixins/dropdown';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BButton } from '../button/button';\nvar NAME = 'BDropdown';\nexport var props = {\n  text: {\n    // Button label\n    type: String,\n    default: ''\n  },\n  html: {\n    // Button label\n    type: String\n  },\n  size: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'size');\n    }\n  },\n  variant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'variant');\n    }\n  },\n  block: {\n    type: Boolean,\n    default: false\n  },\n  menuClass: {\n    type: [String, Array, Object],\n    default: null\n  },\n  toggleTag: {\n    type: String,\n    default: 'button'\n  },\n  toggleText: {\n    // This really should be toggleLabel\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'toggleText');\n    }\n  },\n  toggleClass: {\n    type: [String, Array, Object],\n    default: null\n  },\n  noCaret: {\n    type: Boolean,\n    default: false\n  },\n  split: {\n    type: Boolean,\n    default: false\n  },\n  splitHref: {\n    type: String // default: undefined\n\n  },\n  splitTo: {\n    type: [String, Object] // default: undefined\n\n  },\n  splitVariant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'splitVariant');\n    }\n  },\n  splitClass: {\n    type: [String, Array, Object],\n    default: null\n  },\n  splitButtonType: {\n    type: String,\n    default: 'button',\n    validator: function validator(value) {\n      return arrayIncludes(['button', 'submit', 'reset'], value);\n    }\n  },\n  lazy: {\n    // If true, only render menu contents when open\n    type: Boolean,\n    default: false\n  },\n  role: {\n    type: String,\n    default: 'menu'\n  }\n}; // @vue/component\n\nexport var BDropdown = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n  props: props,\n  computed: {\n    dropdownClasses: function dropdownClasses() {\n      return [this.directionClass, {\n        show: this.visible,\n        // The 'btn-group' class is required in `split` mode for button alignment\n        // It needs also to be applied when `block` is disabled to allow multiple\n        // dropdowns to be aligned one line\n        'btn-group': this.split || !this.block,\n        // When `block` is enabled and we are in `split` mode the 'd-flex' class\n        // needs to be applied to allow the buttons to stretch to full width\n        'd-flex': this.block && this.split,\n        // Position `static` is needed to allow menu to \"breakout\" of the `scrollParent`\n        // boundaries when boundary is anything other than `scrollParent`\n        // See: https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n        'position-static': this.boundary !== 'scrollParent' || !this.boundary\n      }];\n    },\n    menuClasses: function menuClasses() {\n      return [this.menuClass, {\n        'dropdown-menu-right': this.right,\n        show: this.visible\n      }];\n    },\n    toggleClasses: function toggleClasses() {\n      return [this.toggleClass, {\n        'dropdown-toggle-split': this.split,\n        'dropdown-toggle-no-caret': this.noCaret && !this.split\n      }];\n    }\n  },\n  render: function render(h) {\n    var split = h();\n    var buttonContent = this.normalizeSlot('button-content') || this.html || stripTags(this.text);\n\n    if (this.split) {\n      var btnProps = {\n        variant: this.splitVariant || this.variant,\n        size: this.size,\n        block: this.block,\n        disabled: this.disabled\n      }; // We add these as needed due to router-link issues with defined property with undefined/null values\n\n      if (this.splitTo) {\n        btnProps.to = this.splitTo;\n      } else if (this.splitHref) {\n        btnProps.href = this.splitHref;\n      } else if (this.splitButtonType) {\n        btnProps.type = this.splitButtonType;\n      }\n\n      split = h(BButton, {\n        ref: 'button',\n        props: btnProps,\n        class: this.splitClass,\n        attrs: {\n          id: this.safeId('_BV_button_')\n        },\n        on: {\n          click: this.onSplitClick\n        }\n      }, [buttonContent]);\n    }\n\n    var toggle = h(BButton, {\n      ref: 'toggle',\n      staticClass: 'dropdown-toggle',\n      class: this.toggleClasses,\n      props: {\n        tag: this.toggleTag,\n        variant: this.variant,\n        size: this.size,\n        block: this.block && !this.split,\n        disabled: this.disabled\n      },\n      attrs: {\n        id: this.safeId('_BV_toggle_'),\n        'aria-haspopup': 'true',\n        'aria-expanded': this.visible ? 'true' : 'false'\n      },\n      on: {\n        mousedown: this.onMousedown,\n        click: this.toggle,\n        keydown: this.toggle // Handle ENTER, SPACE and DOWN\n\n      }\n    }, [this.split ? h('span', {\n      class: ['sr-only']\n    }, [this.toggleText]) : buttonContent]);\n    var menu = h('ul', {\n      ref: 'menu',\n      staticClass: 'dropdown-menu',\n      class: this.menuClasses,\n      attrs: {\n        role: this.role,\n        tabindex: '-1',\n        'aria-labelledby': this.safeId(this.split ? '_BV_button_' : '_BV_toggle_')\n      },\n      on: {\n        keydown: this.onKeydown // Handle UP, DOWN and ESC\n\n      }\n    }, !this.lazy || this.visible ? this.normalizeSlot('default', {\n      hide: this.hide\n    }) : [h()]);\n    return h('div', {\n      staticClass: 'dropdown b-dropdown',\n      class: this.dropdownClasses,\n      attrs: {\n        id: this.safeId()\n      }\n    }, [split, toggle, menu]);\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 '../../utils/vue';\nimport { requestAF } from '../../utils/dom';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BLink, propsFactory as linkPropsFactory } from '../link/link';\nexport var props = linkPropsFactory(); // @vue/component\n\nexport var BDropdownItem = /*#__PURE__*/Vue.extend({\n  name: 'BDropdownItem',\n  mixins: [normalizeSlotMixin],\n  inheritAttrs: false,\n  inject: {\n    bvDropdown: {\n      default: null\n    }\n  },\n  props: _objectSpread({}, props, {\n    linkClass: {\n      type: [String, Array, Object],\n      default: null\n    },\n    variant: {\n      type: String,\n      default: null\n    }\n  }),\n  methods: {\n    closeDropdown: function closeDropdown() {\n      var _this = this;\n\n      // Close on next animation frame to allow <b-link> time to process\n      requestAF(function () {\n        if (_this.bvDropdown) {\n          _this.bvDropdown.hide(true);\n        }\n      });\n    },\n    onClick: function onClick(evt) {\n      this.$emit('click', evt);\n      this.closeDropdown();\n    }\n  },\n  render: function render(h) {\n    return h('li', {\n      attrs: {\n        role: 'presentation'\n      }\n    }, [h(BLink, {\n      props: this.$props,\n      staticClass: 'dropdown-item',\n      class: [this.linkClass, _defineProperty({}, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled))],\n      attrs: _objectSpread({}, this.$attrs, {\n        role: 'menuitem'\n      }),\n      on: {\n        click: this.onClick\n      },\n      ref: 'item'\n    }, this.normalizeSlot('default'))]);\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 '../../utils/vue';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nexport var props = {\n  active: {\n    type: Boolean,\n    default: false\n  },\n  activeClass: {\n    type: String,\n    default: 'active'\n  },\n  buttonClass: {\n    type: [String, Array, Object],\n    default: null\n  },\n  disabled: {\n    type: Boolean,\n    default: false\n  },\n  variant: {\n    type: String,\n    default: null\n  }\n}; // @vue/component\n\nexport var BDropdownItemButton = /*#__PURE__*/Vue.extend({\n  name: 'BDropdownItemButton',\n  mixins: [normalizeSlotMixin],\n  inheritAttrs: false,\n  inject: {\n    bvDropdown: {\n      default: null\n    }\n  },\n  props: props,\n  methods: {\n    closeDropdown: function closeDropdown() {\n      if (this.bvDropdown) {\n        this.bvDropdown.hide(true);\n      }\n    },\n    onClick: function onClick(evt) {\n      this.$emit('click', evt);\n      this.closeDropdown();\n    }\n  },\n  render: function render(h) {\n    var _ref;\n\n    return h('li', {\n      attrs: {\n        role: 'presentation'\n      }\n    }, [h('button', {\n      staticClass: 'dropdown-item',\n      class: [this.buttonClass, (_ref = {}, _defineProperty(_ref, this.activeClass, this.active), _defineProperty(_ref, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled)), _ref)],\n      attrs: _objectSpread({}, this.$attrs, {\n        role: 'menuitem',\n        type: 'button',\n        disabled: this.disabled\n      }),\n      on: {\n        click: this.onClick\n      },\n      ref: 'button'\n    }, this.normalizeSlot('default'))]);\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 '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  id: {\n    type: String,\n    default: null\n  },\n  tag: {\n    type: String,\n    default: 'header'\n  },\n  variant: {\n    type: String,\n    default: null\n  }\n}; // @vue/component\n\nexport var BDropdownHeader = /*#__PURE__*/Vue.extend({\n  name: 'BDropdownHeader',\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 $attrs = data.attrs || {};\n    data.attrs = {};\n    return h('li', mergeData(data, {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(props.tag, {\n      staticClass: 'dropdown-header',\n      class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n      attrs: _objectSpread({}, $attrs, {\n        id: props.id || null,\n        role: 'heading'\n      }),\n      ref: 'header'\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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  tag: {\n    type: String,\n    default: 'hr'\n  }\n}; // @vue/component\n\nexport var BDropdownDivider = /*#__PURE__*/Vue.extend({\n  name: 'BDropdownDivider',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data;\n    var $attrs = data.attrs || {};\n    data.attrs = {};\n    return h('li', mergeData(data, {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(props.tag, {\n      staticClass: 'dropdown-divider',\n      attrs: _objectSpread({}, $attrs, {\n        role: 'separator',\n        'aria-orientation': 'horizontal'\n      }),\n      ref: 'divider'\n    })]);\n  }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  id: {\n    type: String,\n    default: null\n  },\n  inline: {\n    type: Boolean,\n    default: false\n  },\n  novalidate: {\n    type: Boolean,\n    default: false\n  },\n  validated: {\n    type: Boolean,\n    default: false\n  }\n}; // @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n  name: 'BForm',\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('form', mergeData(data, {\n      class: {\n        'form-inline': props.inline,\n        'was-validated': props.validated\n      },\n      attrs: {\n        id: props.id,\n        novalidate: props.novalidate\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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { BForm, props as formProps } from '../form/form'; // @vue/component\n\nexport var BDropdownForm = /*#__PURE__*/Vue.extend({\n  name: 'BDropdownForm',\n  functional: true,\n  props: _objectSpread({}, formProps, {\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    formClass: {\n      type: [String, Object, Array],\n      default: null\n    }\n  }),\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var $attrs = data.attrs || {};\n    var $listeners = data.on || {};\n    data.attrs = {};\n    data.on = {};\n    return h('li', mergeData(data, {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(BForm, {\n      ref: 'form',\n      staticClass: 'b-dropdown-form',\n      class: [props.formClass, {\n        disabled: props.disabled\n      }],\n      props: props,\n      attrs: _objectSpread({}, $attrs, {\n        disabled: props.disabled,\n        // Tab index of -1 for keyboard navigation\n        tabindex: props.disabled ? null : '-1'\n      }),\n      on: $listeners\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 from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge'; // @vue/component\n\nexport var BDropdownText = /*#__PURE__*/Vue.extend({\n  name: 'BDropdownText',\n  functional: true,\n  props: {\n    tag: {\n      type: String,\n      default: 'p'\n    },\n    variant: {\n      type: String,\n      default: null\n    }\n  },\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var $attrs = data.attrs || {};\n    data.attrs = {};\n    return h('li', mergeData(data, {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(props.tag, {\n      staticClass: 'b-dropdown-text',\n      class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n      props: props,\n      attrs: $attrs,\n      ref: 'text'\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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nexport var props = {\n  id: {\n    type: String,\n    default: null\n  },\n  header: {\n    type: String,\n    default: null\n  },\n  headerTag: {\n    type: String,\n    default: 'header'\n  },\n  headerVariant: {\n    type: String,\n    default: null\n  },\n  headerClasses: {\n    type: [String, Array, Object],\n    default: null\n  },\n  ariaDescribedby: {\n    type: String,\n    default: null\n  }\n}; // @vue/component\n\nexport var BDropdownGroup = /*#__PURE__*/Vue.extend({\n  name: 'BDropdownGroup',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var $slots = slots();\n    var $scopedSlots = scopedSlots || {};\n    var $attrs = data.attrs || {};\n    data.attrs = {};\n    var header;\n    var headerId = null;\n\n    if (hasNormalizedSlot('header', $scopedSlots, $slots) || props.header) {\n      headerId = props.id ? \"_bv_\".concat(props.id, \"_group_dd_header\") : null;\n      header = h(props.headerTag, {\n        staticClass: 'dropdown-header',\n        class: [props.headerClasses, _defineProperty({}, \"text-\".concat(props.variant), props.variant)],\n        attrs: {\n          id: headerId,\n          role: 'heading'\n        }\n      }, normalizeSlot('header', {}, $scopedSlots, $slots) || props.header);\n    }\n\n    var adb = [headerId, props.ariaDescribedBy].filter(Boolean).join(' ').trim();\n    return h('li', mergeData(data, {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [header || h(), h('ul', {\n      staticClass: 'list-unstyled',\n      attrs: _objectSpread({}, $attrs, {\n        id: props.id || null,\n        role: 'group',\n        'aria-describedby': adb || null\n      })\n    }, normalizeSlot('default', {}, $scopedSlots, $slots))]);\n  }\n});","import { BDropdown } from './dropdown';\nimport { BDropdownItem } from './dropdown-item';\nimport { BDropdownItemButton } from './dropdown-item-button';\nimport { BDropdownHeader } from './dropdown-header';\nimport { BDropdownDivider } from './dropdown-divider';\nimport { BDropdownForm } from './dropdown-form';\nimport { BDropdownText } from './dropdown-text';\nimport { BDropdownGroup } from './dropdown-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar DropdownPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BDropdown: BDropdown,\n    BDd: BDropdown,\n    BDropdownItem: BDropdownItem,\n    BDdItem: BDropdownItem,\n    BDropdownItemButton: BDropdownItemButton,\n    BDropdownItemBtn: BDropdownItemButton,\n    BDdItemButton: BDropdownItemButton,\n    BDdItemBtn: BDropdownItemButton,\n    BDropdownHeader: BDropdownHeader,\n    BDdHeader: BDropdownHeader,\n    BDropdownDivider: BDropdownDivider,\n    BDdDivider: BDropdownDivider,\n    BDropdownForm: BDropdownForm,\n    BDdForm: BDropdownForm,\n    BDropdownText: BDropdownText,\n    BDdText: BDropdownText,\n    BDropdownGroup: BDropdownGroup,\n    BDdGroup: BDropdownGroup\n  }\n});\nexport { DropdownPlugin, BDropdown, BDropdownItem, BDropdownItemButton, BDropdownHeader, BDropdownDivider, BDropdownForm, BDropdownText, BDropdownGroup };","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 from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { arrayIncludes } from '../../utils/array';\nexport var props = {\n  type: {\n    type: String,\n    default: 'iframe',\n    validator: function validator(str) {\n      return arrayIncludes(['iframe', 'embed', 'video', 'object', 'img', 'b-img', 'b-img-lazy'], str);\n    }\n  },\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  aspect: {\n    type: String,\n    default: '16by9'\n  }\n}; // @vue/component\n\nexport var BEmbed = /*#__PURE__*/Vue.extend({\n  name: 'BEmbed',\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, {\n      ref: data.ref,\n      staticClass: 'embed-responsive',\n      class: _defineProperty({}, \"embed-responsive-\".concat(props.aspect), props.aspect)\n    }, [h(props.type, mergeData(data, {\n      ref: '',\n      staticClass: 'embed-responsive-item'\n    }), children)]);\n  }\n});","import { BEmbed } from './embed';\nimport { pluginFactory } from '../../utils/plugins';\nvar EmbedPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BEmbed: BEmbed\n  }\n});\nexport { EmbedPlugin, BEmbed };","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 '../../utils/vue';\nimport formOptionsMixin from '../../mixins/form-options';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { htmlOrText } from '../../utils/html'; // @vue/component\n\nexport var BFormDatalist = /*#__PURE__*/Vue.extend({\n  name: 'BFormDatalist',\n  mixins: [formOptionsMixin, normalizeSlotMixin],\n  props: {\n    id: {\n      type: String,\n      default: null,\n      required: true\n    }\n  },\n  render: function render(h) {\n    var options = this.formOptions.map(function (option, index) {\n      return h('option', {\n        key: \"option_\".concat(index, \"_opt\"),\n        attrs: {\n          disabled: option.disabled\n        },\n        domProps: _objectSpread({}, htmlOrText(option.html, option.text), {\n          value: option.value\n        })\n      });\n    });\n    return h('datalist', {\n      attrs: {\n        id: this.id\n      }\n    }, [options, this.normalizeSlot('default')]);\n  }\n});","import { BForm } from './form';\nimport { BFormDatalist } from './form-datalist';\nimport { BFormText } from './form-text';\nimport { BFormInvalidFeedback } from './form-invalid-feedback';\nimport { BFormValidFeedback } from './form-valid-feedback';\nimport { BFormRow } from '../layout/form-row';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BForm: BForm,\n    BFormDatalist: BFormDatalist,\n    BDatalist: BFormDatalist,\n    BFormText: BFormText,\n    BFormInvalidFeedback: BFormInvalidFeedback,\n    BFormFeedback: BFormInvalidFeedback,\n    BFormValidFeedback: BFormValidFeedback,\n    // Added here for convenience\n    BFormRow: BFormRow\n  }\n}); // BFormRow is not exported here as a named export, as it is exported by Layout\n\nexport { FormPlugin, BForm, BFormDatalist, BFormText, BFormInvalidFeedback, BFormValidFeedback };","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 '../../utils/vue';\nimport identity from '../../utils/identity';\nimport { from as arrayFrom, isArray, concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { isFile, isFunction, isUndefinedOrNull } from '../../utils/inspect';\nimport { File } from '../../utils/safe-types';\nimport { toString } from '../../utils/string';\nimport { warn } from '../../utils/warn';\nimport formCustomMixin from '../../mixins/form-custom';\nimport formMixin from '../../mixins/form';\nimport formStateMixin from '../../mixins/form-state';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar NAME = 'BFormFile';\nvar VALUE_EMPTY_DEPRECATED_MSG = 'Setting \"value\"/\"v-model\" to an empty string for reset is deprecated. Set to \"null\" instead.'; // --- Helper methods ---\n\nvar isValidValue = function isValidValue(value) {\n  return isFile(value) || isArray(value) && value.every(function (v) {\n    return isValidValue(v);\n  });\n}; // @vue/component\n\n\nexport var BFormFile = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [idMixin, formMixin, formStateMixin, formCustomMixin, normalizeSlotMixin],\n  inheritAttrs: false,\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    size: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig('BFormControl', 'size');\n      }\n    },\n    value: {\n      type: [File, Array],\n      default: null,\n      validator: function validator(value) {\n        /* istanbul ignore next */\n        if (value === '') {\n          warn(VALUE_EMPTY_DEPRECATED_MSG, NAME);\n          return true;\n        }\n\n        return isUndefinedOrNull(value) || isValidValue(value);\n      }\n    },\n    accept: {\n      type: String,\n      default: ''\n    },\n    // Instruct input to capture from camera\n    capture: {\n      type: Boolean,\n      default: false\n    },\n    placeholder: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'placeholder');\n      }\n    },\n    browseText: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'browseText');\n      }\n    },\n    dropPlaceholder: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'dropPlaceholder');\n      }\n    },\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    directory: {\n      type: Boolean,\n      default: false\n    },\n    noTraverse: {\n      type: Boolean,\n      default: false\n    },\n    noDrop: {\n      type: Boolean,\n      default: false\n    },\n    fileNameFormatter: {\n      type: Function,\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      selectedFile: null,\n      dragging: false,\n      hasFocus: false\n    };\n  },\n  computed: {\n    selectLabel: function selectLabel() {\n      // Draging active\n      if (this.dragging && this.dropPlaceholder) {\n        return this.dropPlaceholder;\n      } // No file chosen\n\n\n      if (!this.selectedFile || this.selectedFile.length === 0) {\n        return this.placeholder;\n      } // Convert selectedFile to an array (if not already one)\n\n\n      var files = concat(this.selectedFile).filter(identity);\n\n      if (this.hasNormalizedSlot('file-name')) {\n        // There is a slot for formatting the files/names\n        return [this.normalizeSlot('file-name', {\n          files: files,\n          names: files.map(function (f) {\n            return f.name;\n          })\n        })];\n      } else {\n        // Use the user supplied formatter, or the built in one.\n        return isFunction(this.fileNameFormatter) ? toString(this.fileNameFormatter(files)) : files.map(function (file) {\n          return file.name;\n        }).join(', ');\n      }\n    }\n  },\n  watch: {\n    selectedFile: function selectedFile(newVal, oldVal) {\n      // The following test is needed when the file input is \"reset\" or the\n      // exact same file(s) are selected to prevent an infinite loop.\n      // When in `multiple` mode we need to check for two empty arrays or\n      // two arrays with identical files\n      if (newVal === oldVal || isArray(newVal) && isArray(oldVal) && newVal.length === oldVal.length && newVal.every(function (v, i) {\n        return v === oldVal[i];\n      })) {\n        return;\n      }\n\n      if (!newVal && this.multiple) {\n        this.$emit('input', []);\n      } else {\n        this.$emit('input', newVal);\n      }\n    },\n    value: function value(newVal) {\n      if (!newVal || isArray(newVal) && newVal.length === 0) {\n        this.reset();\n      }\n    }\n  },\n  methods: {\n    focusHandler: function focusHandler(evt) {\n      // Bootstrap v4 doesn't have focus styling for custom file input\n      // Firefox has a '[type=file]:focus ~ sibling' selector issue,\n      // so we add a 'focus' class to get around these bugs\n      if (this.plain || evt.type === 'focusout') {\n        this.hasFocus = false;\n      } else {\n        // Add focus styling for custom file input\n        this.hasFocus = true;\n      }\n    },\n    reset: function reset() {\n      // IE 11 doesn't support setting `$input.value` to `''` or `null`\n      // So we use this little extra hack to reset the value, just in case\n      // This also appears to work on modern browsers as well\n      // Wrapped in try in case IE 11 or mobile Safari crap out\n      try {\n        var $input = this.$refs.input;\n        $input.value = '';\n        $input.type = '';\n        $input.type = 'file';\n      } catch (e) {}\n\n      this.selectedFile = this.multiple ? [] : null;\n    },\n    onFileChange: function onFileChange(evt) {\n      var _this = this;\n\n      // Always emit original event\n      this.$emit('change', evt); // Check if special `items` prop is available on event (drop mode)\n      // Can be disabled by setting no-traverse\n\n      var items = evt.dataTransfer && evt.dataTransfer.items;\n      /* istanbul ignore next: not supported in JSDOM */\n\n      if (items && !this.noTraverse) {\n        var queue = [];\n\n        for (var i = 0; i < items.length; i++) {\n          var item = items[i].webkitGetAsEntry();\n\n          if (item) {\n            queue.push(this.traverseFileTree(item));\n          }\n        }\n\n        Promise.all(queue).then(function (filesArr) {\n          _this.setFiles(arrayFrom(filesArr));\n        });\n        return;\n      } // Normal handling\n\n\n      this.setFiles(evt.target.files || evt.dataTransfer.files);\n    },\n    setFiles: function setFiles() {\n      var files = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n      if (!files) {\n        /* istanbul ignore next: this will probably not happen */\n        this.selectedFile = null;\n      } else if (this.multiple) {\n        // Convert files to array\n        var filesArray = [];\n\n        for (var i = 0; i < files.length; i++) {\n          filesArray.push(files[i]);\n        } // Return file(s) as array\n\n\n        this.selectedFile = filesArray;\n      } else {\n        // Return single file object\n        this.selectedFile = files[0] || null;\n      }\n    },\n    onReset: function onReset() {\n      // Triggered when the parent form (if any) is reset\n      this.selectedFile = this.multiple ? [] : null;\n    },\n    onDragover: function onDragover(evt)\n    /* istanbul ignore next: difficult to test in JSDOM */\n    {\n      evt.preventDefault();\n      evt.stopPropagation();\n\n      if (this.noDrop || !this.custom) {\n        return;\n      }\n\n      this.dragging = true;\n      evt.dataTransfer.dropEffect = 'copy';\n    },\n    onDragleave: function onDragleave(evt)\n    /* istanbul ignore next: difficult to test in JSDOM */\n    {\n      evt.preventDefault();\n      evt.stopPropagation();\n      this.dragging = false;\n    },\n    onDrop: function onDrop(evt)\n    /* istanbul ignore next: difficult to test in JSDOM */\n    {\n      evt.preventDefault();\n      evt.stopPropagation();\n\n      if (this.noDrop) {\n        return;\n      }\n\n      this.dragging = false;\n\n      if (evt.dataTransfer.files && evt.dataTransfer.files.length > 0) {\n        this.onFileChange(evt);\n      }\n    },\n    traverseFileTree: function traverseFileTree(item, path)\n    /* istanbul ignore next: not supported in JSDOM */\n    {\n      var _this2 = this;\n\n      // Based on https://stackoverflow.com/questions/3590058\n      return new Promise(function (resolve) {\n        path = path || '';\n\n        if (item.isFile) {\n          // Get file\n          item.file(function (file) {\n            file.$path = path; // Inject $path to file obj\n\n            resolve(file);\n          });\n        } else if (item.isDirectory) {\n          // Get folder contents\n          item.createReader().readEntries(function (entries) {\n            var queue = [];\n\n            for (var i = 0; i < entries.length; i++) {\n              queue.push(_this2.traverseFileTree(entries[i], path + item.name + '/'));\n            }\n\n            Promise.all(queue).then(function (filesArr) {\n              resolve(arrayFrom(filesArr));\n            });\n          });\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    // Form Input\n    var input = h('input', {\n      ref: 'input',\n      class: [{\n        'form-control-file': this.plain,\n        'custom-file-input': this.custom,\n        focus: this.custom && this.hasFocus\n      }, this.stateClass],\n      attrs: _objectSpread({}, this.$attrs, {\n        type: 'file',\n        id: this.safeId(),\n        name: this.name,\n        disabled: this.disabled,\n        required: this.required,\n        form: this.form || null,\n        capture: this.capture || null,\n        accept: this.accept || null,\n        multiple: this.multiple,\n        webkitdirectory: this.directory,\n        'aria-required': this.required ? 'true' : null\n      }),\n      on: {\n        change: this.onFileChange,\n        focusin: this.focusHandler,\n        focusout: this.focusHandler,\n        reset: this.onReset\n      }\n    });\n\n    if (this.plain) {\n      return input;\n    } // Overlay Labels\n\n\n    var label = h('label', {\n      staticClass: 'custom-file-label',\n      class: [this.dragging ? 'dragging' : null],\n      attrs: {\n        for: this.safeId(),\n        'data-browse': this.browseText || null\n      }\n    }, this.selectLabel); // Return rendered custom file input\n\n    return h('div', {\n      staticClass: 'custom-file b-form-file',\n      class: [this.stateClass, _defineProperty({}, \"b-custom-control-\".concat(this.size), this.size)],\n      attrs: {\n        id: this.safeId('_BV_file_outer_')\n      },\n      on: {\n        dragover: this.onDragover,\n        dragleave: this.onDragleave,\n        drop: this.onDrop\n      }\n    }, [input, label]);\n  }\n});","import { BFormFile } from './form-file';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormFilePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormFile: BFormFile,\n    BFile: BFormFile\n  }\n});\nexport { FormFilePlugin, BFormFile };","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 '../../utils/vue';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { eventOnOff } from '../../utils/events';\nimport { isFunction, isNull } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { toFloat, toInteger } from '../../utils/number';\nimport { toString } from '../../utils/string';\nimport identity from '../../utils/identity';\nimport KeyCodes from '../../utils/key-codes';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BIconPlus, BIconDash } from '../../icons/icons'; // --- Constants ---\n\nvar NAME = 'BFormSpinbutton';\nvar UP = KeyCodes.UP,\n    DOWN = KeyCodes.DOWN,\n    HOME = KeyCodes.HOME,\n    END = KeyCodes.END,\n    PAGEUP = KeyCodes.PAGEUP,\n    PAGEDOWN = KeyCodes.PAGEDOWN; // Default for spin button range and step\n\nvar DEFAULT_MIN = 1;\nvar DEFAULT_MAX = 100;\nvar DEFAULT_STEP = 1; // Delay before auto-repeat in ms\n\nvar DEFAULT_REPEAT_DELAY = 500; // Repeat interval in ms\n\nvar DEFAULT_REPEAT_INTERVAL = 100; // Repeat rate increased after number of repeats\n\nvar DEFAULT_REPEAT_THRESHOLD = 10; // Repeat speed multiplier (step multiplier, must be an integer)\n\nvar DEFAULT_REPEAT_MULTIPLIER = 4; // --- Helper functions ---\n\nvar defaultNumber = function defaultNumber(value) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  value = toFloat(value);\n  return isNaN(value) ? defaultValue : value;\n};\n\nvar defaultInteger = function defaultInteger(value) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  value = toInteger(value);\n  return isNaN(value) ? Math.abs(defaultValue) : value;\n}; // --- BFormSpinbutton ---\n// @vue/component\n\n\nexport var BFormSpinbutton = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [idMixin, normalizeSlotMixin],\n  inheritAttrs: false,\n  props: {\n    value: {\n      // Should this really be String, to match native number inputs?\n      type: Number,\n      default: null\n    },\n    min: {\n      type: [Number, String],\n      default: DEFAULT_MIN\n    },\n    max: {\n      type: [Number, String],\n      default: DEFAULT_MAX\n    },\n    step: {\n      type: [Number, String],\n      default: DEFAULT_STEP\n    },\n    wrap: {\n      type: Boolean,\n      default: false\n    },\n    formatterFn: {\n      type: Function // default: null\n\n    },\n    size: {\n      type: String // default: null\n\n    },\n    placeholder: {\n      type: String,\n      default: null\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    readonly: {\n      type: Boolean,\n      default: false\n    },\n    required: {\n      // Only affects the `aria-invalid` attribute\n      type: Boolean,\n      default: false\n    },\n    name: {\n      type: String // default: null\n\n    },\n    form: {\n      type: String // default: null\n\n    },\n    state: {\n      // Tri-state prop: `true`, `false`, or `null`\n      type: Boolean,\n      default: null\n    },\n    inline: {\n      type: Boolean,\n      default: false\n    },\n    vertical: {\n      type: Boolean,\n      default: false\n    },\n    ariaLabel: {\n      type: String,\n      default: null\n    },\n    ariaControls: {\n      type: String,\n      default: null\n    },\n    labelDecrement: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelDecrement');\n      }\n    },\n    labelIncrement: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelIncrement');\n      }\n    },\n    locale: {\n      type: [String, Array],\n      default: null\n    },\n    repeatDelay: {\n      type: [Number, String],\n      default: DEFAULT_REPEAT_DELAY\n    },\n    repeatInterval: {\n      type: [Number, String],\n      default: DEFAULT_REPEAT_INTERVAL\n    },\n    repeatThreshold: {\n      type: [Number, String],\n      default: DEFAULT_REPEAT_THRESHOLD\n    },\n    repeatStepMultiplier: {\n      type: [Number, String],\n      default: DEFAULT_REPEAT_MULTIPLIER\n    }\n  },\n  data: function data() {\n    return {\n      localValue: defaultNumber(this.value),\n      hasFocus: false\n    };\n  },\n  computed: {\n    computedStep: function computedStep() {\n      return defaultNumber(this.step, DEFAULT_STEP);\n    },\n    computedMin: function computedMin() {\n      return defaultNumber(this.min, DEFAULT_MIN);\n    },\n    computedMax: function computedMax() {\n      // We round down to the nearest maximum step value\n      var max = defaultNumber(this.max, DEFAULT_MAX);\n      var step = this.computedStep;\n      var min = this.computedMin;\n      return Math.floor((max - min) / step) * step + min;\n    },\n    computedDelay: function computedDelay() {\n      return defaultInteger(this.repeatDelay, DEFAULT_REPEAT_DELAY) || DEFAULT_REPEAT_DELAY;\n    },\n    computedInterval: function computedInterval() {\n      return defaultInteger(this.repeatInterval, DEFAULT_REPEAT_INTERVAL) || DEFAULT_REPEAT_INTERVAL;\n    },\n    computedThreshold: function computedThreshold() {\n      return defaultInteger(this.repeatThreshold, DEFAULT_REPEAT_THRESHOLD) || 1;\n    },\n    computedStepMultiplier: function computedStepMultiplier() {\n      return defaultInteger(this.repeatStepMultiplier, DEFAULT_REPEAT_MULTIPLIER) || 1;\n    },\n    computedPrecision: function computedPrecision() {\n      // Quick and dirty way to get the number of decimals\n      var step = this.computedStep;\n      return Math.floor(step) === step ? 0 : (step.toString().split('.')[1] || '').length;\n    },\n    computedMultiplier: function computedMultiplier() {\n      return Math.pow(10, this.computedPrecision || 0);\n    },\n    valueAsFixed: function valueAsFixed() {\n      var value = this.localValue;\n      return isNull(value) ? '' : value.toFixed(this.computedPrecision);\n    },\n    computedLocale: function computedLocale() {\n      var locales = concat(this.locale).filter(identity);\n      var nf = new Intl.NumberFormat(locales);\n      return nf.resolvedOptions().locale;\n    },\n    computedRTL: function computedRTL() {\n      return isLocaleRTL(this.computedLocale);\n    },\n    defaultFormatter: function defaultFormatter() {\n      // Returns and `Intl.NumberFormat` formatter method reference\n      var precision = this.computedPrecision;\n      var nf = new Intl.NumberFormat(this.computedLocale, {\n        style: 'decimal',\n        useGrouping: false,\n        minimumIntegerDigits: 1,\n        minimumFractionDigits: precision,\n        maximumFractionDigits: precision,\n        notation: 'standard'\n      }); // Return the format method reference\n\n      return nf.format;\n    }\n  },\n  watch: {\n    value: function value(_value) {\n      _value = toFloat(_value); // Will be `NaN` if `value` is `null`\n\n      this.localValue = isNaN(_value) ? null : _value;\n    },\n    localValue: function localValue(value) {\n      this.$emit('input', value);\n    },\n    disabled: function disabled(_disabled) {\n      if (_disabled) {\n        this.clearRepeat();\n      }\n    },\n    readonly: function readonly(_readonly) {\n      if (_readonly) {\n        this.clearRepeat();\n      }\n    }\n  },\n  created: function created() {\n    // Create non reactive properties\n    this.$_autoDelayTimer = null;\n    this.$_autoRepeatTimer = null;\n    this.$_keyIsDown = false;\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearRepeat();\n  },\n  deactivated: function deactivated()\n  /* istanbul ignore next */\n  {\n    this.clearRepeat();\n  },\n  methods: {\n    // --- Public methods ---\n    focus: function focus() {\n      if (!this.disabled) {\n        try {\n          this.$refs.spinner.focus();\n        } catch (_unused) {}\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        try {\n          this.$refs.spinner.blur();\n        } catch (_unused2) {}\n      }\n    },\n    // --- Private methods ---\n    emitChange: function emitChange() {\n      this.$emit('change', this.localValue);\n    },\n    stepValue: function stepValue(direction) {\n      // Sets a new incremented or decremented value, supporting optional wrapping\n      // Direction is either +1 or -1 (or a multiple thereof)\n      var value = this.localValue;\n\n      if (!this.disabled && !isNull(value)) {\n        var step = this.computedStep * direction;\n        var min = this.computedMin;\n        var max = this.computedMax;\n        var multiplier = this.computedMultiplier;\n        var wrap = this.wrap; // We ensure that the value steps like a native input\n\n        value = Math.round((value - min) / step) * step + min + step; // We ensure that precision is maintained (decimals)\n\n        value = Math.round(value * multiplier) / multiplier; // Handle if wrapping is enabled\n\n        this.localValue = value > max ? wrap ? min : max : value < min ? wrap ? max : min : value;\n      }\n    },\n    onFocusBlur: function onFocusBlur(evt) {\n      if (!this.disabled) {\n        this.hasFocus = evt.type === 'focus';\n      } else {\n        this.hasFocus = false;\n      }\n    },\n    stepUp: function stepUp() {\n      var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n      var value = this.localValue;\n\n      if (isNull(value)) {\n        this.localValue = this.computedMin;\n      } else {\n        this.stepValue(+1 * multiplier);\n      }\n    },\n    stepDown: function stepDown() {\n      var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n      var value = this.localValue;\n\n      if (isNull(value)) {\n        this.localValue = this.wrap ? this.computedMax : this.computedMin;\n      } else {\n        this.stepValue(-1 * multiplier);\n      }\n    },\n    onKeydown: function onKeydown(evt) {\n      var keyCode = evt.keyCode,\n          altKey = evt.altKey,\n          ctrlKey = evt.ctrlKey,\n          metaKey = evt.metaKey;\n      /* istanbul ignore if */\n\n      if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n        return;\n      }\n\n      if (arrayIncludes([UP, DOWN, HOME, END, PAGEUP, PAGEDOWN], keyCode)) {\n        // https://w3c.github.io/aria-practices/#spinbutton\n        evt.preventDefault();\n        /* istanbul ignore if */\n\n        if (this.$_keyIsDown) {\n          // Keypress is already in progress\n          return;\n        }\n\n        this.resetTimers();\n\n        if (arrayIncludes([UP, DOWN], keyCode)) {\n          // The following use the custom auto-repeat handling\n          this.$_keyIsDown = true;\n\n          if (keyCode === UP) {\n            this.handleStepRepeat(evt, this.stepUp);\n          } else if (keyCode === DOWN) {\n            this.handleStepRepeat(evt, this.stepDown);\n          }\n        } else {\n          // These use native OS key repeating\n          if (keyCode === PAGEUP) {\n            this.stepUp(this.computedStepMultiplier);\n          } else if (keyCode === PAGEDOWN) {\n            this.stepDown(this.computedStepMultiplier);\n          } else if (keyCode === HOME) {\n            this.localValue = this.computedMin;\n          } else if (keyCode === END) {\n            this.localValue = this.computedMax;\n          }\n        }\n      }\n    },\n    onKeyup: function onKeyup(evt) {\n      // Emit a change event when the keyup happens\n      var keyCode = evt.keyCode,\n          altKey = evt.altKey,\n          ctrlKey = evt.ctrlKey,\n          metaKey = evt.metaKey;\n      /* istanbul ignore if */\n\n      if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n        return;\n      }\n\n      if (arrayIncludes([UP, DOWN, HOME, END, PAGEUP, PAGEDOWN], keyCode)) {\n        this.resetTimers();\n        this.$_keyIsDown = false;\n        evt.preventDefault();\n        this.emitChange();\n      }\n    },\n    handleStepRepeat: function handleStepRepeat(evt, stepper) {\n      var _this = this;\n\n      var _ref = evt || {},\n          type = _ref.type,\n          button = _ref.button;\n\n      if (!this.disabled && !this.readonly) {\n        /* istanbul ignore if */\n        if (type === 'mousedown' && button) {\n          // We only respond to left (main === 0) button clicks\n          return;\n        }\n\n        this.resetTimers(); // Step the counter initially\n\n        stepper(1);\n        var threshold = this.computedThreshold;\n        var multiplier = this.computedStepMultiplier;\n        var delay = this.computedDelay;\n        var interval = this.computedInterval; // Initiate the delay/repeat interval\n\n        this.$_autoDelayTimer = setTimeout(function () {\n          var count = 0;\n          _this.$_autoRepeatTimer = setInterval(function () {\n            // After N initial repeats, we increase the incrementing step amount\n            // We do this to minimize screen reader announcements of the value\n            // (values are announced every change, which can be chatty for SR users)\n            // And to make it easer to select a value when the range is large\n            stepper(count < threshold ? 1 : multiplier);\n            count++;\n          }, interval);\n        }, delay);\n      }\n    },\n    onMouseup: function onMouseup(evt) {\n      // `<body>` listener, only enabled when mousedown starts\n      var _ref2 = evt || {},\n          type = _ref2.type,\n          button = _ref2.button;\n      /* istanbul ignore if */\n\n\n      if (type === 'mouseup' && button) {\n        // Ignore non left button (main === 0) mouse button click\n        return;\n      }\n\n      evt.preventDefault();\n      this.resetTimers();\n      this.setMouseup(false); // Trigger the change event\n\n      this.emitChange();\n    },\n    setMouseup: function setMouseup(on) {\n      // Enable or disabled the body mouseup/touchend handlers\n      // Use try/catch to handle case when called server side\n      try {\n        eventOnOff(on, document.body, 'mouseup', this.onMouseup, false);\n        eventOnOff(on, document.body, 'touchend', this.onMouseup, false);\n      } catch (_unused3) {}\n    },\n    resetTimers: function resetTimers() {\n      clearTimeout(this.$_autoDelayTimer);\n      clearInterval(this.$_autoRepeatTimer);\n    },\n    clearRepeat: function clearRepeat() {\n      this.resetTimers();\n      this.setMouseup(false);\n      this.$_keyIsDown = false;\n    }\n  },\n  render: function render(h) {\n    var _this2 = this,\n        _class;\n\n    var spinId = this.safeId();\n    var value = this.localValue;\n    var isVertical = this.vertical;\n    var isInline = this.inline && !isVertical;\n    var isDisabled = this.disabled;\n    var isReadonly = this.readonly && !isDisabled;\n    var isRequired = this.required && !isReadonly && !isDisabled;\n    var state = this.state;\n    var size = this.size;\n    var hasValue = !isNull(value);\n    var formatter = isFunction(this.formatterFn) ? this.formatterFn : this.defaultFormatter;\n\n    var makeButton = function makeButton(stepper, label, IconCmp, keyRef, shortcut, btnDisabled, slotName) {\n      var $icon = h(IconCmp, {\n        props: {\n          scale: _this2.hasFocus ? 1.5 : 1.25\n        },\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      });\n      var scope = {\n        hasFocus: _this2.hasFocus\n      };\n\n      var handler = function handler(evt) {\n        if (!isDisabled && !isReadonly) {\n          evt.preventDefault();\n\n          _this2.setMouseup(true);\n\n          try {\n            // Since we `preventDefault()`, we must manually focus the button\n            evt.currentTarget.focus();\n          } catch (_unused4) {}\n\n          _this2.handleStepRepeat(evt, stepper);\n        }\n      };\n\n      return h('button', {\n        key: keyRef || null,\n        ref: keyRef,\n        staticClass: 'btn btn-sm border-0 rounded-0',\n        class: {\n          'py-0': !isVertical\n        },\n        attrs: {\n          tabindex: '-1',\n          type: 'button',\n          disabled: isDisabled || isReadonly || btnDisabled,\n          'aria-disabled': isDisabled || isReadonly || btnDisabled ? 'true' : null,\n          'aria-controls': spinId,\n          'aria-label': label || null,\n          'aria-keyshortcuts': shortcut || null\n        },\n        on: {\n          mousedown: handler,\n          touchstart: handler\n        }\n      }, [h('div', {}, [_this2.normalizeSlot(slotName, scope) || $icon])]);\n    }; // TODO: Add button disabled state when `wrap` is `false` and at value max/min\n\n\n    var $increment = makeButton(this.stepUp, this.labelIncrement, BIconPlus, 'inc', 'ArrowUp', false, 'increment');\n    var $decrement = makeButton(this.stepDown, this.labelDecrement, BIconDash, 'dec', 'ArrowDown', false, 'decrement');\n    var $hidden = h();\n\n    if (this.name && !isDisabled) {\n      $hidden = h('input', {\n        key: 'hidden',\n        attrs: {\n          type: 'hidden',\n          name: this.name,\n          form: this.form || null,\n          // TODO: Should this be set to '' if value is out of range?\n          value: this.valueAsFixed\n        }\n      });\n    }\n\n    var $spin = h( // We use 'output' element to make this accept a `<label for=\"id\">` (Except IE)\n    'output', {\n      ref: 'spinner',\n      key: 'output',\n      staticClass: 'flex-grow-1',\n      class: {\n        'w-100': !isVertical && !isInline,\n        'd-flex': isVertical,\n        'align-self-center': !isVertical,\n        'align-items-center': isVertical,\n        'py-1': isVertical,\n        'px-1': !isVertical,\n        'mx-1': isVertical,\n        'border-top': isVertical,\n        'border-bottom': isVertical,\n        'border-left': !isVertical,\n        'border-right': !isVertical\n      },\n      attrs: _objectSpread({\n        dir: this.computedRTL ? 'rtl' : 'ltr'\n      }, this.$attrs, {\n        id: spinId,\n        role: 'spinbutton',\n        tabindex: isDisabled ? null : '0',\n        'aria-live': 'off',\n        'aria-label': this.ariaLabel || null,\n        'aria-controls': this.ariaControls || null,\n        // TODO: May want to check if the value is in range\n        'aria-invalid': state === false || !hasValue && isRequired ? 'true' : null,\n        'aria-required': isRequired ? 'true' : null,\n        // These attrs are required for role spinbutton\n        'aria-valuemin': toString(this.computedMin),\n        'aria-valuemax': toString(this.computedMax),\n        // These should be `null` if the value is out of range\n        // They must also be non-existent attrs if the value is out of range or `null`\n        'aria-valuenow': hasValue ? value : null,\n        'aria-valuetext': hasValue ? formatter(value) : null\n      })\n    }, [h('bdi', {\n      staticClass: 'w-100'\n    }, hasValue ? formatter(value) : this.placeholder || '')]);\n    return h('div', {\n      staticClass: 'b-form-spinbutton form-control p-0',\n      class: (_class = {\n        disabled: isDisabled,\n        readonly: isReadonly,\n        focus: this.hasFocus\n      }, _defineProperty(_class, \"form-control-\".concat(size), !!size), _defineProperty(_class, 'd-inline-flex', isInline || isVertical), _defineProperty(_class, 'd-flex', !isInline && !isVertical), _defineProperty(_class, 'align-items-stretch', !isVertical), _defineProperty(_class, 'flex-column', isVertical), _defineProperty(_class, 'is-valid', state === true), _defineProperty(_class, 'is-invalid', state === false), _class),\n      attrs: {\n        role: 'group',\n        lang: this.computedLocale,\n        tabindex: isDisabled ? null : '-1',\n        title: this.ariaLabel\n      },\n      on: {\n        keydown: this.onKeydown,\n        keyup: this.onKeyup,\n        // We use capture phase (`!` prefix) since focus and blur do not bubble\n        '!focus': this.onFocusBlur,\n        '!blur': this.onFocusBlur\n      }\n    }, isVertical ? [$increment, $hidden, $spin, $decrement] : [$decrement, $hidden, $spin, $increment]);\n  }\n});","import { BFormSpinbutton } from './form-spinbutton';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormSpinbuttonPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormSpinbutton: BFormSpinbutton,\n    BSpinbutton: BFormSpinbutton\n  }\n});\nexport { FormSpinbuttonPlugin, BFormSpinbutton };","import Vue from '../../utils/vue';\nimport KeyCodes from '../../utils/key-codes';\nimport { getComponentConfig } from '../../utils/config';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BBadge } from '../badge/badge';\nimport { BButtonClose } from '../button/button-close';\nvar NAME = 'BFormTag';\nexport var BFormTag = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [idMixin, normalizeSlotMixin],\n  props: {\n    variant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'variant');\n      }\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    title: {\n      type: String,\n      default: null\n    },\n    pill: {\n      type: Boolean,\n      default: false\n    },\n    removeLabel: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'removeLabel');\n      }\n    },\n    tag: {\n      type: String,\n      default: 'span'\n    }\n  },\n  methods: {\n    onDelete: function onDelete(evt) {\n      var type = evt.type,\n          keyCode = evt.keyCode;\n\n      if (!this.disabled && (type === 'click' || type === 'keydown' && keyCode === KeyCodes.DELETE)) {\n        this.$emit('remove');\n      }\n    }\n  },\n  render: function render(h) {\n    var tagId = this.safeId();\n    var tagLabelId = this.safeId('_taglabel_');\n    var $remove = h();\n\n    if (!this.disabled) {\n      $remove = h(BButtonClose, {\n        staticClass: 'b-form-tag-remove ml-1',\n        props: {\n          ariaLabel: this.removeLabel\n        },\n        attrs: {\n          'aria-controls': tagId,\n          'aria-describedby': tagLabelId,\n          'aria-keyshortcuts': 'Delete'\n        },\n        on: {\n          click: this.onDelete,\n          keydown: this.onDelete\n        }\n      });\n    }\n\n    var $tag = h('span', {\n      staticClass: 'b-form-tag-content flex-grow-1 text-truncate',\n      attrs: {\n        id: tagLabelId\n      }\n    }, this.normalizeSlot('default') || this.title || [h()]);\n    return h(BBadge, {\n      staticClass: 'b-form-tag d-inline-flex align-items-baseline mw-100',\n      class: {\n        disabled: this.disabled\n      },\n      attrs: {\n        id: tagId,\n        title: this.title || null,\n        'aria-labelledby': tagLabelId\n      },\n      props: {\n        tag: this.tag,\n        variant: this.variant,\n        pill: this.pill\n      }\n    }, [$tag, $remove]);\n  }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\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\n// Tagged input form control\n// Based loosely on https://adamwathan.me/renderless-components-in-vuejs/\nimport Vue from '../../utils/vue';\nimport KeyCodes from '../../utils/key-codes';\nimport identity from '../../utils/identity';\nimport looseEqual from '../../utils/loose-equal';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { matches, requestAF, select } from '../../utils/dom';\nimport { isEvent, isFunction, isString } from '../../utils/inspect';\nimport { escapeRegExp, toString, trim, trimLeft } from '../../utils/string';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BButton } from '../button/button';\nimport { BFormInvalidFeedback } from '../form/form-invalid-feedback';\nimport { BFormText } from '../form/form-text';\nimport { BFormTag } from './form-tag'; // --- Constants ---\n\nvar NAME = 'BFormTags'; // Supported input types (for built in input)\n\nvar TYPES = ['text', 'email', 'tel', 'url', 'number']; // Pre-compiled regular expressions for performance reasons\n\nvar RX_SPACES = /[\\s\\uFEFF\\xA0]+/g; // KeyCode constants\n\nvar ENTER = KeyCodes.ENTER,\n    BACKSPACE = KeyCodes.BACKSPACE,\n    DELETE = KeyCodes.DELETE; // --- Utility methods ---\n// Escape special chars in string and replace\n// contiguous spaces with a whitespace match\n\nvar escapeRegExpChars = function escapeRegExpChars(str) {\n  return escapeRegExp(str).replace(RX_SPACES, '\\\\s');\n}; // Remove leading/trailing spaces from array of tags and remove duplicates\n\n\nvar cleanTags = function cleanTags(tags) {\n  return concat(tags).map(function (tag) {\n    return trim(toString(tag));\n  }).filter(function (tag, index, arr) {\n    return tag.length > 0 && arr.indexOf(tag) === index;\n  });\n}; // Processes an input/change event, normalizing string or event argument\n\n\nvar processEventValue = function processEventValue(evt) {\n  return isString(evt) ? evt : isEvent(evt) ? evt.target.value || '' : '';\n}; // Returns a fresh empty `tagsState` object\n\n\nvar cleanTagsState = function cleanTagsState() {\n  return {\n    all: [],\n    valid: [],\n    invalid: [],\n    duplicate: []\n  };\n}; // @vue/component\n\n\nexport var BFormTags = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [idMixin, normalizeSlotMixin],\n  model: {\n    // Even though this is the default that Vue assumes, we need\n    // to add it for the docs to reflect that this is the model\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    inputId: {\n      type: String,\n      default: null\n    },\n    placeholder: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'placeholder');\n      }\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    name: {\n      type: String,\n      default: null\n    },\n    form: {\n      type: String,\n      default: null\n    },\n    autofocus: {\n      type: Boolean,\n      default: false\n    },\n    state: {\n      // Tri-state: `true`, `false`, `null`\n      type: Boolean,\n      default: null\n    },\n    size: {\n      type: String,\n      default: null\n    },\n    inputType: {\n      type: String,\n      default: 'text',\n      validator: function validator(type) {\n        return arrayIncludes(TYPES, type);\n      }\n    },\n    inputClass: {\n      type: [String, Array, Object],\n      default: null\n    },\n    inputAttrs: {\n      // Additional attributes to add to the input element\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    addButtonText: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'addButtonText');\n      }\n    },\n    addButtonVariant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'addButtonVariant');\n      }\n    },\n    tagVariant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'tagVariant');\n      }\n    },\n    tagClass: {\n      type: [String, Array, Object],\n      default: null\n    },\n    tagPills: {\n      type: Boolean,\n      default: false\n    },\n    tagRemoveLabel: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'tagRemoveLabel');\n      }\n    },\n    tagRemovedLabel: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'tagRemovedLabel');\n      }\n    },\n    tagValidator: {\n      type: Function,\n      default: null\n    },\n    duplicateTagText: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'duplicateTagText');\n      }\n    },\n    invalidTagText: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'invalidTagText');\n      }\n    },\n    separator: {\n      // Character (or characters) that trigger adding tags\n      type: [String, Array],\n      default: null\n    },\n    removeOnDelete: {\n      // Enable deleting last tag in list when BACKSPACE is\n      // pressed and input is empty\n      type: Boolean,\n      default: false\n    },\n    addOnChange: {\n      // Enable change event triggering tag addition\n      // Handy if using <select> as the input\n      type: Boolean,\n      default: false\n    },\n    noAddOnEnter: {\n      // Disable ENTER key from triggering tag addition\n      type: Boolean,\n      default: false\n    },\n    noOuterFocus: {\n      // Disable the focus ring on the root element\n      type: Boolean,\n      default: false\n    },\n    value: {\n      // The v-model prop\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    }\n  },\n  data: function data() {\n    return {\n      hasFocus: false,\n      newTag: '',\n      tags: [],\n      // Tags that were removed\n      removedTags: [],\n      // Populated when tags are parsed\n      tagsState: cleanTagsState()\n    };\n  },\n  computed: {\n    computedInputId: function computedInputId() {\n      return this.inputId || this.safeId('__input__');\n    },\n    computedInputType: function computedInputType() {\n      // We only allow certain types\n      return arrayIncludes(TYPES, this.inputType) ? this.inputType : 'text';\n    },\n    computedInputAttrs: function computedInputAttrs() {\n      return _objectSpread({}, this.inputAttrs, {\n        // Must have attributes\n        id: this.computedInputId,\n        value: this.newTag,\n        disabled: this.disabled || null,\n        form: this.form || null\n      });\n    },\n    computedInputHandlers: function computedInputHandlers() {\n      return {\n        input: this.onInputInput,\n        change: this.onInputChange,\n        keydown: this.onInputKeydown\n      };\n    },\n    computedSeparator: function computedSeparator() {\n      // Merge the array into a string\n      return concat(this.separator).filter(isString).filter(identity).join('');\n    },\n    computedSeparatorRegExp: function computedSeparatorRegExp() {\n      // We use a computed prop here to precompile the RegExp\n      // The RegExp is a character class RE in the form of `/[abc]+/`\n      // where a, b, and c are the valid separator characters\n      // -> `tags = str.split(/[abc]+/).filter(t => t)`\n      var separator = this.computedSeparator;\n      return separator ? new RegExp(\"[\".concat(escapeRegExpChars(separator), \"]+\")) : null;\n    },\n    computedJoiner: function computedJoiner() {\n      // When tag(s) are invalid or duplicate, we leave them\n      // in the input so that the user can see them\n      // If there are more than one tag in the input, we use the\n      // first separator character as the separator in the input\n      // We append a space if the first separator is not a space\n      var joiner = this.computedSeparator.charAt(0);\n      return joiner !== ' ' ? \"\".concat(joiner, \" \") : joiner;\n    },\n    disableAddButton: function disableAddButton() {\n      var _this = this;\n\n      // If 'Add' button should be disabled\n      // If the input contains at least one tag that can\n      // be added, then the 'Add' button should be enabled\n      var newTag = trim(this.newTag);\n      return newTag === '' || !this.splitTags(newTag).some(function (t) {\n        return !arrayIncludes(_this.tags, t) && _this.validateTag(t);\n      });\n    },\n    duplicateTags: function duplicateTags() {\n      return this.tagsState.duplicate;\n    },\n    hasDuplicateTags: function hasDuplicateTags() {\n      return this.duplicateTags.length > 0;\n    },\n    invalidTags: function invalidTags() {\n      return this.tagsState.invalid;\n    },\n    hasInvalidTags: function hasInvalidTags() {\n      return this.invalidTags.length > 0;\n    }\n  },\n  watch: {\n    value: function value(newVal) {\n      this.tags = cleanTags(newVal);\n    },\n    tags: function tags(newVal, oldVal) {\n      // Update the `v-model` (if it differs from the value prop)\n      if (!looseEqual(newVal, this.value)) {\n        this.$emit('input', newVal);\n      }\n\n      if (!looseEqual(newVal, oldVal)) {\n        newVal = concat(newVal).filter(identity);\n        oldVal = concat(oldVal).filter(identity);\n        this.removedTags = oldVal.filter(function (old) {\n          return !arrayIncludes(newVal, old);\n        });\n      }\n    },\n    tagsState: function tagsState(newVal, oldVal) {\n      // Emit a tag-state event when the `tagsState` object changes\n      if (!looseEqual(newVal, oldVal)) {\n        this.$emit('tag-state', newVal.valid, newVal.invalid, newVal.duplicate);\n      }\n    }\n  },\n  created: function created() {\n    // We do this in created to make sure an input event emits\n    // if the cleaned tags are not equal to the value prop\n    this.tags = cleanTags(this.value);\n  },\n  mounted: function mounted() {\n    this.handleAutofocus();\n  },\n  activated: function activated()\n  /* istanbul ignore next */\n  {\n    this.handleAutofocus();\n  },\n  methods: {\n    addTag: function addTag(newTag) {\n      newTag = isString(newTag) ? newTag : this.newTag;\n      /* istanbul ignore next */\n\n      if (this.disabled || trim(newTag) === '') {\n        // Early exit\n        return;\n      }\n\n      var parsed = this.parseTags(newTag); // Add any new tags to the `tags` array, or if the\n      // array of `allTags` is empty, we clear the input\n\n      if (parsed.valid.length > 0 || parsed.all.length === 0) {\n        // Clear the user input element (and leave in any invalid/duplicate tag(s)\n\n        /* istanbul ignore if: full testing to be added later */\n        if (matches(this.getInput(), 'select')) {\n          // The following is needed to properly\n          // work with `<select>` elements\n          this.newTag = '';\n        } else {\n          var invalidAndDuplicates = [].concat(_toConsumableArray(parsed.invalid), _toConsumableArray(parsed.duplicate));\n          this.newTag = parsed.all.filter(function (tag) {\n            return arrayIncludes(invalidAndDuplicates, tag);\n          }).join(this.computedJoiner).concat(invalidAndDuplicates.length > 0 ? this.computedJoiner.charAt(0) : '');\n        }\n      }\n\n      if (parsed.valid.length > 0) {\n        // We add the new tags in one atomic operation\n        // to trigger reactivity once (instead of once per tag)\n        // We do this after we update the new tag input value\n        // `concat()` can be faster than array spread, when both args are arrays\n        this.tags = concat(this.tags, parsed.valid);\n      }\n\n      this.tagsState = parsed; // Attempt to re-focus the input (specifically for when using the Add\n      // button, as the button disappears after successfully adding a tag\n\n      this.focus();\n    },\n    removeTag: function removeTag(tag) {\n      var _this2 = this;\n\n      /* istanbul ignore next */\n      if (this.disabled) {\n        return;\n      } // TODO:\n      //   Add `onRemoveTag(tag)` user method, which if returns `false`\n      //   will prevent the tag from being removed (i.e. confirmation)\n      //   Or emit cancelable `BvEvent`\n\n\n      this.tags = this.tags.filter(function (t) {\n        return t !== tag;\n      }); // Return focus to the input (if possible)\n\n      this.$nextTick(function () {\n        _this2.focus();\n      });\n    },\n    // --- Input element event handlers ---\n    onInputInput: function onInputInput(evt) {\n      /* istanbul ignore next: hard to test composition events */\n      if (this.disabled || isEvent(evt) && evt.target.composing) {\n        // `evt.target.composing` is set by Vue (`v-model` directive)\n        // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n        return;\n      }\n\n      var newTag = processEventValue(evt);\n      var separatorRe = this.computedSeparatorRegExp;\n\n      if (this.newTag !== newTag) {\n        this.newTag = newTag;\n      } // We ignore leading whitespace for the following\n\n\n      newTag = trimLeft(newTag);\n\n      if (separatorRe && separatorRe.test(newTag.slice(-1))) {\n        // A trailing separator character was entered, so add the tag(s)\n        // Note: More than one tag on input event is possible via copy/paste\n        this.addTag();\n      } else {\n        // Validate (parse tags) on input event\n        this.tagsState = newTag === '' ? cleanTagsState() : this.parseTags(newTag);\n      }\n    },\n    onInputChange: function onInputChange(evt) {\n      // Change is triggered on `<input>` blur, or `<select>` selected\n      // This event is opt-in\n      if (!this.disabled && this.addOnChange) {\n        var newTag = processEventValue(evt);\n        /* istanbul ignore next */\n\n        if (this.newTag !== newTag) {\n          this.newTag = newTag;\n        }\n\n        this.addTag();\n      }\n    },\n    onInputKeydown: function onInputKeydown(evt) {\n      // Early exit\n\n      /* istanbul ignore next */\n      if (this.disabled || !isEvent(evt)) {\n        return;\n      }\n\n      var keyCode = evt.keyCode;\n      var value = evt.target.value || '';\n      /* istanbul ignore else: testing to be added later */\n\n      if (!this.noAddOnEnter && keyCode === ENTER) {\n        // Attempt to add the tag when user presses enter\n        evt.preventDefault();\n        this.addTag();\n      } else if (this.removeOnDelete && (keyCode === BACKSPACE || keyCode === DELETE) && value === '') {\n        // Remove the last tag if the user pressed backspace/delete and the input is empty\n        evt.preventDefault();\n        this.tags = this.tags.slice(0, -1);\n      }\n    },\n    // --- Wrapper event handlers ---\n    onClick: function onClick(evt) {\n      var _this3 = this;\n\n      if (!this.disabled && isEvent(evt) && evt.target === evt.currentTarget) {\n        this.$nextTick(function () {\n          _this3.focus();\n        });\n      }\n    },\n    onFocusin: function onFocusin() {\n      this.hasFocus = true;\n    },\n    onFocusout: function onFocusout() {\n      this.hasFocus = false;\n    },\n    handleAutofocus: function handleAutofocus() {\n      var _this4 = this;\n\n      this.$nextTick(function () {\n        requestAF(function () {\n          if (_this4.autofocus && !_this4.disabled) {\n            _this4.focus();\n          }\n        });\n      });\n    },\n    // --- Public methods ---\n    focus: function focus() {\n      if (!this.disabled) {\n        try {\n          this.getInput().focus();\n        } catch (_unused) {}\n      }\n    },\n    blur: function blur() {\n      try {\n        this.getInput().blur();\n      } catch (_unused2) {}\n    },\n    // --- Private methods ---\n    splitTags: function splitTags(newTag) {\n      // Split the input into an array of raw tags\n      newTag = toString(newTag);\n      var separatorRe = this.computedSeparatorRegExp; // Split the tag(s) via the optional separator\n      // Normally only a single tag is provided, but copy/paste\n      // can enter multiple tags in a single operation\n\n      return (separatorRe ? newTag.split(separatorRe) : [newTag]).map(trim).filter(identity);\n    },\n    parseTags: function parseTags(newTag) {\n      var _this5 = this;\n\n      // Takes `newTag` value and parses it into `validTags`,\n      // `invalidTags`, and duplicate tags as an object\n      // Split the input into raw tags\n      var tags = this.splitTags(newTag); // Base results\n\n      var parsed = {\n        all: tags,\n        valid: [],\n        invalid: [],\n        duplicate: []\n      }; // Parse the unique tags\n\n      tags.forEach(function (tag) {\n        if (arrayIncludes(_this5.tags, tag) || arrayIncludes(parsed.valid, tag)) {\n          // Unique duplicate tags\n          if (!arrayIncludes(parsed.duplicate, tag)) {\n            parsed.duplicate.push(tag);\n          }\n        } else if (_this5.validateTag(tag)) {\n          // We only add unique/valid tags\n          parsed.valid.push(tag);\n        } else {\n          // Unique invalid tags\n          if (!arrayIncludes(parsed.invalid, tag)) {\n            parsed.invalid.push(tag);\n          }\n        }\n      });\n      return parsed;\n    },\n    validateTag: function validateTag(tag) {\n      // Call the user supplied tag validator\n      var validator = this.tagValidator;\n      return isFunction(validator) ? validator(tag) : true;\n    },\n    getInput: function getInput() {\n      // Returns the input element reference (or null if not found)\n      return select(\"#\".concat(this.computedInputId), this.$el);\n    },\n    // Default User Interface render\n    defaultRender: function defaultRender(_ref) {\n      var tags = _ref.tags,\n          addTag = _ref.addTag,\n          removeTag = _ref.removeTag,\n          inputType = _ref.inputType,\n          inputAttrs = _ref.inputAttrs,\n          inputHandlers = _ref.inputHandlers,\n          inputClass = _ref.inputClass,\n          tagClass = _ref.tagClass,\n          tagVariant = _ref.tagVariant,\n          tagPills = _ref.tagPills,\n          tagRemoveLabel = _ref.tagRemoveLabel,\n          invalidTagText = _ref.invalidTagText,\n          duplicateTagText = _ref.duplicateTagText,\n          isInvalid = _ref.isInvalid,\n          isDuplicate = _ref.isDuplicate,\n          disabled = _ref.disabled,\n          placeholder = _ref.placeholder,\n          addButtonText = _ref.addButtonText,\n          addButtonVariant = _ref.addButtonVariant,\n          disableAddButton = _ref.disableAddButton;\n      var h = this.$createElement; // Make the list of tags\n\n      var $tags = tags.map(function (tag) {\n        tag = toString(tag);\n        return h(BFormTag, {\n          key: \"li-tag__\".concat(tag),\n          staticClass: 'mt-1 mr-1',\n          class: tagClass,\n          props: {\n            // `BFormTag` will auto generate an ID\n            // so we do not need to set the ID prop\n            tag: 'li',\n            title: tag,\n            disabled: disabled,\n            variant: tagVariant,\n            pill: tagPills,\n            removeLabel: tagRemoveLabel\n          },\n          on: {\n            remove: function remove() {\n              return removeTag(tag);\n            }\n          }\n        }, tag);\n      }); // Feedback IDs if needed\n\n      var invalidFeedbackId = invalidTagText && isInvalid ? this.safeId('__invalid_feedback__') : null;\n      var duplicateFeedbackId = duplicateTagText && isDuplicate ? this.safeId('__duplicate_feedback__') : null; // Compute the `aria-describedby` attribute value\n\n      var ariaDescribedby = [inputAttrs['aria-describedby'], invalidFeedbackId, duplicateFeedbackId].filter(identity).join(' '); // Input\n\n      var $input = h('input', {\n        ref: 'input',\n        // Directive needed to get `evt.target.composing` set (if needed)\n        directives: [{\n          name: 'model',\n          value: inputAttrs.value\n        }],\n        staticClass: 'b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0',\n        class: inputClass,\n        style: {\n          outline: 0,\n          minWidth: '5rem'\n        },\n        attrs: _objectSpread({}, inputAttrs, {\n          'aria-describedby': ariaDescribedby || null,\n          type: inputType,\n          placeholder: placeholder || null\n        }),\n        domProps: {\n          value: inputAttrs.value\n        },\n        on: inputHandlers\n      }); // Add button\n\n      var $button = h(BButton, {\n        ref: 'button',\n        staticClass: 'b-form-tags-button py-0',\n        class: {\n          // Only show the button if the tag can be added\n          // We use the `invisible` class instead of not rendering\n          // the button, so that we maintain layout to prevent\n          // the user input from jumping around\n          invisible: disableAddButton\n        },\n        style: {\n          fontSize: '90%'\n        },\n        props: {\n          variant: addButtonVariant,\n          disabled: disableAddButton\n        },\n        on: {\n          click: function click() {\n            return addTag();\n          }\n        }\n      }, [this.normalizeSlot('add-button-text') || addButtonText]); // ID of the tags+input `<ul>` list\n      // Note we could concatenate inputAttrs.id with `__TAG__LIST__`\n      // But note that the inputID may be null until after mount\n      // `safeId` returns `null`, if no user provided ID, until after\n      // mount when a unique ID is generated\n\n      var tagListId = this.safeId('__TAG__LIST__');\n      var $field = h('li', {\n        key: '__li-input__',\n        staticClass: 'flex-grow-1 mt-1',\n        attrs: {\n          role: 'none',\n          'aria-live': 'off',\n          'aria-controls': tagListId\n        }\n      }, [h('div', {\n        staticClass: 'd-flex',\n        attrs: {\n          role: 'group'\n        }\n      }, [$input, $button])]); // Wrap in an unordered list element (we use a list for accessibility)\n\n      var $ul = h('ul', {\n        key: '_tags_list_',\n        staticClass: 'list-unstyled mt-n1 mb-0 d-flex flex-wrap align-items-center',\n        attrs: {\n          id: tagListId\n        }\n      }, // `concat()` is faster than array spread when args are known to be arrays\n      concat($tags, $field)); // Assemble the feedback\n\n      var $feedback = h();\n\n      if (invalidTagText || duplicateTagText) {\n        // Add an aria live region for the invalid/duplicate tag\n        // messages if the user has not disabled the messages\n        var joiner = this.computedJoiner; // Invalid tag feedback if needed (error)\n\n        var $invalid = h();\n\n        if (invalidFeedbackId) {\n          $invalid = h(BFormInvalidFeedback, {\n            key: '_tags_invalid_feedback_',\n            props: {\n              id: invalidFeedbackId,\n              forceShow: true\n            }\n          }, [this.invalidTagText, ': ', this.invalidTags.join(joiner)]);\n        } // Duplicate tag feedback if needed (warning, not error)\n\n\n        var $duplicate = h();\n\n        if (duplicateFeedbackId) {\n          $duplicate = h(BFormText, {\n            key: '_tags_duplicate_feedback_',\n            props: {\n              id: duplicateFeedbackId\n            }\n          }, [this.duplicateTagText, ': ', this.duplicateTags.join(joiner)]);\n        }\n\n        $feedback = h('div', {\n          key: '_tags_feedback_',\n          attrs: {\n            'aria-live': 'polite',\n            'aria-atomic': 'true'\n          }\n        }, [$invalid, $duplicate]);\n      } // Return the content\n\n\n      return [$ul, $feedback];\n    }\n  },\n  render: function render(h) {\n    var _this6 = this;\n\n    // Scoped slot properties\n    var scope = {\n      // Array of tags (shallow copy to prevent mutations)\n      tags: this.tags.slice(),\n      // Methods\n      removeTag: this.removeTag,\n      addTag: this.addTag,\n      // We don't include this in the attrs, as users may want to override this\n      inputType: this.computedInputType,\n      // <input> v-bind:inputAttrs\n      inputAttrs: this.computedInputAttrs,\n      // <input> v-on:inputHandlers\n      inputHandlers: this.computedInputHandlers,\n      // <input> :id=\"inputId\"\n      inputId: this.computedInputId,\n      // Invalid/Duplicate state information\n      invalidTags: this.invalidTags.slice(),\n      isInvalid: this.hasInvalidTags,\n      duplicateTags: this.duplicateTags.slice(),\n      isDuplicate: this.hasDuplicateTags,\n      // If the 'Add' button should be disabled\n      disableAddButton: this.disableAddButton,\n      // Pass-though values\n      state: this.state,\n      separator: this.separator,\n      disabled: this.disabled,\n      size: this.size,\n      placeholder: this.placeholder,\n      inputClass: this.inputClass,\n      tagRemoveLabel: this.tagRemoveLabel,\n      tagVariant: this.tagVariant,\n      tagPills: this.tagPills,\n      tagClass: this.tagClass,\n      addButtonText: this.addButtonText,\n      addButtonVariant: this.addButtonVariant,\n      invalidTagText: this.invalidTagText,\n      duplicateTagText: this.duplicateTagText\n    }; // Generate the user interface\n\n    var $content = this.normalizeSlot('default', scope) || this.defaultRender(scope); // Generate the `aria-live` region for the current value(s)\n\n    var $output = h('output', {\n      staticClass: 'sr-only',\n      attrs: {\n        id: this.safeId('_selected-tags_'),\n        role: 'status',\n        for: this.computedInputId,\n        'aria-live': this.hasFocus ? 'polite' : 'off',\n        'aria-atomic': 'true',\n        'aria-relevant': 'additions text'\n      }\n    }, this.tags.join(', ')); // Removed tag live region\n\n    var $removed = h('div', {\n      staticClass: 'sr-only',\n      attrs: {\n        id: this.safeId('_removed-tags_'),\n        role: 'status',\n        'aria-live': this.hasFocus ? 'assertive' : 'off',\n        'aria-atomic': 'true'\n      }\n    }, this.removedTags.length > 0 ? \"(\".concat(this.tagRemovedLabel, \") \").concat(this.removedTags.join(', ')) : ''); // Add hidden inputs for form submission\n\n    var $hidden = h();\n\n    if (this.name && !this.disabled) {\n      // We add hidden inputs for each tag if a name is provided\n      // for native submission of forms\n      $hidden = this.tags.map(function (tag) {\n        return h('input', {\n          key: tag,\n          attrs: {\n            type: 'hidden',\n            value: tag,\n            name: _this6.name,\n            form: _this6.form || null\n          }\n        });\n      });\n    } // Return the rendered output\n\n\n    return h('div', {\n      staticClass: 'b-form-tags form-control h-auto',\n      class: _defineProperty({\n        focus: this.hasFocus && !this.noOuterFocus && !this.disabled,\n        disabled: this.disabled,\n        'is-valid': this.state === true,\n        'is-invalid': this.state === false\n      }, \"form-control-\".concat(this.size), this.size),\n      attrs: {\n        id: this.safeId(),\n        role: 'group',\n        tabindex: this.disabled || this.noOuterFocus ? null : '-1',\n        'aria-describedby': this.safeId('_selected_')\n      },\n      on: {\n        focusin: this.onFocusin,\n        focusout: this.onFocusout,\n        click: this.onClick\n      }\n    }, concat($output, $removed, $content, $hidden));\n  }\n});","import { BFormTags } from './form-tags';\nimport { BFormTag } from './form-tag';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormTagsPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormTags: BFormTags,\n    BTags: BFormTags,\n    BFormTag: BFormTag,\n    BTag: BFormTag\n  }\n});\nexport { FormTagsPlugin, BFormTags, BFormTag };","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\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n// BTime control (not form input control)\nimport Vue from '../../utils/vue'; // Utilities\n\nimport identity from '../../utils/identity';\nimport KeyCodes from '../../utils/key-codes';\nimport looseEqual from '../../utils/loose-equal';\nimport { concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { createDate, createDateFormatter } from '../../utils/date';\nimport { contains, requestAF } from '../../utils/dom';\nimport { isNull, isUndefinedOrNull } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { toInteger } from '../../utils/number';\nimport { toString } from '../../utils/string'; // Mixins\n\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot'; // Sub components used\n\nimport { BFormSpinbutton } from '../form-spinbutton/form-spinbutton';\nimport { BIconCircleFill, BIconChevronUp } from '../../icons/icons'; // --- Constants ---\n\nvar NAME = 'BTime';\nvar NUMERIC = 'numeric';\nvar LEFT = KeyCodes.LEFT,\n    RIGHT = KeyCodes.RIGHT; // Time string RegExpr (optional seconds)\n\nvar RE_TIME = /^([0-1]?[0-9]|2[0-3]):[0-5]?[0-9](:[0-5]?[0-9])?$/; // --- Helpers ---\n// Fallback to BFormSpinbutton prop if no value found\n\nvar getConfigFallback = function getConfigFallback(prop) {\n  return getComponentConfig(NAME, prop) || getComponentConfig('BFormSpinbutton', prop);\n};\n\nvar padLeftZeros = function padLeftZeros(num) {\n  return \"00\".concat(num || '').slice(-2);\n};\n\nvar parseHMS = function parseHMS(hms) {\n  hms = toString(hms);\n  var hh = null,\n      mm = null,\n      ss = null;\n\n  if (RE_TIME.test(hms)) {\n    ;\n\n    var _hms$split$map$map = hms.split(':').map(toInteger).map(function (v) {\n      return isNaN(v) ? null : v;\n    });\n\n    var _hms$split$map$map2 = _slicedToArray(_hms$split$map$map, 3);\n\n    hh = _hms$split$map$map2[0];\n    mm = _hms$split$map$map2[1];\n    ss = _hms$split$map$map2[2];\n  }\n\n  return {\n    hours: isUndefinedOrNull(hh) ? null : hh,\n    minutes: isUndefinedOrNull(mm) ? null : mm,\n    seconds: isUndefinedOrNull(ss) ? null : ss,\n    ampm: isUndefinedOrNull(hh) || hh < 12 ? 0 : 1\n  };\n};\n\nvar formatHMS = function formatHMS(_ref) {\n  var hours = _ref.hours,\n      minutes = _ref.minutes,\n      seconds = _ref.seconds;\n  var requireSeconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  if (isNull(hours) || isNull(minutes) || requireSeconds && isNull(seconds)) {\n    return '';\n  }\n\n  var hms = [hours, minutes, requireSeconds ? seconds : 0];\n  return hms.map(padLeftZeros).join(':');\n}; // @vue/component\n\n\nexport var BTime = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [idMixin, normalizeSlotMixin],\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    value: {\n      type: String,\n      default: ''\n    },\n    showSeconds: {\n      // If true, show the second spinbutton\n      type: Boolean,\n      default: false\n    },\n    hour12: {\n      // Explicitly force 12 or 24 hour time\n      // Default is to use resolved locale for 12/24 hour display\n      // Tri-state: `true` = 12, `false` = 24, `null` = auto\n      type: Boolean,\n      default: null\n    },\n    locale: {\n      type: [String, Array],\n      default: null\n    },\n    ariaLabelledby: {\n      // ID of label element\n      type: String,\n      default: null\n    },\n    secondsStep: {\n      type: [Number, String],\n      default: 1\n    },\n    minutesStep: {\n      type: [Number, String],\n      default: 1\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    readonly: {\n      type: Boolean,\n      default: false\n    },\n    hideHeader: {\n      type: Boolean,\n      default: false\n    },\n    labelNoTimeSelected: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelNoTimeSelected');\n      }\n    },\n    labelSelected: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelSelected');\n      }\n    },\n    labelHours: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelHours');\n      }\n    },\n    labelMinutes: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelMinutes');\n      }\n    },\n    labelSeconds: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelSeconds');\n      }\n    },\n    labelAmpm: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelAmpm');\n      }\n    },\n    labelAm: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelAm');\n      }\n    },\n    labelPm: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelPm');\n      }\n    },\n    // Passed to the spin buttons\n    labelIncrement: {\n      type: String,\n      // Falls back to BFormSpinbutton label\n      default: function _default() {\n        return getConfigFallback('labelIncrement');\n      }\n    },\n    labelDecrement: {\n      type: String,\n      // Falls back to BFormSpinbutton label\n      default: function _default() {\n        return getConfigFallback('labelDecrement');\n      }\n    },\n    hidden: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    var parsed = parseHMS(this.value || '');\n    return {\n      // Spin button models\n      modelHours: parsed.hours,\n      modelMinutes: parsed.minutes,\n      modelSeconds: parsed.seconds,\n      modelAmpm: parsed.ampm,\n      // Internal flag to enable aria-live regions\n      isLive: false\n    };\n  },\n  computed: {\n    computedHMS: function computedHMS() {\n      var hours = this.modelHours;\n      var minutes = this.modelMinutes;\n      var seconds = this.modelSeconds;\n      return formatHMS({\n        hours: hours,\n        minutes: minutes,\n        seconds: seconds\n      }, this.showSeconds);\n    },\n    resolvedOptions: function resolvedOptions() {\n      // Resolved locale options\n      var locale = concat(this.locale).filter(identity);\n      var options = {\n        hour: NUMERIC,\n        minute: NUMERIC,\n        second: NUMERIC\n      };\n\n      if (!isUndefinedOrNull(this.hour12)) {\n        // Force 12 or 24 hour clock\n        options.hour12 = !!this.hour12;\n      }\n\n      var dtf = new Intl.DateTimeFormat(locale, options);\n      var resolved = dtf.resolvedOptions();\n      var hour12 = resolved.hour12 || false; // IE 11 doesn't resolve the hourCycle, so we make\n      // an assumption and fall back to common values\n\n      var hourCycle = resolved.hourCycle || (hour12 ? 'h12' : 'h23');\n      return {\n        locale: resolved.locale,\n        hour12: hour12,\n        hourCycle: hourCycle\n      };\n    },\n    computedLocale: function computedLocale() {\n      return this.resolvedOptions.locale;\n    },\n    computedLang: function computedLang() {\n      return (this.computedLocale || '').replace(/-u-.*$/, '');\n    },\n    computedRTL: function computedRTL() {\n      return isLocaleRTL(this.computedLang);\n    },\n    computedHourCycle: function computedHourCycle() {\n      // h11, h12, h23, or h24\n      // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Locale/hourCycle\n      // h12 - Hour system using 1–12. Corresponds to 'h' in patterns. The 12 hour clock, with midnight starting at 12:00 am\n      // h23 - Hour system using 0–23. Corresponds to 'H' in patterns. The 24 hour clock, with midnight starting at 0:00\n      // h11 - Hour system using 0–11. Corresponds to 'K' in patterns. The 12 hour clock, with midnight starting at 0:00 am\n      // h24 - Hour system using 1–24. Corresponds to 'k' in pattern. The 24 hour clock, with midnight starting at 24:00\n      // For h12 or h24, we visually format 00 hours as 12\n      return this.resolvedOptions.hourCycle;\n    },\n    is12Hour: function is12Hour() {\n      return !!this.resolvedOptions.hour12;\n    },\n    context: function context() {\n      return {\n        locale: this.computedLocale,\n        isRTL: this.computedRTL,\n        hourCycle: this.computedHourCycle,\n        hour12: this.is12Hour,\n        hours: this.modelHours,\n        minutes: this.modelMinutes,\n        seconds: this.showSeconds ? this.modelSeconds : 0,\n        value: this.computedHMS,\n        formatted: this.formattedTimeString\n      };\n    },\n    valueId: function valueId() {\n      return this.safeId() || null;\n    },\n    computedAriaLabelledby: function computedAriaLabelledby() {\n      return [this.ariaLabelledby, this.valueId].filter(identity).join(' ') || null;\n    },\n    timeFormatter: function timeFormatter() {\n      // Returns a formatter function reference\n      // The formatter converts the time to a localized string\n      var options = {\n        hour12: this.is12Hour,\n        hourCycle: this.computedHourCycle,\n        hour: NUMERIC,\n        minute: NUMERIC,\n        timeZone: 'UTC'\n      };\n\n      if (this.showSeconds) {\n        options.second = NUMERIC;\n      } // Formats the time as a localized string\n\n\n      return createDateFormatter(this.computedLocale, options);\n    },\n    numberFormatter: function numberFormatter() {\n      // Returns a formatter function reference\n      // The formatter always formats as 2 digits and is localized\n      var nf = new Intl.NumberFormat(this.computedLocale, {\n        style: 'decimal',\n        minimumIntegerDigits: 2,\n        minimumFractionDigits: 0,\n        maximumFractionDigits: 0,\n        notation: 'standard'\n      });\n      return nf.format;\n    },\n    formattedTimeString: function formattedTimeString() {\n      var hours = this.modelHours;\n      var minutes = this.modelMinutes;\n      var seconds = this.showSeconds ? this.modelSeconds || 0 : 0;\n\n      if (this.computedHMS) {\n        return this.timeFormatter(createDate(Date.UTC(0, 0, 1, hours, minutes, seconds)));\n      }\n\n      return this.labelNoTimeSelected || ' ';\n    },\n    spinScopedSlots: function spinScopedSlots() {\n      var h = this.$createElement;\n      return {\n        increment: function increment(_ref2) {\n          var hasFocus = _ref2.hasFocus;\n          return h(BIconChevronUp, {\n            props: {\n              scale: hasFocus ? 1.5 : 1.25\n            },\n            attrs: {\n              'aria-hidden': 'true'\n            }\n          });\n        },\n        decrement: function decrement(_ref3) {\n          var hasFocus = _ref3.hasFocus;\n          return h(BIconChevronUp, {\n            props: {\n              flipV: true,\n              scale: hasFocus ? 1.5 : 1.25\n            },\n            attrs: {\n              'aria-hidden': 'true'\n            }\n          });\n        }\n      };\n    }\n  },\n  watch: {\n    value: function value(newVal, oldVal) {\n      if (newVal !== oldVal && !looseEqual(parseHMS(newVal), parseHMS(this.computedHMS))) {\n        var _parseHMS = parseHMS(newVal),\n            hours = _parseHMS.hours,\n            minutes = _parseHMS.minutes,\n            seconds = _parseHMS.seconds,\n            ampm = _parseHMS.ampm;\n\n        this.modelHours = hours;\n        this.modelMinutes = minutes;\n        this.modelSeconds = seconds;\n        this.modelAmpm = ampm;\n      }\n    },\n    computedHMS: function computedHMS(newVal, oldVal) {\n      if (newVal !== oldVal) {\n        this.$emit('input', newVal);\n      }\n    },\n    context: function context(newVal, oldVal) {\n      if (!looseEqual(newVal, oldVal)) {\n        this.$emit('context', newVal);\n      }\n    },\n    modelAmpm: function modelAmpm(newVal, oldVal) {\n      var _this = this;\n\n      if (newVal !== oldVal) {\n        var hours = isNull(this.modelHours) ? 0 : this.modelHours;\n        this.$nextTick(function () {\n          if (newVal === 0 && hours > 11) {\n            // Switched to AM\n            _this.modelHours = hours - 12;\n          } else if (newVal === 1 && hours < 12) {\n            // Switched to PM\n            _this.modelHours = hours + 12;\n          }\n        });\n      }\n    },\n    modelHours: function modelHours(newHours, oldHours) {\n      if (newHours !== oldHours) {\n        this.modelAmpm = newHours > 11 ? 1 : 0;\n      }\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    this.$nextTick(function () {\n      _this2.$emit('context', _this2.context);\n    });\n  },\n  mounted: function mounted() {\n    this.setLive(true);\n  },\n  activated: function activated()\n  /* istanbul ignore next */\n  {\n    this.setLive(true);\n  },\n  deactivated: function deactivated()\n  /* istanbul ignore next */\n  {\n    this.setLive(false);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.setLive(false);\n  },\n  methods: {\n    // Public methods\n    focus: function focus() {\n      if (!this.disabled) {\n        try {\n          // We focus the first spin button\n          this.$refs.spinners[0].focus();\n        } catch (_unused) {}\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        try {\n          if (contains(this.$el, document.activeElement)) {\n            document.activeElement.blur();\n          }\n        } catch (_unused2) {}\n      }\n    },\n    // Formatters for the spin buttons\n    formatHours: function formatHours(hh) {\n      var hourCycle = this.computedHourCycle; // We always store 0-23, but format based on h11/h12/h23/h24 formats\n\n      hh = this.is12Hour && hh > 12 ? hh - 12 : hh; // Determine how 00:00 and 12:00 are shown\n\n      hh = hh === 0 && hourCycle === 'h12' ? 12 : hh === 0 && hourCycle === 'h24' ? 24 : hh === 12 && hourCycle === 'h11' ? 0 : hh;\n      return this.numberFormatter(hh);\n    },\n    formatMinutes: function formatMinutes(mm) {\n      return this.numberFormatter(mm);\n    },\n    formatSeconds: function formatSeconds(ss) {\n      return this.numberFormatter(ss);\n    },\n    formatAmpm: function formatAmpm(ampm) {\n      // These should come from label props???\n      // `ampm` should always be a value of `0` or `1`\n      return ampm === 0 ? this.labelAm : ampm === 1 ? this.labelPm : '';\n    },\n    // Spinbutton on change handlers\n    setHours: function setHours(value) {\n      this.modelHours = value;\n    },\n    setMinutes: function setMinutes(value) {\n      this.modelMinutes = value;\n    },\n    setSeconds: function setSeconds(value) {\n      this.modelSeconds = value;\n    },\n    setAmpm: function setAmpm(value) {\n      this.modelAmpm = value;\n    },\n    onSpinLeftRight: function onSpinLeftRight() {\n      var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var type = evt.type,\n          keyCode = evt.keyCode;\n\n      if (!this.disabled && type === 'keydown' && (keyCode === LEFT || keyCode === RIGHT)) {\n        evt.preventDefault();\n        evt.stopPropagation();\n        var spinners = this.$refs.spinners || [];\n        var index = spinners.map(function (cmp) {\n          return !!cmp.hasFocus;\n        }).indexOf(true);\n        index = index + (keyCode === LEFT ? -1 : 1);\n        index = index >= spinners.length ? 0 : index < 0 ? spinners.length - 1 : index;\n\n        try {\n          spinners[index].focus();\n        } catch (_unused3) {}\n      }\n    },\n    setLive: function setLive(on) {\n      var _this3 = this;\n\n      if (on) {\n        this.$nextTick(function () {\n          requestAF(function () {\n            _this3.isLive = true;\n          });\n        });\n      } else {\n        this.isLive = false;\n      }\n    }\n  },\n  render: function render(h) {\n    var _this4 = this;\n\n    /* istanbul ignore if */\n    if (this.hidden) {\n      // If hidden, we just render a placeholder comment\n      return h();\n    }\n\n    var valueId = this.valueId;\n    var computedAriaLabelledby = this.computedAriaLabelledby;\n    var spinIds = []; // Helper method to render a spinbutton\n\n    var makeSpinbutton = function makeSpinbutton(handler, key, classes) {\n      var spinbuttonProps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      var id = _this4.safeId(\"_spinbutton_\".concat(key, \"_\")) || null;\n      spinIds.push(id);\n      return h(BFormSpinbutton, {\n        key: key,\n        ref: 'spinners',\n        refInFor: true,\n        class: classes,\n        props: _objectSpread({\n          id: id,\n          placeholder: '--',\n          vertical: true,\n          required: true,\n          disabled: _this4.disabled,\n          readonly: _this4.readonly,\n          locale: _this4.computedLocale,\n          labelIncrement: _this4.labelIncrement,\n          labelDecrement: _this4.labelDecrement,\n          wrap: true,\n          ariaControls: valueId,\n          min: 0\n        }, spinbuttonProps),\n        scopedSlots: _this4.spinScopedSlots,\n        on: {\n          // We use `change` event to minimize SR verbosity\n          // As the spinbutton will announce each value change\n          // and we don't want the formatted time to be announced\n          // on each value input if repeat is happening\n          change: handler\n        }\n      });\n    }; // Helper method to return a \"colon\" separator\n\n\n    var makeColon = function makeColon() {\n      return h('div', {\n        staticClass: 'd-flex flex-column',\n        class: {\n          'text-muted': _this4.disabled || _this4.readonly\n        },\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      }, [h(BIconCircleFill, {\n        props: {\n          shiftV: 4,\n          scale: 0.5\n        }\n      }), h(BIconCircleFill, {\n        props: {\n          shiftV: -4,\n          scale: 0.5\n        }\n      })]);\n    };\n\n    var $spinners = []; // Hours\n\n    $spinners.push(makeSpinbutton(this.setHours, 'hours', '', {\n      value: this.modelHours,\n      max: 23,\n      step: 1,\n      formatterFn: this.formatHours,\n      ariaLabel: this.labelHours\n    })); // Spacer\n\n    $spinners.push(makeColon()); // Minutes\n\n    $spinners.push(makeSpinbutton(this.setMinutes, 'minutes', '', {\n      value: this.modelMinutes,\n      max: 59,\n      step: this.minutesStep || 1,\n      formatterFn: this.formatMinutes,\n      ariaLabel: this.labelMinutes\n    }));\n\n    if (this.showSeconds) {\n      // Spacer\n      $spinners.push(makeColon()); // Seconds\n\n      $spinners.push(makeSpinbutton(this.setSeconds, 'seconds', '', {\n        value: this.modelSeconds,\n        max: 59,\n        step: this.secondsStep || 1,\n        formatterFn: this.formatSeconds,\n        ariaLabel: this.labelSeconds\n      }));\n    } // AM/PM ?\n\n\n    if (this.is12Hour) {\n      // TODO:\n      //   If locale is RTL, unshift this instead of push?\n      //   And switch class `ml-2` to `mr-2`\n      //   Note some LTR locales (i.e. zh) also place AM/PM to the left\n      $spinners.push(makeSpinbutton(this.setAmpm, 'ampm', 'ml-2', {\n        value: this.modelAmpm,\n        max: 1,\n        formatterFn: this.formatAmpm,\n        ariaLabel: this.labelAmpm,\n        // We set `required` as `false`, since this always has a value\n        required: false\n      }));\n    } // Assemble spinners\n\n\n    $spinners = h('div', {\n      staticClass: 'd-flex align-items-center justify-content-center mx-auto',\n      attrs: {\n        role: 'group',\n        tabindex: this.disabled || this.readonly ? null : '-1',\n        'aria-labelledby': computedAriaLabelledby\n      },\n      on: {\n        keydown: this.onSpinLeftRight,\n        click: function click(evt)\n        /* istanbul ignore next */\n        {\n          if (evt.target === evt.currentTarget) {\n            _this4.focus();\n          }\n        }\n      }\n    }, $spinners); // Selected type display\n\n    var $value = h('output', {\n      staticClass: 'border rounded d-block p-1 small text-center',\n      class: {\n        disabled: this.disabled || this.readonly\n      },\n      attrs: {\n        id: valueId,\n        role: 'status',\n        for: spinIds.filter(identity).join(' ') || null,\n        tabindex: this.disabled ? null : '-1',\n        'aria-live': this.isLive ? 'polite' : 'off',\n        'aria-atomic': 'true'\n      },\n      on: {\n        // Transfer focus/click to focus hours spinner\n        click: this.focus,\n        focus: this.focus\n      }\n    }, [h('bdi', this.formattedTimeString), this.computedHMS ? h('span', {\n      staticClass: 'sr-only'\n    }, \" (\".concat(this.labelSelected, \") \")) : '']);\n    var $header = h('header', {\n      class: {\n        'sr-only': this.hideHeader,\n        'mb-2': !this.hideHeader\n      }\n    }, [$value]); // Optional bottom slot\n\n    var $slot = this.normalizeSlot('default');\n    $slot = $slot ? h('footer', {\n      staticClass: 'mt-2'\n    }, $slot) : h();\n    return h('div', {\n      staticClass: 'b-time d-inline-flex flex-column text-center',\n      attrs: {\n        role: 'group',\n        lang: this.computedLang || null,\n        'aria-labelledby': computedAriaLabelledby || null,\n        'aria-disabled': this.disabled ? 'true' : null,\n        'aria-readonly': this.readonly && !this.disabled ? 'true' : null\n      }\n    }, [$header, $spinners, $slot]);\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 '../../utils/vue';\nimport { BVFormBtnLabelControl, dropdownProps } from '../../utils/bv-form-btn-label-control';\nimport { getComponentConfig } from '../../utils/config';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport idMixin from '../../mixins/id';\nimport { BButton } from '../button/button';\nimport { BTime } from '../time/time';\nimport { BIconClock, BIconClockFill } from '../../icons/icons';\nvar NAME = 'BFormTimepicker'; // Fallback to BTime/BFormSpinbutton prop if no value found\n\nvar getConfigFallback = function getConfigFallback(prop) {\n  return getComponentConfig(NAME, prop) || getComponentConfig('BTime', prop) || getComponentConfig('BFormSpinbutton', prop);\n}; // We create our props as a mixin so that we can control\n// where they appear in the props listing reference section\n\n\nvar propsMixin = {\n  props: _objectSpread({\n    value: {\n      type: String,\n      default: ''\n    },\n    resetValue: {\n      type: String,\n      default: ''\n    },\n    placeholder: {\n      type: String,\n      // Defaults to `labelNoTime` from BTime context\n      default: null\n    },\n    size: {\n      type: String,\n      default: null\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    readonly: {\n      type: Boolean,\n      default: false\n    },\n    required: {\n      // If true adds the `aria-required` attribute\n      type: Boolean,\n      default: false\n    },\n    name: {\n      type: String,\n      default: null\n    },\n    form: {\n      type: String,\n      default: null\n    },\n    state: {\n      // Tri-state prop: `true`, `false` or `null`\n      type: Boolean,\n      default: null\n    },\n    hour12: {\n      // Tri-state prop: `true` => 12 hour, `false` => 24 hour, `null` => auto\n      type: Boolean,\n      default: null\n    },\n    locale: {\n      type: [String, Array],\n      default: null\n    },\n    showSeconds: {\n      type: Boolean,\n      default: false\n    },\n    hideHeader: {\n      type: Boolean,\n      default: false\n    },\n    secondsStep: {\n      type: [Number, String],\n      default: 1\n    },\n    minutesStep: {\n      type: [Number, String],\n      default: 1\n    },\n    buttonOnly: {\n      type: Boolean,\n      default: false\n    },\n    buttonVariant: {\n      // Applicable in button only mode\n      type: String,\n      default: 'secondary'\n    },\n    nowButton: {\n      type: Boolean,\n      default: false\n    },\n    labelNowButton: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelNowButton');\n      }\n    },\n    nowButtonVariant: {\n      type: String,\n      default: 'outline-primary'\n    },\n    resetButton: {\n      type: Boolean,\n      default: false\n    },\n    labelResetButton: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelResetButton');\n      }\n    },\n    resetButtonVariant: {\n      type: String,\n      default: 'outline-danger'\n    },\n    noCloseButton: {\n      type: Boolean,\n      default: false\n    },\n    labelCloseButton: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'labelCloseButton');\n      }\n    },\n    closeButtonVariant: {\n      type: String,\n      default: 'outline-secondary'\n    },\n    // Labels\n    // These fallback to BTime values\n    labelSelected: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelSelected');\n      }\n    },\n    labelNoTimeSelected: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelNoTimeSelected');\n      }\n    },\n    labelHours: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelHours');\n      }\n    },\n    labelMinutes: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelMinutes');\n      }\n    },\n    labelSeconds: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelSeconds');\n      }\n    },\n    labelAmpm: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelAmpm');\n      }\n    },\n    labelAm: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelAm');\n      }\n    },\n    labelPm: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelPm');\n      }\n    },\n    // These pick BTime or BFormSpinbutton global config if no BFormTimepicker global config\n    labelIncrement: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelIncrement');\n      }\n    },\n    labelDecrement: {\n      type: String,\n      default: function _default() {\n        return getConfigFallback('labelDecrement');\n      }\n    },\n    // extra dropdown stuff\n    menuClass: {\n      type: [String, Array, Object],\n      default: null\n    }\n  }, dropdownProps)\n}; // --- BFormDate component ---\n// @vue/component\n\nexport var BFormTimepicker = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  // The mixins order determines the order of appearance in the props reference section\n  mixins: [idMixin, propsMixin],\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  data: function data() {\n    return {\n      // We always use `HH:mm:ss` value internally\n      localHMS: this.value || '',\n      // Context data from BTime\n      localLocale: null,\n      isRTL: false,\n      formattedValue: '',\n      // If the menu is opened\n      isVisible: false\n    };\n  },\n  computed: {\n    computedLang: function computedLang() {\n      return (this.localLocale || '').replace(/-u-.*$/i, '') || null;\n    },\n    timeProps: function timeProps() {\n      // Props we pass to BTime\n      // Use self for better minification, as `this` won't\n      // minimize and we reference it many times below\n      var self = this;\n      return {\n        hidden: !self.isVisible,\n        value: self.localHMS,\n        // Passthrough props\n        readonly: self.readonly,\n        disabled: self.disabled,\n        locale: self.locale,\n        hour12: self.hour12,\n        hideHeader: self.hideHeader,\n        showSeconds: self.showSeconds,\n        secondsStep: self.secondsStep,\n        minutesStep: self.minutesStep,\n        labelNoTimeSelected: self.labelNoTimeSelected,\n        labelSelected: self.labelSelected,\n        labelHours: self.labelHours,\n        labelMinutes: self.labelMinutes,\n        labelSeconds: self.labelSeconds,\n        labelAmpm: self.labelAmpm,\n        labelAm: self.labelAm,\n        labelPm: self.labelPm,\n        labelIncrement: self.labelIncrement,\n        labelDecrement: self.labelDecrement\n      };\n    }\n  },\n  watch: {\n    value: function value(newVal) {\n      this.localHMS = newVal || '';\n    },\n    localHMS: function localHMS(newVal) {\n      // We only update hte v-model value when the timepicker\n      // is open, to prevent cursor jumps when bound to a\n      // text input in button only mode\n      if (this.isVisible) {\n        this.$emit('input', newVal || '');\n      }\n    }\n  },\n  methods: {\n    // Public methods\n    focus: function focus() {\n      if (!this.disabled) {\n        try {\n          this.$refs.control.focus();\n        } catch (_unused) {}\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        try {\n          this.$refs.control.blur();\n        } catch (_unused2) {}\n      }\n    },\n    // Private methods\n    setAndClose: function setAndClose(value) {\n      var _this = this;\n\n      this.localHMS = value;\n      this.$nextTick(function () {\n        _this.$refs.control.hide(true);\n      });\n    },\n    onInput: function onInput(hms) {\n      if (this.localHMS !== hms) {\n        this.localHMS = hms;\n      }\n    },\n    onContext: function onContext(ctx) {\n      var isRTL = ctx.isRTL,\n          locale = ctx.locale,\n          value = ctx.value,\n          formatted = ctx.formatted;\n      this.isRTL = isRTL;\n      this.localLocale = locale;\n      this.formattedValue = formatted;\n      this.localHMS = value || ''; // Re-emit the context event\n\n      this.$emit('context', ctx);\n    },\n    onNowButton: function onNowButton() {\n      var now = new Date();\n      var hours = now.getHours();\n      var minutes = now.getMinutes();\n      var seconds = this.showSeconds ? now.getSeconds() : 0;\n      var value = [hours, minutes, seconds].map(function (v) {\n        return \"00\".concat(v || '').slice(-2);\n      }).join(':');\n      this.setAndClose(value);\n    },\n    onResetButton: function onResetButton() {\n      this.setAndClose(this.resetValue);\n    },\n    onCloseButton: function onCloseButton() {\n      this.$refs.control.hide(true);\n    },\n    onShow: function onShow() {\n      this.isVisible = true;\n    },\n    onShown: function onShown() {\n      var _this2 = this;\n\n      this.$nextTick(function () {\n        try {\n          _this2.$refs.time.focus();\n        } catch (_unused3) {}\n\n        _this2.$emit('shown');\n      });\n    },\n    onHidden: function onHidden() {\n      this.isVisible = false;\n      this.$emit('hidden');\n    },\n    // Render function helpers\n    defaultButtonFn: function defaultButtonFn(_ref) {\n      var isHovered = _ref.isHovered,\n          hasFocus = _ref.hasFocus;\n      return this.$createElement(isHovered || hasFocus ? BIconClockFill : BIconClock, {\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var localHMS = this.localHMS;\n    var disabled = this.disabled;\n    var readonly = this.readonly;\n    var placeholder = isUndefinedOrNull(this.placeholder) ? this.labelNoTimeSelected : this.placeholder; // Footer buttons\n\n    var $footer = [];\n\n    if (this.nowButton) {\n      var label = this.labelNowButton;\n      $footer.push(h(BButton, {\n        staticClass: 'mx-1',\n        props: {\n          size: 'sm',\n          disabled: disabled || readonly,\n          variant: this.nowButtonVariant\n        },\n        attrs: {\n          'aria-label': label || null\n        },\n        on: {\n          click: this.onNowButton\n        }\n      }, label));\n    }\n\n    if (this.resetButton) {\n      var _label = this.labelResetButton;\n      $footer.push(h(BButton, {\n        staticClass: 'mx-1',\n        props: {\n          size: 'sm',\n          disabled: disabled || readonly,\n          variant: this.resetButtonVariant\n        },\n        attrs: {\n          'aria-label': _label || null\n        },\n        on: {\n          click: this.onResetButton\n        }\n      }, _label));\n    }\n\n    if (!this.noCloseButton) {\n      var _label2 = this.labelCloseButton;\n      $footer.push(h(BButton, {\n        staticClass: 'mx-1',\n        props: {\n          size: 'sm',\n          disabled: disabled,\n          variant: this.closeButtonVariant\n        },\n        attrs: {\n          'aria-label': _label2 || null\n        },\n        on: {\n          click: this.onCloseButton\n        }\n      }, _label2));\n    }\n\n    if ($footer.length > 0) {\n      $footer = [h('div', {\n        staticClass: 'b-form-date-controls d-flex flex-wrap mx-n1',\n        class: {\n          'justify-content-between': $footer.length > 1,\n          'justify-content-end': $footer.length < 2\n        }\n      }, $footer)];\n    }\n\n    var $time = h(BTime, {\n      ref: 'time',\n      staticClass: 'b-form-time-control',\n      props: this.timeProps,\n      on: {\n        input: this.onInput,\n        context: this.onContext\n      }\n    }, $footer);\n    return h(BVFormBtnLabelControl, {\n      ref: 'control',\n      staticClass: 'b-form-timepicker',\n      props: _objectSpread({}, this.$props, {\n        // Overridden / computed props\n        id: this.safeId(),\n        rtl: this.isRTL,\n        lang: this.computedLang,\n        value: localHMS || '',\n        formattedValue: localHMS ? this.formattedValue : '',\n        placeholder: placeholder || ''\n      }),\n      on: {\n        show: this.onShow,\n        shown: this.onShown,\n        hidden: this.onHidden\n      },\n      scopedSlots: {\n        'button-content': this.$scopedSlots['button-content'] || this.defaultButtonFn\n      }\n    }, [$time]);\n  }\n});","import { BFormTimepicker } from './form-timepicker';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormTimepickerPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormTimepicker: BFormTimepicker,\n    BTimepicker: BFormTimepicker\n  }\n});\nexport { FormTimepickerPlugin, BFormTimepicker };","import { BImg } from './img';\nimport { BImgLazy } from './img-lazy';\nimport { pluginFactory } from '../../utils/plugins';\nvar ImagePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BImg: BImg,\n    BImgLazy: BImgLazy\n  }\n});\nexport { ImagePlugin, BImg, BImgLazy };","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  tag: {\n    type: String,\n    default: 'div'\n  }\n}; // @vue/component\n\nexport var BInputGroupText = /*#__PURE__*/Vue.extend({\n  name: 'BInputGroupText',\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: 'input-group-text'\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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { BInputGroupText } from './input-group-text';\nexport var commonProps = {\n  id: {\n    type: String,\n    default: null\n  },\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  isText: {\n    type: Boolean,\n    default: false\n  }\n}; // @vue/component\n\nexport var BInputGroupAddon = /*#__PURE__*/Vue.extend({\n  name: 'BInputGroupAddon',\n  functional: true,\n  props: _objectSpread({}, commonProps, {\n    append: {\n      type: Boolean,\n      default: false\n    }\n  }),\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: {\n        'input-group-append': props.append,\n        'input-group-prepend': !props.append\n      },\n      attrs: {\n        id: props.id\n      }\n    }), props.isText ? [h(BInputGroupText, children)] : 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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { BInputGroupAddon, commonProps } from './input-group-addon'; // @vue/component\n\nexport var BInputGroupPrepend = /*#__PURE__*/Vue.extend({\n  name: 'BInputGroupPrepend',\n  functional: true,\n  props: commonProps,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    // pass all our props/attrs down to child, and set`append` to false\n    return h(BInputGroupAddon, mergeData(data, {\n      props: _objectSpread({}, props, {\n        append: false\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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { BInputGroupAddon, commonProps } from './input-group-addon'; // @vue/component\n\nexport var BInputGroupAppend = /*#__PURE__*/Vue.extend({\n  name: 'BInputGroupAppend',\n  functional: true,\n  props: commonProps,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    // pass all our props/attrs down to child, and set`append` to true\n    return h(BInputGroupAddon, mergeData(data, {\n      props: _objectSpread({}, props, {\n        append: true\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\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupText } from './input-group-text';\nvar NAME = 'BInputGroup';\nexport var props = {\n  id: {\n    type: String\n  },\n  size: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'size');\n    }\n  },\n  prepend: {\n    type: String\n  },\n  prependHtml: {\n    type: String\n  },\n  append: {\n    type: String\n  },\n  appendHtml: {\n    type: String\n  },\n  tag: {\n    type: String,\n    default: 'div'\n  }\n}; // @vue/component\n\nexport var BInputGroup = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var $slots = slots();\n    var $scopedSlots = scopedSlots || {};\n    var childNodes = []; // Prepend prop/slot\n\n    if (props.prepend || props.prependHtml || hasNormalizedSlot('prepend', $scopedSlots, $slots)) {\n      childNodes.push(h(BInputGroupPrepend, [// Prop\n      props.prepend || props.prependHtml ? h(BInputGroupText, {\n        domProps: htmlOrText(props.prependHtml, props.prepend)\n      }) : h(), // Slot\n      normalizeSlot('prepend', {}, $scopedSlots, $slots) || h()]));\n    } else {\n      childNodes.push(h());\n    } // Default slot\n\n\n    if (hasNormalizedSlot('default', $scopedSlots, $slots)) {\n      childNodes.push.apply(childNodes, _toConsumableArray(normalizeSlot('default', {}, $scopedSlots, $slots)));\n    } else {\n      childNodes.push(h());\n    } // Append prop\n\n\n    if (props.append || props.appendHtml || hasNormalizedSlot('append', $scopedSlots, $slots)) {\n      childNodes.push(h(BInputGroupAppend, [// prop\n      props.append || props.appendHtml ? h(BInputGroupText, {\n        domProps: htmlOrText(props.appendHtml, props.append)\n      }) : h(), // Slot\n      normalizeSlot('append', {}, $scopedSlots, $slots) || h()]));\n    } else {\n      childNodes.push(h());\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'input-group',\n      class: _defineProperty({}, \"input-group-\".concat(props.size), props.size),\n      attrs: {\n        id: props.id || null,\n        role: 'group'\n      }\n    }), childNodes);\n  }\n});","import { BInputGroup } from './input-group';\nimport { BInputGroupAddon } from './input-group-addon';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupText } from './input-group-text';\nimport { pluginFactory } from '../../utils/plugins';\nvar InputGroupPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BInputGroup: BInputGroup,\n    BInputGroupAddon: BInputGroupAddon,\n    BInputGroupPrepend: BInputGroupPrepend,\n    BInputGroupAppend: BInputGroupAppend,\n    BInputGroupText: BInputGroupText\n  }\n});\nexport { InputGroupPlugin, BInputGroup, BInputGroupAddon, BInputGroupPrepend, BInputGroupAppend, BInputGroupText };","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 from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  fluid: {\n    // String breakpoint name new in Bootstrap v4.4.x\n    type: [Boolean, String],\n    default: false\n  }\n}; // @vue/component\n\nexport var BContainer = /*#__PURE__*/Vue.extend({\n  name: 'BContainer',\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        container: !(props.fluid || props.fluid === ''),\n        'container-fluid': props.fluid === true || props.fluid === ''\n      }, \"container-\".concat(props.fluid), props.fluid && props.fluid !== true)\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 from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport { stripTags } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { BContainer } from '../layout/container';\nvar NAME = 'BJumbotron';\nexport var props = {\n  fluid: {\n    type: Boolean,\n    default: false\n  },\n  containerFluid: {\n    type: [Boolean, String],\n    default: false\n  },\n  header: {\n    type: String,\n    default: null\n  },\n  headerHtml: {\n    type: String,\n    default: null\n  },\n  headerTag: {\n    type: String,\n    default: 'h1'\n  },\n  headerLevel: {\n    type: [Number, String],\n    default: '3'\n  },\n  lead: {\n    type: String,\n    default: null\n  },\n  leadHtml: {\n    type: String,\n    default: null\n  },\n  leadTag: {\n    type: String,\n    default: 'p'\n  },\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  bgVariant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'bgVariant');\n    }\n  },\n  borderVariant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'borderVariant');\n    }\n  },\n  textVariant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'textVariant');\n    }\n  }\n}; // @vue/component\n\nexport var BJumbotron = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class2;\n\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    // The order of the conditionals matter.\n    // We are building the component markup in order.\n    var childNodes = [];\n    var $slots = slots();\n    var $scopedSlots = scopedSlots || {}; // Header\n\n    if (props.header || hasNormalizedSlot('header', $scopedSlots, $slots) || props.headerHtml) {\n      childNodes.push(h(props.headerTag, {\n        class: _defineProperty({}, \"display-\".concat(props.headerLevel), props.headerLevel)\n      }, normalizeSlot('header', {}, $scopedSlots, $slots) || props.headerHtml || stripTags(props.header)));\n    } // Lead\n\n\n    if (props.lead || hasNormalizedSlot('lead', $scopedSlots, $slots) || props.leadHtml) {\n      childNodes.push(h(props.leadTag, {\n        staticClass: 'lead'\n      }, normalizeSlot('lead', {}, $scopedSlots, $slots) || props.leadHtml || stripTags(props.lead)));\n    } // Default slot\n\n\n    if (hasNormalizedSlot('default', $scopedSlots, $slots)) {\n      childNodes.push(normalizeSlot('default', {}, $scopedSlots, $slots));\n    } // If fluid, wrap content in a container/container-fluid\n\n\n    if (props.fluid) {\n      // Children become a child of a container\n      childNodes = [h(BContainer, {\n        props: {\n          fluid: props.containerFluid\n        }\n      }, childNodes)];\n    } // Return the jumbotron\n\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'jumbotron',\n      class: (_class2 = {\n        'jumbotron-fluid': props.fluid\n      }, _defineProperty(_class2, \"text-\".concat(props.textVariant), props.textVariant), _defineProperty(_class2, \"bg-\".concat(props.bgVariant), props.bgVariant), _defineProperty(_class2, \"border-\".concat(props.borderVariant), props.borderVariant), _defineProperty(_class2, \"border\", props.borderVariant), _class2)\n    }), childNodes);\n  }\n});","import { BJumbotron } from './jumbotron';\nimport { pluginFactory } from '../../utils/plugins';\nvar JumbotronPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BJumbotron: BJumbotron\n  }\n});\nexport { JumbotronPlugin, BJumbotron };","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 { mergeData } from 'vue-functional-data-merge';\nimport identity from '../../utils/identity';\nimport memoize from '../../utils/memoize';\nimport suffixPropName from '../../utils/suffix-prop-name';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { create, keys } from '../../utils/object';\nimport { lowerCase, toString, trim } from '../../utils/string';\nvar COMMON_ALIGNMENT = ['start', 'end', 'center']; // Generates a prop object with a type of `[String, Number]`\n\nvar strNum = function strNum() {\n  return {\n    type: [String, Number],\n    default: null\n  };\n}; // Compute a `row-cols-{breakpoint}-{cols}` class name\n// Memoized function for better performance on generating class names\n\n\nvar computeRowColsClass = memoize(function (breakpoint, cols) {\n  cols = trim(toString(cols));\n  return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null;\n}); // Get the breakpoint name from the `rowCols` prop name\n// Memoized function for better performance on extracting breakpoint names\n\nvar computeRowColsBreakpoint = memoize(function (prop) {\n  return lowerCase(prop.replace('cols', ''));\n}); // Cached copy of the `row-cols` breakpoint prop names\n// Will be populated when the props are generated\n\nvar rowColsPropList = []; // Lazy evaled props factory for <b-row> (called only once,\n// the first time the component is used)\n\nvar generateProps = function generateProps() {\n  // Grab the breakpoints from the cached config (including the '' (xs) breakpoint)\n  var breakpoints = getBreakpointsUpCached(); // Supports classes like: `row-cols-2`, `row-cols-md-4`, `row-cols-xl-6`\n\n  var rowColsProps = breakpoints.reduce(function (props, breakpoint) {\n    props[suffixPropName(breakpoint, 'cols')] = strNum();\n    return props;\n  }, create(null)); // Cache the row-cols prop names\n\n  rowColsPropList = keys(rowColsProps); // Return the generated props\n\n  return _objectSpread({\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    noGutters: {\n      type: Boolean,\n      default: false\n    },\n    alignV: {\n      type: String,\n      default: null,\n      validator: function validator(str) {\n        return arrayIncludes(COMMON_ALIGNMENT.concat(['baseline', 'stretch']), str);\n      }\n    },\n    alignH: {\n      type: String,\n      default: null,\n      validator: function validator(str) {\n        return arrayIncludes(COMMON_ALIGNMENT.concat(['between', 'around']), str);\n      }\n    },\n    alignContent: {\n      type: String,\n      default: null,\n      validator: function validator(str) {\n        return arrayIncludes(COMMON_ALIGNMENT.concat(['between', 'around', 'stretch']), str);\n      }\n    }\n  }, rowColsProps);\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\n\nexport var BRow = {\n  name: 'BRow',\n  functional: true,\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;\n    this.props = generateProps();\n    return this.props;\n  },\n\n  render: function render(h, _ref) {\n    var _classList$push;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var classList = []; // Loop through row-cols breakpoint props and generate the classes\n\n    rowColsPropList.forEach(function (prop) {\n      var c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop]); // If a class is returned, push it onto the array\n\n      if (c) {\n        classList.push(c);\n      }\n    });\n    classList.push((_classList$push = {\n      'no-gutters': props.noGutters\n    }, _defineProperty(_classList$push, \"align-items-\".concat(props.alignV), props.alignV), _defineProperty(_classList$push, \"justify-content-\".concat(props.alignH), props.alignH), _defineProperty(_classList$push, \"align-content-\".concat(props.alignContent), props.alignContent), _classList$push));\n    return h(props.tag, mergeData(data, {\n      staticClass: 'row',\n      class: classList\n    }), children);\n  }\n};","import { BContainer } from './container';\nimport { BRow } from './row';\nimport { BCol } from './col';\nimport { BFormRow } from './form-row';\nimport { pluginFactory } from '../../utils/plugins';\nvar LayoutPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BContainer: BContainer,\n    BRow: BRow,\n    BCol: BCol,\n    BFormRow: BFormRow\n  }\n});\nexport { LayoutPlugin, BContainer, BRow, BCol, BFormRow };","import { BLink } from './link';\nimport { pluginFactory } from '../../utils/plugins';\nvar LinkPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BLink: BLink\n  }\n});\nexport { LinkPlugin, BLink };","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 from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { isString } from '../../utils/inspect';\nexport var props = {\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  flush: {\n    type: Boolean,\n    default: false\n  },\n  horizontal: {\n    type: [Boolean, String],\n    default: false\n  }\n}; // @vue/component\n\nexport var BListGroup = /*#__PURE__*/Vue.extend({\n  name: 'BListGroup',\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 horizontal = props.horizontal === '' ? true : props.horizontal;\n    horizontal = props.flush ? false : horizontal;\n    var componentData = {\n      staticClass: 'list-group',\n      class: _defineProperty({\n        'list-group-flush': props.flush,\n        'list-group-horizontal': horizontal === true\n      }, \"list-group-horizontal-\".concat(horizontal), isString(horizontal))\n    };\n    return h(props.tag, mergeData(data, componentData), 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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport pluckProps from '../../utils/pluck-props';\nimport { arrayIncludes } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { BLink, propsFactory as linkPropsFactory } from '../link/link';\nvar NAME = 'BListGroupItem';\nvar actionTags = ['a', 'router-link', 'button', 'b-link'];\nvar linkProps = linkPropsFactory();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = _objectSpread({\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  action: {\n    type: Boolean,\n    default: null\n  },\n  button: {\n    type: Boolean,\n    default: null\n  },\n  variant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'variant');\n    }\n  }\n}, linkProps); // @vue/component\n\nexport var BListGroupItem = /*#__PURE__*/Vue.extend({\n  name: NAME,\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 tag = props.button ? 'button' : !props.href && !props.to ? props.tag : BLink;\n    var isAction = Boolean(props.href || props.to || props.action || props.button || arrayIncludes(actionTags, props.tag));\n    var attrs = {};\n    var itemProps = {};\n\n    if (tag === 'button') {\n      if (!data.attrs || !data.attrs.type) {\n        // Add a type for button is one not provided in passed attributes\n        attrs.type = 'button';\n      }\n\n      if (props.disabled) {\n        // Set disabled attribute if button and disabled\n        attrs.disabled = true;\n      }\n    } else {\n      itemProps = pluckProps(linkProps, props);\n    }\n\n    var componentData = {\n      attrs: attrs,\n      props: itemProps,\n      staticClass: 'list-group-item',\n      class: (_class = {}, _defineProperty(_class, \"list-group-item-\".concat(props.variant), props.variant), _defineProperty(_class, 'list-group-item-action', isAction), _defineProperty(_class, \"active\", props.active), _defineProperty(_class, \"disabled\", props.disabled), _class)\n    };\n    return h(tag, mergeData(data, componentData), children);\n  }\n});","import { BListGroup } from './list-group';\nimport { BListGroupItem } from './list-group-item';\nimport { pluginFactory } from '../../utils/plugins';\nvar ListGroupPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BListGroup: BListGroup,\n    BListGroupItem: BListGroupItem\n  }\n});\nexport { ListGroupPlugin, BListGroup, BListGroupItem };","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  tag: {\n    type: String,\n    default: 'div'\n  }\n}; // @vue/component\n\nexport var BMediaBody = /*#__PURE__*/Vue.extend({\n  name: 'BMediaBody',\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: 'media-body'\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 from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  verticalAlign: {\n    type: String,\n    default: 'top'\n  }\n}; // @vue/component\n\nexport var BMediaAside = /*#__PURE__*/Vue.extend({\n  name: 'BMediaAside',\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 align = props.verticalAlign === 'top' ? 'start' : props.verticalAlign === 'bottom' ? 'end' : props.verticalAlign;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'd-flex',\n      class: _defineProperty({}, \"align-self-\".concat(align), align)\n    }), children);\n  }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { BMediaBody } from './media-body';\nimport { BMediaAside } from './media-aside';\nexport var props = {\n  tag: {\n    type: String,\n    default: 'div'\n  },\n  rightAlign: {\n    type: Boolean,\n    default: false\n  },\n  verticalAlign: {\n    type: String,\n    default: 'top'\n  },\n  noBody: {\n    type: Boolean,\n    default: false\n  }\n}; // @vue/component\n\nexport var BMedia = /*#__PURE__*/Vue.extend({\n  name: 'BMedia',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots,\n        children = _ref.children;\n    var childNodes = props.noBody ? children : [];\n\n    if (!props.noBody) {\n      var $slots = slots();\n      var $scopedSlots = scopedSlots || {};\n      var $aside = normalizeSlot('aside', {}, $scopedSlots, $slots);\n      var $default = normalizeSlot('default', {}, $scopedSlots, $slots);\n\n      if ($aside && !props.rightAlign) {\n        childNodes.push(h(BMediaAside, {\n          staticClass: 'mr-3',\n          props: {\n            verticalAlign: props.verticalAlign\n          }\n        }, $aside));\n      }\n\n      childNodes.push(h(BMediaBody, $default));\n\n      if ($aside && props.rightAlign) {\n        childNodes.push(h(BMediaAside, {\n          staticClass: 'ml-3',\n          props: {\n            verticalAlign: props.verticalAlign\n          }\n        }, $aside));\n      }\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'media'\n    }), childNodes);\n  }\n});","import { BMedia } from './media';\nimport { BMediaAside } from './media-aside';\nimport { BMediaBody } from './media-body';\nimport { pluginFactory } from '../../utils/plugins';\nvar MediaPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BMedia: BMedia,\n    BMediaAside: BMediaAside,\n    BMediaBody: BMediaBody\n  }\n});\nexport { MediaPlugin, BMedia, BMediaAside, BMediaBody };","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 '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { BLink, propsFactory as linkPropsFactory } from '../link/link';\nexport var props = linkPropsFactory(); // @vue/component\n\nexport var BNavItem = /*#__PURE__*/Vue.extend({\n  name: 'BNavItem',\n  functional: true,\n  props: _objectSpread({}, props, {\n    linkAttrs: {\n      type: Object,\n      default: function _default() {}\n    },\n    linkClasses: {\n      type: [String, Object, Array],\n      default: null\n    }\n  }),\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        listeners = _ref.listeners,\n        children = _ref.children;\n    // We transfer the listeners to the link\n    delete data.on;\n    return h('li', mergeData(data, {\n      staticClass: 'nav-item'\n    }), [h(BLink, {\n      staticClass: 'nav-link',\n      class: props.linkClasses,\n      attrs: props.linkAttrs,\n      props: props,\n      on: listeners\n    }, children)]);\n  }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {}; // @vue/component\n\nexport var BNavText = /*#__PURE__*/Vue.extend({\n  name: 'BNavText',\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var data = _ref.data,\n        children = _ref.children;\n    return h('li', mergeData(data, {\n      staticClass: 'navbar-text'\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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { omit } from '../../utils/object';\nimport { BForm, props as BFormProps } from '../form/form';\nexport var props = _objectSpread({}, omit(BFormProps, ['inline']), {\n  formClass: {\n    type: [String, Array, Object],\n    default: null\n  }\n}); // @vue/component\n\nexport var BNavForm = /*#__PURE__*/Vue.extend({\n  name: 'BNavForm',\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        _ref$listeners = _ref.listeners,\n        listeners = _ref$listeners === void 0 ? {} : _ref$listeners;\n    var attrs = data.attrs; // The following data properties are cleared out\n    // as they will be passed to BForm directly\n\n    data.attrs = {};\n    data.on = {};\n    var $form = h(BForm, {\n      class: props.formClass,\n      props: _objectSpread({}, props, {\n        inline: true\n      }),\n      attrs: attrs,\n      on: listeners\n    }, children);\n    return h('li', mergeData(data, {\n      staticClass: 'form-inline'\n    }), [$form]);\n  }\n});","import Vue from '../../utils/vue';\nimport { props as BDropdownProps } from '../dropdown/dropdown';\nimport idMixin from '../../mixins/id';\nimport dropdownMixin from '../../mixins/dropdown';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport pluckProps from '../../utils/pluck-props';\nimport { htmlOrText } from '../../utils/html';\nimport { BLink } from '../link/link'; // -- Constants --\n\nexport var props = pluckProps(['text', 'html', 'menuClass', 'toggleClass', 'noCaret', 'role', 'lazy'], BDropdownProps); // @vue/component\n\nexport var BNavItemDropdown = /*#__PURE__*/Vue.extend({\n  name: 'BNavItemDropdown',\n  mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n  props: props,\n  computed: {\n    isNav: function isNav() {\n      // Signal to dropdown mixin that we are in a navbar\n      return true;\n    },\n    dropdownClasses: function dropdownClasses() {\n      return [this.directionClass, {\n        show: this.visible\n      }];\n    },\n    menuClasses: function menuClasses() {\n      return [this.menuClass, {\n        'dropdown-menu-right': this.right,\n        show: this.visible\n      }];\n    },\n    toggleClasses: function toggleClasses() {\n      return [this.toggleClass, {\n        'dropdown-toggle-no-caret': this.noCaret\n      }];\n    }\n  },\n  render: function render(h) {\n    var button = h(BLink, {\n      ref: 'toggle',\n      staticClass: 'nav-link dropdown-toggle',\n      class: this.toggleClasses,\n      props: {\n        href: '#',\n        disabled: this.disabled\n      },\n      attrs: {\n        id: this.safeId('_BV_button_'),\n        'aria-haspopup': 'true',\n        'aria-expanded': this.visible ? 'true' : 'false'\n      },\n      on: {\n        mousedown: this.onMousedown,\n        click: this.toggle,\n        keydown: this.toggle // Handle ENTER, SPACE and DOWN\n\n      }\n    }, [this.$slots['button-content'] || this.$slots.text || h('span', {\n      domProps: htmlOrText(this.html, this.text)\n    })]);\n    var menu = h('ul', {\n      staticClass: 'dropdown-menu',\n      class: this.menuClasses,\n      ref: 'menu',\n      attrs: {\n        tabindex: '-1',\n        'aria-labelledby': this.safeId('_BV_button_')\n      },\n      on: {\n        keydown: this.onKeydown // Handle UP, DOWN and ESC\n\n      }\n    }, !this.lazy || this.visible ? this.normalizeSlot('default', {\n      hide: this.hide\n    }) : [h()]);\n    return h('li', {\n      staticClass: 'nav-item b-nav-dropdown dropdown',\n      class: this.dropdownClasses,\n      attrs: {\n        id: this.safeId()\n      }\n    }, [button, menu]);\n  }\n});","import { BNav } from './nav';\nimport { BNavItem } from './nav-item';\nimport { BNavText } from './nav-text';\nimport { BNavForm } from './nav-form';\nimport { BNavItemDropdown } from './nav-item-dropdown';\nimport { DropdownPlugin } from '../dropdown';\nimport { pluginFactory } from '../../utils/plugins';\nvar NavPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BNav: BNav,\n    BNavItem: BNavItem,\n    BNavText: BNavText,\n    BNavForm: BNavForm,\n    BNavItemDropdown: BNavItemDropdown,\n    BNavItemDd: BNavItemDropdown,\n    BNavDropdown: BNavItemDropdown,\n    BNavDd: BNavItemDropdown\n  },\n  plugins: {\n    DropdownPlugin: DropdownPlugin\n  }\n});\nexport { NavPlugin, BNav, BNavItem, BNavText, BNavForm, BNavItemDropdown };","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 from '../../utils/vue';\nimport { getComponentConfig, getBreakpoints } from '../../utils/config';\nimport { isString } from '../../utils/inspect';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nvar NAME = 'BNavbar';\nexport var props = {\n  tag: {\n    type: String,\n    default: 'nav'\n  },\n  type: {\n    type: String,\n    default: 'light'\n  },\n  variant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'variant');\n    }\n  },\n  toggleable: {\n    type: [Boolean, String],\n    default: false\n  },\n  fixed: {\n    type: String\n  },\n  sticky: {\n    type: Boolean,\n    default: false\n  },\n  print: {\n    type: Boolean,\n    default: false\n  }\n}; // @vue/component\n\nexport var BNavbar = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [normalizeSlotMixin],\n  props: props,\n  provide: function provide() {\n    return {\n      bvNavbar: this\n    };\n  },\n  computed: {\n    breakpointClass: function breakpointClass() {\n      var breakpoint = null;\n      var xs = getBreakpoints()[0];\n      var toggleable = this.toggleable;\n\n      if (toggleable && isString(toggleable) && toggleable !== xs) {\n        breakpoint = \"navbar-expand-\".concat(toggleable);\n      } else if (toggleable === false) {\n        breakpoint = 'navbar-expand';\n      }\n\n      return breakpoint;\n    }\n  },\n  render: function render(h) {\n    var _ref;\n\n    return h(this.tag, {\n      staticClass: 'navbar',\n      class: [(_ref = {\n        'd-print': this.print,\n        'sticky-top': this.sticky\n      }, _defineProperty(_ref, \"navbar-\".concat(this.type), this.type), _defineProperty(_ref, \"bg-\".concat(this.variant), this.variant), _defineProperty(_ref, \"fixed-\".concat(this.fixed), this.fixed), _ref), this.breakpointClass],\n      attrs: {\n        role: this.tag === 'nav' ? null : 'navigation'\n      }\n    }, [this.normalizeSlot('default')]);\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 from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport pluckProps from '../../utils/pluck-props';\nimport { props as BNavProps } from '../nav/nav'; // -- Constants --\n\nexport var props = pluckProps(['tag', 'fill', 'justified', 'align', 'small'], BNavProps); // -- Utils --\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n  // Normalize value\n  value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n  return \"justify-content-\".concat(value);\n}; // @vue/component\n\n\nexport var BNavbarNav = /*#__PURE__*/Vue.extend({\n  name: 'BNavbarNav',\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    return h(props.tag, mergeData(data, {\n      staticClass: 'navbar-nav',\n      class: (_class = {\n        'nav-fill': props.fill,\n        'nav-justified': props.justified\n      }, _defineProperty(_class, computeJustifyContent(props.align), props.align), _defineProperty(_class, \"small\", props.small), _class)\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 Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport pluckProps from '../../utils/pluck-props';\nimport { BLink, propsFactory } from '../link/link';\nvar linkProps = propsFactory();\nlinkProps.href.default = undefined;\nlinkProps.to.default = undefined;\nexport var props = _objectSpread({}, linkProps, {\n  tag: {\n    type: String,\n    default: 'div'\n  }\n}); // @vue/component\n\nexport var BNavbarBrand = /*#__PURE__*/Vue.extend({\n  name: 'BNavbarBrand',\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 isLink = props.to || props.href;\n    var tag = isLink ? BLink : props.tag;\n    return h(tag, mergeData(data, {\n      staticClass: 'navbar-brand',\n      props: isLink ? pluckProps(linkProps, props) : {}\n    }), children);\n  }\n});","import Vue from '../../utils/vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { toString } from '../../utils/string';\nimport listenOnRootMixin from '../../mixins/listen-on-root';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { EVENT_TOGGLE, EVENT_STATE, EVENT_STATE_SYNC } from '../../directives/toggle/toggle'; // TODO:\n//   Switch to using `VBToggle` directive, will reduce code footprint\n//   Although the `click` event will no longer be cancellable\n//   Instead add `disabled` prop, and have `VBToggle` check element\n//   disabled state\n// --- Constants ---\n\nvar NAME = 'BNavbarToggle';\nvar CLASS_NAME = 'navbar-toggler'; // --- Main component ---\n// @vue/component\n\nexport var BNavbarToggle = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [listenOnRootMixin, normalizeSlotMixin],\n  props: {\n    label: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'label');\n      }\n    },\n    target: {\n      type: String,\n      required: true\n    }\n  },\n  data: function data() {\n    return {\n      toggleState: false\n    };\n  },\n  created: function created() {\n    this.listenOnRoot(EVENT_STATE, this.handleStateEvt);\n    this.listenOnRoot(EVENT_STATE_SYNC, this.handleStateEvt);\n  },\n  methods: {\n    onClick: function onClick(evt) {\n      this.$emit('click', evt);\n\n      if (!evt.defaultPrevented) {\n        this.$root.$emit(EVENT_TOGGLE, this.target);\n      }\n    },\n    handleStateEvt: function handleStateEvt(id, state) {\n      if (id === this.target) {\n        this.toggleState = state;\n      }\n    }\n  },\n  render: function render(h) {\n    var expanded = this.toggleState;\n    return h('button', {\n      staticClass: CLASS_NAME,\n      attrs: {\n        type: 'button',\n        'aria-label': this.label,\n        'aria-controls': this.target,\n        'aria-expanded': toString(expanded)\n      },\n      on: {\n        click: this.onClick\n      }\n    }, [this.normalizeSlot('default', {\n      expanded: expanded\n    }) || h('span', {\n      staticClass: \"\".concat(CLASS_NAME, \"-icon\")\n    })]);\n  }\n});","import { BNavbar } from './navbar';\nimport { BNavbarNav } from './navbar-nav';\nimport { BNavbarBrand } from './navbar-brand';\nimport { BNavbarToggle } from './navbar-toggle';\nimport { NavPlugin } from '../nav';\nimport { CollapsePlugin } from '../collapse';\nimport { DropdownPlugin } from '../dropdown';\nimport { pluginFactory } from '../../utils/plugins';\nvar NavbarPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BNavbar: BNavbar,\n    BNavbarNav: BNavbarNav,\n    BNavbarBrand: BNavbarBrand,\n    BNavbarToggle: BNavbarToggle,\n    BNavToggle: BNavbarToggle\n  },\n  plugins: {\n    NavPlugin: NavPlugin,\n    CollapsePlugin: CollapsePlugin,\n    DropdownPlugin: DropdownPlugin\n  }\n});\nexport { NavbarPlugin, BNavbar, BNavbarNav, BNavbarBrand, BNavbarToggle };","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 from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nvar NAME = 'BSpinner'; // @vue/component\n\nexport var BSpinner = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  functional: true,\n  props: {\n    type: {\n      type: String,\n      default: 'border' // SCSS currently supports 'border' or 'grow'\n\n    },\n    label: {\n      type: String,\n      default: null\n    },\n    variant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'variant');\n      }\n    },\n    small: {\n      type: Boolean,\n      default: false\n    },\n    role: {\n      type: String,\n      default: 'status'\n    },\n    tag: {\n      type: String,\n      default: 'span'\n    }\n  },\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var $slots = slots();\n    var $scopedSlots = scopedSlots || {};\n    var label = normalizeSlot('label', {}, $scopedSlots, $slots) || props.label;\n\n    if (label) {\n      label = h('span', {\n        staticClass: 'sr-only'\n      }, label);\n    }\n\n    return h(props.tag, mergeData(data, {\n      attrs: {\n        role: label ? props.role || 'status' : null,\n        'aria-hidden': label ? null : 'true'\n      },\n      class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n    }), [label || h()]);\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 '../../utils/vue';\nimport { BVTransition } from '../../utils/bv-transition';\nimport { toFloat } from '../../utils/number';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BSpinner } from '../spinner/spinner';\nvar positionCover = {\n  top: 0,\n  left: 0,\n  bottom: 0,\n  right: 0\n};\nexport var BOverlay = /*#__PURE__*/Vue.extend({\n  name: 'BOverlay',\n  mixins: [normalizeSlotMixin],\n  props: {\n    show: {\n      type: Boolean,\n      default: false\n    },\n    variant: {\n      type: String,\n      default: 'light'\n    },\n    bgColor: {\n      // Alternative to variant, allowing a specific\n      // CSS color to be applied to the overlay\n      type: String,\n      default: null\n    },\n    opacity: {\n      type: [Number, String],\n      default: 0.85,\n      validator: function validator(value) {\n        var number = toFloat(value);\n        return number >= 0 && number <= 1;\n      }\n    },\n    blur: {\n      type: String,\n      default: '2px'\n    },\n    rounded: {\n      type: [Boolean, String],\n      default: false\n    },\n    noCenter: {\n      type: Boolean,\n      default: false\n    },\n    noFade: {\n      type: Boolean,\n      default: false\n    },\n    spinnerType: {\n      type: String,\n      default: 'border'\n    },\n    spinnerVariant: {\n      type: String,\n      default: null\n    },\n    spinnerSmall: {\n      type: Boolean,\n      default: false\n    },\n    overlayTag: {\n      type: String,\n      default: 'div'\n    },\n    wrapTag: {\n      type: String,\n      default: 'div'\n    },\n    noWrap: {\n      // If set, does not render the default slot\n      // and switches to absolute positioning\n      type: Boolean,\n      default: false\n    },\n    fixed: {\n      type: Boolean,\n      default: false\n    },\n    zIndex: {\n      type: [Number, String],\n      default: 10\n    }\n  },\n  computed: {\n    computedRounded: function computedRounded() {\n      var rounded = this.rounded;\n      return rounded === true || rounded === '' ? 'rounded' : !rounded ? '' : \"rounded-\".concat(rounded);\n    },\n    computedVariant: function computedVariant() {\n      return this.variant && !this.bgColor ? \"bg-\".concat(this.variant) : '';\n    },\n    overlayScope: function overlayScope() {\n      return {\n        spinnerType: this.spinnerType,\n        spinnerVariant: this.spinnerVariant || null,\n        spinnerSmall: this.spinnerSmall\n      };\n    }\n  },\n  methods: {\n    defaultOverlayFn: function defaultOverlayFn(_ref) {\n      var spinnerType = _ref.spinnerType,\n          spinnerVariant = _ref.spinnerVariant,\n          spinnerSmall = _ref.spinnerSmall;\n      return this.$createElement(BSpinner, {\n        props: {\n          type: spinnerType,\n          variant: spinnerVariant,\n          small: spinnerSmall\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var $overlay = h();\n\n    if (this.show) {\n      var scope = this.overlayScope; // Overlay backdrop\n\n      var $background = h('div', {\n        staticClass: 'position-absolute',\n        class: [this.computedVariant, this.computedRounded],\n        style: _objectSpread({}, positionCover, {\n          opacity: this.opacity,\n          backgroundColor: this.bgColor || null,\n          backdropFilter: this.blur ? \"blur(\".concat(this.blur, \")\") : null\n        })\n      }); // Overlay content\n\n      var $content = h('div', {\n        staticClass: 'position-absolute',\n        style: this.noCenter ? _objectSpread({}, positionCover) : {\n          top: '50%',\n          left: '50%',\n          transform: 'translateX(-50%) translateY(-50%)'\n        }\n      }, [this.normalizeSlot('overlay', scope) || this.defaultOverlayFn(scope)]); // Overlay positioning\n\n      $overlay = h(this.overlayTag, {\n        key: 'overlay',\n        staticClass: 'b-overlay',\n        class: {\n          'position-absolute': !this.noWrap || this.noWrap && !this.fixed,\n          'position-fixed': this.noWrap && this.fixed\n        },\n        style: _objectSpread({}, positionCover, {\n          zIndex: this.zIndex || 10\n        })\n      }, [$background, $content]);\n    } // Wrap in a fade transition\n\n\n    $overlay = h(BVTransition, {\n      props: {\n        noFade: this.noFade,\n        appear: true\n      },\n      on: {\n        'after-enter': function afterEnter() {\n          return _this.$emit('shown');\n        },\n        'after-leave': function afterLeave() {\n          return _this.$emit('hidden');\n        }\n      }\n    }, [$overlay]);\n\n    if (this.noWrap) {\n      return $overlay;\n    }\n\n    return h(this.wrapTag, {\n      staticClass: 'b-overlay-wrap position-relative',\n      attrs: {\n        'aria-busy': this.show ? 'true' : null\n      }\n    }, this.noWrap ? [$overlay] : [this.normalizeSlot('default'), $overlay]);\n  }\n});","import { BOverlay } from './overlay';\nimport { pluginFactory } from '../../utils/plugins';\nvar OverlayPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BOverlay: BOverlay\n  }\n});\nexport { OverlayPlugin, BOverlay };","/**\n * @param {number} length\n * @return {Array}\n */\nvar range = function range(length) {\n  return Array.apply(null, {\n    length: length\n  });\n};\n\nexport default range;","import KeyCodes from '../utils/key-codes';\nimport range from '../utils/range';\nimport { isVisible, isDisabled, selectAll, getAttr } from '../utils/dom';\nimport { isFunction, isNull } from '../utils/inspect';\nimport { toInteger } from '../utils/number';\nimport { toString } from '../utils/string';\nimport { warn } from '../utils/warn';\nimport normalizeSlotMixin from '../mixins/normalize-slot';\nimport { BLink } from '../components/link/link'; // Common props, computed, data, render function, and methods\n// for `<b-pagination>` and `<b-pagination-nav>`\n// --- Constants ---\n// Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // --- Helper methods ---\n// Make an array of N to N+X\n\nvar makePageArray = function makePageArray(startNumber, numberOfPages) {\n  return range(numberOfPages).map(function (val, i) {\n    return {\n      number: startNumber + i,\n      classes: null\n    };\n  });\n}; // Sanitize the provided limit value (converting to a number)\n\n\nvar sanitizeLimit = function sanitizeLimit(val) {\n  var limit = toInteger(val) || 1;\n  return limit < 1 ? DEFAULT_LIMIT : limit;\n}; // Sanitize the provided current page number (converting to a number)\n\n\nvar sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n  var page = toInteger(val) || 1;\n  return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n}; // Links don't normally respond to SPACE, so we add that\n// functionality via this handler\n\n\nvar onSpaceKey = function onSpaceKey(evt) {\n  if (evt.keyCode === KeyCodes.SPACE) {\n    evt.preventDefault(); // Stop page from scrolling\n\n    evt.stopImmediatePropagation();\n    evt.stopPropagation(); // Trigger the click event on the link\n\n    evt.currentTarget.click();\n    return false;\n  }\n}; // --- Props ---\n\n\nexport var props = {\n  disabled: {\n    type: Boolean,\n    default: false\n  },\n  value: {\n    type: [Number, String],\n    default: null,\n    validator: function validator(value)\n    /* istanbul ignore next */\n    {\n      var number = toInteger(value);\n\n      if (!isNull(value) && (isNaN(number) || number < 1)) {\n        warn('\"v-model\" value must be a number greater than \"0\"', 'BPagination');\n        return false;\n      }\n\n      return true;\n    }\n  },\n  limit: {\n    type: [Number, String],\n    default: DEFAULT_LIMIT,\n    validator: function validator(value)\n    /* istanbul ignore next */\n    {\n      var number = toInteger(value);\n\n      if (isNaN(number) || number < 1) {\n        warn('Prop \"limit\" must be a number greater than \"0\"', 'BPagination');\n        return false;\n      }\n\n      return true;\n    }\n  },\n  align: {\n    type: String,\n    default: 'left'\n  },\n  pills: {\n    type: Boolean,\n    default: false\n  },\n  hideGotoEndButtons: {\n    type: Boolean,\n    default: false\n  },\n  ariaLabel: {\n    type: String,\n    default: 'Pagination'\n  },\n  labelFirstPage: {\n    type: String,\n    default: 'Go to first page'\n  },\n  firstText: {\n    type: String,\n    default: \"\\xAB\" // '«'\n\n  },\n  firstNumber: {\n    type: Boolean,\n    default: false\n  },\n  firstClass: {\n    type: [String, Array, Object],\n    default: null\n  },\n  labelPrevPage: {\n    type: String,\n    default: 'Go to previous page'\n  },\n  prevText: {\n    type: String,\n    default: \"\\u2039\" // '‹'\n\n  },\n  prevClass: {\n    type: [String, Array, Object],\n    default: null\n  },\n  labelNextPage: {\n    type: String,\n    default: 'Go to next page'\n  },\n  nextText: {\n    type: String,\n    default: \"\\u203A\" // '›'\n\n  },\n  nextClass: {\n    type: [String, Array, Object],\n    default: null\n  },\n  labelLastPage: {\n    type: String,\n    default: 'Go to last page'\n  },\n  lastText: {\n    type: String,\n    default: \"\\xBB\" // '»'\n\n  },\n  lastNumber: {\n    type: Boolean,\n    default: false\n  },\n  lastClass: {\n    type: [String, Array, Object],\n    default: null\n  },\n  labelPage: {\n    type: [String, Function],\n    default: 'Go to page'\n  },\n  pageClass: {\n    type: [String, Array, Object],\n    default: null\n  },\n  hideEllipsis: {\n    type: Boolean,\n    default: false\n  },\n  ellipsisText: {\n    type: String,\n    default: \"\\u2026\" // '…'\n\n  },\n  ellipsisClass: {\n    type: [String, Array, Object],\n    default: null\n  }\n}; // @vue/component\n\nexport default {\n  mixins: [normalizeSlotMixin],\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: props,\n  data: function data() {\n    var curr = toInteger(this.value);\n    return {\n      // -1 signifies no page initially selected\n      currentPage: curr > 0 ? curr : -1,\n      localNumberOfPages: 1,\n      localLimit: DEFAULT_LIMIT\n    };\n  },\n  computed: {\n    btnSize: function btnSize() {\n      return this.size ? \"pagination-\".concat(this.size) : '';\n    },\n    alignment: function alignment() {\n      var align = this.align;\n\n      if (align === 'center') {\n        return 'justify-content-center';\n      } else if (align === 'end' || align === 'right') {\n        return 'justify-content-end';\n      } else if (align === 'fill') {\n        // The page-items will also have 'flex-fill' added\n        // We add text centering to make the button appearance better in fill mode\n        return 'text-center';\n      }\n\n      return '';\n    },\n    styleClass: function styleClass() {\n      return this.pills ? 'b-pagination-pills' : '';\n    },\n    computedCurrentPage: function computedCurrentPage() {\n      return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n    },\n    paginationParams: function paginationParams() {\n      // Determine if we should show the the ellipsis\n      var limit = this.localLimit;\n      var numberOfPages = this.localNumberOfPages;\n      var currentPage = this.computedCurrentPage;\n      var hideEllipsis = this.hideEllipsis;\n      var firstNumber = this.firstNumber;\n      var lastNumber = this.lastNumber;\n      var showFirstDots = false;\n      var showLastDots = false;\n      var numberOfLinks = limit;\n      var startNumber = 1;\n\n      if (numberOfPages <= limit) {\n        // Special case: Less pages available than the limit of displayed pages\n        numberOfLinks = numberOfPages;\n      } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n        if (!hideEllipsis || lastNumber) {\n          showLastDots = true;\n          numberOfLinks = limit - (firstNumber ? 0 : 1);\n        }\n\n        numberOfLinks = Math.min(numberOfLinks, limit);\n      } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n        if (!hideEllipsis || firstNumber) {\n          showFirstDots = true;\n          numberOfLinks = limit - (lastNumber ? 0 : 1);\n        }\n\n        startNumber = numberOfPages - numberOfLinks + 1;\n      } else {\n        // We are somewhere in the middle of the page list\n        if (limit > ELLIPSIS_THRESHOLD) {\n          numberOfLinks = limit - 2;\n          showFirstDots = !!(!hideEllipsis || firstNumber);\n          showLastDots = !!(!hideEllipsis || lastNumber);\n        }\n\n        startNumber = currentPage - Math.floor(numberOfLinks / 2);\n      } // Sanity checks\n\n      /* istanbul ignore if */\n\n\n      if (startNumber < 1) {\n        startNumber = 1;\n        showFirstDots = false;\n      } else if (startNumber > numberOfPages - numberOfLinks) {\n        startNumber = numberOfPages - numberOfLinks + 1;\n        showLastDots = false;\n      }\n\n      if (showFirstDots && firstNumber && startNumber < 4) {\n        numberOfLinks = numberOfLinks + 2;\n        startNumber = 1;\n        showFirstDots = false;\n      }\n\n      var lastPageNumber = startNumber + numberOfLinks - 1;\n\n      if (showLastDots && lastNumber && lastPageNumber > numberOfPages - 3) {\n        numberOfLinks = numberOfLinks + (lastPageNumber === numberOfPages - 2 ? 2 : 3);\n        showLastDots = false;\n      } // Special handling for lower limits (where ellipsis are never shown)\n\n\n      if (limit <= ELLIPSIS_THRESHOLD) {\n        if (firstNumber && startNumber === 1) {\n          numberOfLinks = Math.min(numberOfLinks + 1, numberOfPages, limit + 1);\n        } else if (lastNumber && numberOfPages === startNumber + numberOfLinks - 1) {\n          startNumber = Math.max(startNumber - 1, 1);\n          numberOfLinks = Math.min(numberOfPages - startNumber + 1, numberOfPages, limit + 1);\n        }\n      }\n\n      numberOfLinks = Math.min(numberOfLinks, numberOfPages - startNumber + 1);\n      return {\n        showFirstDots: showFirstDots,\n        showLastDots: showLastDots,\n        numberOfLinks: numberOfLinks,\n        startNumber: startNumber\n      };\n    },\n    pageList: function pageList() {\n      // Generates the pageList array\n      var _this$paginationParam = this.paginationParams,\n          numberOfLinks = _this$paginationParam.numberOfLinks,\n          startNumber = _this$paginationParam.startNumber;\n      var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n      var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n      // So add classes to page links to hide them for XS breakpoint\n      // Note: Ellipsis will also be hidden on XS screens\n      // TODO: Make this visual limit configurable based on breakpoint(s)\n\n      if (pages.length > 3) {\n        var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n        var classes = 'bv-d-xs-down-none';\n\n        if (idx === 0) {\n          // Keep leftmost 3 buttons visible when current page is first page\n          for (var i = 3; i < pages.length; i++) {\n            pages[i].classes = classes;\n          }\n        } else if (idx === pages.length - 1) {\n          // Keep rightmost 3 buttons visible when current page is last page\n          for (var _i = 0; _i < pages.length - 3; _i++) {\n            pages[_i].classes = classes;\n          }\n        } else {\n          // Hide all except current page, current page - 1 and current page + 1\n          for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n            // hide some left button(s)\n            pages[_i2].classes = classes;\n          }\n\n          for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n            // hide some right button(s)\n            pages[_i3].classes = classes;\n          }\n        }\n      }\n\n      return pages;\n    }\n  },\n  watch: {\n    value: function value(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n      }\n    },\n    currentPage: function currentPage(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        // Emit null if no page selected\n        this.$emit('input', newValue > 0 ? newValue : null);\n      }\n    },\n    limit: function limit(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.localLimit = sanitizeLimit(newValue);\n      }\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    // Set our default values in data\n    this.localLimit = sanitizeLimit(this.limit);\n    this.$nextTick(function () {\n      // Sanity check\n      _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n    });\n  },\n  methods: {\n    handleKeyNav: function handleKeyNav(evt) {\n      var keyCode = evt.keyCode,\n          shiftKey = evt.shiftKey;\n      /* istanbul ignore if */\n\n      if (this.isNav) {\n        // We disable left/right keyboard navigation in `<b-pagination-nav>`\n        return;\n      }\n\n      if (keyCode === KeyCodes.LEFT || keyCode === KeyCodes.UP) {\n        evt.preventDefault();\n        shiftKey ? this.focusFirst() : this.focusPrev();\n      } else if (keyCode === KeyCodes.RIGHT || keyCode === KeyCodes.DOWN) {\n        evt.preventDefault();\n        shiftKey ? this.focusLast() : this.focusNext();\n      }\n    },\n    getButtons: function getButtons() {\n      // Return only buttons that are visible\n      return selectAll('button.page-link, a.page-link', this.$el).filter(function (btn) {\n        return isVisible(btn);\n      });\n    },\n    setBtnFocus: function setBtnFocus(btn) {\n      btn.focus();\n    },\n    focusCurrent: function focusCurrent() {\n      var _this2 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var btn = _this2.getButtons().find(function (el) {\n          return toInteger(getAttr(el, 'aria-posinset')) === _this2.computedCurrentPage;\n        });\n\n        if (btn && btn.focus) {\n          _this2.setBtnFocus(btn);\n        } else {\n          // Fallback if current page is not in button list\n          _this2.focusFirst();\n        }\n      });\n    },\n    focusFirst: function focusFirst() {\n      var _this3 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var btn = _this3.getButtons().find(function (el) {\n          return !isDisabled(el);\n        });\n\n        if (btn && btn.focus && btn !== document.activeElement) {\n          _this3.setBtnFocus(btn);\n        }\n      });\n    },\n    focusLast: function focusLast() {\n      var _this4 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var btn = _this4.getButtons().reverse().find(function (el) {\n          return !isDisabled(el);\n        });\n\n        if (btn && btn.focus && btn !== document.activeElement) {\n          _this4.setBtnFocus(btn);\n        }\n      });\n    },\n    focusPrev: function focusPrev() {\n      var _this5 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var buttons = _this5.getButtons();\n\n        var idx = buttons.indexOf(document.activeElement);\n\n        if (idx > 0 && !isDisabled(buttons[idx - 1]) && buttons[idx - 1].focus) {\n          _this5.setBtnFocus(buttons[idx - 1]);\n        }\n      });\n    },\n    focusNext: function focusNext() {\n      var _this6 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var buttons = _this6.getButtons();\n\n        var idx = buttons.indexOf(document.activeElement);\n        var cnt = buttons.length - 1;\n\n        if (idx < cnt && !isDisabled(buttons[idx + 1]) && buttons[idx + 1].focus) {\n          _this6.setBtnFocus(buttons[idx + 1]);\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var _this7 = this;\n\n    var buttons = [];\n    var numberOfPages = this.localNumberOfPages;\n    var pageNumbers = this.pageList.map(function (p) {\n      return p.number;\n    });\n    var disabled = this.disabled;\n    var _this$paginationParam2 = this.paginationParams,\n        showFirstDots = _this$paginationParam2.showFirstDots,\n        showLastDots = _this$paginationParam2.showLastDots;\n    var currentPage = this.computedCurrentPage;\n    var fill = this.align === 'fill'; // Used to control what type of aria attributes are rendered and wrapper\n\n    var isNav = this.isNav; // Helper function and flag\n\n    var isActivePage = function isActivePage(pageNumber) {\n      return pageNumber === currentPage;\n    };\n\n    var noCurrentPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n    var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, btnClass, pageTest, key) {\n      var isDisabled = disabled || isActivePage(pageTest) || noCurrentPage || linkTo < 1 || linkTo > numberOfPages;\n      var pageNumber = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n      var scope = {\n        disabled: isDisabled,\n        page: pageNumber,\n        index: pageNumber - 1\n      };\n      var $btnContent = _this7.normalizeSlot(btnSlot, scope) || toString(btnText) || h();\n      var $inner = h(isDisabled ? 'span' : isNav ? BLink : 'button', {\n        staticClass: 'page-link',\n        class: {\n          'flex-grow-1': !isNav && !isDisabled && fill\n        },\n        props: isDisabled || !isNav ? {} : _this7.linkProps(linkTo),\n        attrs: {\n          role: isNav ? null : 'menuitem',\n          type: isNav || isDisabled ? null : 'button',\n          tabindex: isDisabled || isNav ? null : '-1',\n          'aria-label': ariaLabel,\n          'aria-controls': _this7.ariaControls || null,\n          'aria-disabled': isDisabled ? 'true' : null\n        },\n        on: isDisabled ? {} : {\n          '!click': function click(evt) {\n            _this7.onClick(linkTo, evt);\n          },\n          keydown: onSpaceKey\n        }\n      }, [$btnContent]);\n      return h('li', {\n        key: key,\n        staticClass: 'page-item',\n        class: [{\n          disabled: isDisabled,\n          'flex-fill': fill,\n          'd-flex': fill && !isNav && !isDisabled\n        }, btnClass],\n        attrs: {\n          role: isNav ? null : 'presentation',\n          'aria-hidden': isDisabled ? 'true' : null\n        }\n      }, [$inner]);\n    }; // Ellipsis factory\n\n\n    var makeEllipsis = function makeEllipsis(isLast) {\n      return h('li', {\n        key: \"ellipsis-\".concat(isLast ? 'last' : 'first'),\n        staticClass: 'page-item',\n        class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : '', _this7.ellipsisClass],\n        attrs: {\n          role: 'separator'\n        }\n      }, [h('span', {\n        staticClass: 'page-link'\n      }, [_this7.normalizeSlot('ellipsis-text') || toString(_this7.ellipsisText) || h()])]);\n    }; // Page button factory\n\n\n    var makePageButton = function makePageButton(page, idx) {\n      var active = isActivePage(page.number) && !noCurrentPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n      var tabIndex = disabled ? null : active || noCurrentPage && idx === 0 ? '0' : '-1';\n      var attrs = {\n        role: isNav ? null : 'menuitemradio',\n        type: isNav || disabled ? null : 'button',\n        'aria-disabled': disabled ? 'true' : null,\n        'aria-controls': _this7.ariaControls || null,\n        'aria-label': isFunction(_this7.labelPage) ? _this7.labelPage(page.number) : \"\".concat(_this7.labelPage, \" \").concat(page.number),\n        'aria-checked': isNav ? null : active ? 'true' : 'false',\n        'aria-current': isNav && active ? 'page' : null,\n        'aria-posinset': page.number,\n        'aria-setsize': numberOfPages,\n        // ARIA \"roving tabindex\" method (except in isNav mode)\n        tabindex: isNav ? null : tabIndex\n      };\n      var btnContent = toString(_this7.makePage(page.number));\n      var scope = {\n        page: page.number,\n        index: page.number - 1,\n        content: btnContent,\n        active: active,\n        disabled: disabled\n      };\n      var $inner = h(disabled ? 'span' : isNav ? BLink : 'button', {\n        props: disabled || !isNav ? {} : _this7.linkProps(page.number),\n        staticClass: 'page-link',\n        class: {\n          'flex-grow-1': !isNav && !disabled && fill\n        },\n        attrs: attrs,\n        on: disabled ? {} : {\n          '!click': function click(evt) {\n            _this7.onClick(page.number, evt);\n          },\n          keydown: onSpaceKey\n        }\n      }, [_this7.normalizeSlot('page', scope) || btnContent]);\n      return h('li', {\n        key: \"page-\".concat(page.number),\n        staticClass: 'page-item',\n        class: [{\n          disabled: disabled,\n          active: active,\n          'flex-fill': fill,\n          'd-flex': fill && !isNav && !disabled\n        }, page.classes, _this7.pageClass],\n        attrs: {\n          role: isNav ? null : 'presentation'\n        }\n      }, [$inner]);\n    }; // Goto first page button\n    // Don't render button when `hideGotoEndButtons` or `firstNumber` is set\n\n\n    var $firstPageBtn = h();\n\n    if (!this.firstNumber && !this.hideGotoEndButtons) {\n      $firstPageBtn = makeEndBtn(1, this.labelFirstPage, 'first-text', this.firstText, this.firstClass, 1, 'pagination-goto-first');\n    }\n\n    buttons.push($firstPageBtn); // Goto previous page button\n\n    buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, 'prev-text', this.prevText, this.prevClass, 1, 'pagination-goto-prev')); // Show first (1) button?\n\n    buttons.push(this.firstNumber && pageNumbers[0] !== 1 ? makePageButton({\n      number: 1\n    }, 0) : h()); // First ellipsis\n\n    buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual page links\n\n    this.pageList.forEach(function (page, idx) {\n      var offset = showFirstDots && _this7.firstNumber && pageNumbers[0] !== 1 ? 1 : 0;\n      buttons.push(makePageButton(page, idx + offset));\n    }); // Last ellipsis\n\n    buttons.push(showLastDots ? makeEllipsis(true) : h()); // Show last page button?\n\n    buttons.push(this.lastNumber && pageNumbers[pageNumbers.length - 1] !== numberOfPages ? makePageButton({\n      number: numberOfPages\n    }, -1) : h()); // Goto next page button\n\n    buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, 'next-text', this.nextText, this.nextClass, numberOfPages, 'pagination-goto-next')); // Goto last page button\n    // Don't render button when `hideGotoEndButtons` or `lastNumber` is set\n\n    var $lastPageBtn = h();\n\n    if (!this.lastNumber && !this.hideGotoEndButtons) {\n      $lastPageBtn = makeEndBtn(numberOfPages, this.labelLastPage, 'last-text', this.lastText, this.lastClass, numberOfPages, 'pagination-goto-last');\n    }\n\n    buttons.push($lastPageBtn); // Assemble the pagination buttons\n\n    var $pagination = h('ul', {\n      ref: 'ul',\n      staticClass: 'pagination',\n      class: ['b-pagination', this.btnSize, this.alignment, this.styleClass],\n      attrs: {\n        role: isNav ? null : 'menubar',\n        'aria-disabled': disabled ? 'true' : 'false',\n        'aria-label': isNav ? null : this.ariaLabel || null\n      },\n      // We disable keyboard left/right nav when `<b-pagination-nav>`\n      on: isNav ? {} : {\n        keydown: this.handleKeyNav\n      }\n    }, buttons); // If we are `<b-pagination-nav>`, wrap in `<nav>` wrapper\n\n    if (isNav) {\n      return h('nav', {\n        attrs: {\n          'aria-disabled': disabled ? 'true' : null,\n          'aria-hidden': disabled ? 'true' : 'false',\n          'aria-label': isNav ? this.ariaLabel || null : null\n        }\n      }, [$pagination]);\n    }\n\n    return $pagination;\n  }\n};","import Vue from '../../utils/vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { isVisible } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport paginationMixin from '../../mixins/pagination'; // --- Constants ---\n\nvar NAME = 'BPagination';\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0;\nvar props = {\n  size: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'size');\n    }\n  },\n  perPage: {\n    type: [Number, String],\n    default: DEFAULT_PER_PAGE\n  },\n  totalRows: {\n    type: [Number, String],\n    default: DEFAULT_TOTAL_ROWS\n  },\n  ariaControls: {\n    type: String,\n    default: null\n  }\n}; // --- Helper functions ---\n// Sanitize the provided per page number (converting to a number)\n\nvar sanitizePerPage = function sanitizePerPage(val) {\n  var perPage = toInteger(val) || DEFAULT_PER_PAGE;\n  return perPage < 1 ? 1 : perPage;\n}; // Sanitize the provided total rows number (converting to a number)\n\n\nvar sanitizeTotalRows = function sanitizeTotalRows(val) {\n  var totalRows = toInteger(val) || DEFAULT_TOTAL_ROWS;\n  return totalRows < 0 ? 0 : totalRows;\n}; // The render function is brought in via the `paginationMixin`\n// @vue/component\n\n\nexport var BPagination = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [paginationMixin],\n  props: props,\n  computed: {\n    numberOfPages: function numberOfPages() {\n      var result = Math.ceil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n      return result < 1 ? 1 : result;\n    },\n    pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n      // Used for watching changes to `perPage` and `numberOfPages`\n      return {\n        perPage: sanitizePerPage(this.perPage),\n        totalRows: sanitizeTotalRows(this.totalRows),\n        numberOfPages: this.numberOfPages\n      };\n    }\n  },\n  watch: {\n    pageSizeNumberOfPages: function pageSizeNumberOfPages(newVal, oldVal) {\n      if (!isUndefinedOrNull(oldVal)) {\n        if (newVal.perPage !== oldVal.perPage && newVal.totalRows === oldVal.totalRows) {\n          // If the page size changes, reset to page 1\n          this.currentPage = 1;\n        } else if (newVal.numberOfPages !== oldVal.numberOfPages && this.currentPage > newVal.numberOfPages) {\n          // If `numberOfPages` changes and is less than\n          // the `currentPage` number, reset to page 1\n          this.currentPage = 1;\n        }\n      }\n\n      this.localNumberOfPages = newVal.numberOfPages;\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    // Set the initial page count\n    this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n    var currentPage = toInteger(this.value) || 0;\n\n    if (currentPage > 0) {\n      this.currentPage = currentPage;\n    } else {\n      this.$nextTick(function () {\n        // If this value parses to NaN or a value less than 1\n        // Trigger an initial emit of 'null' if no page specified\n        _this.currentPage = 0;\n      });\n    }\n  },\n  mounted: function mounted() {\n    // Set the initial page count\n    this.localNumberOfPages = this.numberOfPages;\n  },\n  methods: {\n    // These methods are used by the render function\n    onClick: function onClick(num, evt) {\n      var _this2 = this;\n\n      // Handle edge cases where number of pages has changed (i.e. if perPage changes)\n      // This should normally not happen, but just in case.\n      if (num > this.numberOfPages) {\n        /* istanbul ignore next */\n        num = this.numberOfPages;\n      } else if (num < 1) {\n        /* istanbul ignore next */\n        num = 1;\n      } // Update the v-model\n\n\n      this.currentPage = num; // Emit event triggered by user interaction\n\n      this.$emit('change', this.currentPage);\n      this.$nextTick(function () {\n        // Keep the current button focused if possible\n        var target = evt.target;\n\n        if (isVisible(target) && _this2.$el.contains(target) && target.focus) {\n          target.focus();\n        } else {\n          _this2.focusCurrent();\n        }\n      });\n    },\n    makePage: function makePage(pageNum) {\n      return pageNum;\n    },\n    linkProps: function linkProps() {\n      // No props, since we render a plain button\n\n      /* istanbul ignore next */\n      return {};\n    }\n  }\n});","import { BPagination } from './pagination';\nimport { pluginFactory } from '../../utils/plugins';\nvar PaginationPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BPagination: BPagination\n  }\n});\nexport { PaginationPlugin, BPagination };","import Vue from '../../utils/vue';\nimport looseEqual from '../../utils/loose-equal';\nimport { getComponentConfig } from '../../utils/config';\nimport { requestAF } from '../../utils/dom';\nimport { isBrowser } from '../../utils/env';\nimport { isArray, isUndefined, isFunction, isObject } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { computeHref, parseQuery } from '../../utils/router';\nimport { toString } from '../../utils/string';\nimport { warn } from '../../utils/warn';\nimport paginationMixin from '../../mixins/pagination';\nvar NAME = 'BPaginationNav'; // Sanitize the provided number of pages (converting to a number)\n\nexport var sanitizeNumberOfPages = function sanitizeNumberOfPages(value) {\n  var numberOfPages = toInteger(value) || 1;\n  return numberOfPages < 1 ? 1 : numberOfPages;\n};\nvar props = {\n  size: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'size');\n    }\n  },\n  numberOfPages: {\n    type: [Number, String],\n    default: 1,\n    validator: function validator(value)\n    /* istanbul ignore next */\n    {\n      var num = toInteger(value);\n\n      if (isNaN(num) || num < 1) {\n        warn('Prop \"number-of-pages\" must be a number greater than \"0\"', NAME);\n        return false;\n      }\n\n      return true;\n    }\n  },\n  baseUrl: {\n    type: String,\n    default: '/'\n  },\n  useRouter: {\n    type: Boolean,\n    default: false\n  },\n  linkGen: {\n    type: Function,\n    default: null\n  },\n  pageGen: {\n    type: Function,\n    default: null\n  },\n  pages: {\n    // Optional array of page links\n    type: Array,\n    default: null\n  },\n  noPageDetect: {\n    // Disable auto page number detection if true\n    type: Boolean,\n    default: false\n  },\n  // router-link specific props\n  activeClass: {\n    type: String // default: undefined\n\n  },\n  exact: {\n    type: Boolean,\n    default: false\n  },\n  exactActiveClass: {\n    type: String // default: undefined\n\n  },\n  // nuxt-link specific prop(s)\n  noPrefetch: {\n    type: Boolean,\n    default: false\n  }\n}; // The render function is brought in via the pagination mixin\n// @vue/component\n\nexport var BPaginationNav = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [paginationMixin],\n  props: props,\n  computed: {\n    // Used by render function to trigger wrapping in '<nav>' element\n    isNav: function isNav() {\n      return true;\n    },\n    computedValue: function computedValue() {\n      // Returns the value prop as a number or `null` if undefined or < 1\n      var val = toInteger(this.value);\n      return isNaN(val) || val < 1 ? null : val;\n    }\n  },\n  watch: {\n    numberOfPages: function numberOfPages() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        _this.setNumberOfPages();\n      });\n    },\n    pages: function pages() {\n      var _this2 = this;\n\n      this.$nextTick(function () {\n        _this2.setNumberOfPages();\n      });\n    }\n  },\n  created: function created() {\n    this.setNumberOfPages();\n  },\n  mounted: function mounted() {\n    var _this3 = this;\n\n    if (this.$router) {\n      // We only add the watcher if vue router is detected\n      this.$watch('$route', function () {\n        _this3.$nextTick(function () {\n          requestAF(function () {\n            _this3.guessCurrentPage();\n          });\n        });\n      });\n    }\n  },\n  methods: {\n    setNumberOfPages: function setNumberOfPages() {\n      var _this4 = this;\n\n      if (isArray(this.pages) && this.pages.length > 0) {\n        this.localNumberOfPages = this.pages.length;\n      } else {\n        this.localNumberOfPages = sanitizeNumberOfPages(this.numberOfPages);\n      }\n\n      this.$nextTick(function () {\n        _this4.guessCurrentPage();\n      });\n    },\n    onClick: function onClick(pageNum, evt) {\n      var _this5 = this;\n\n      // Dont do anything if clicking the current active page\n      if (pageNum === this.currentPage) {\n        return;\n      }\n\n      requestAF(function () {\n        // Update the v-model\n        // Done in in requestAF() to allow browser to complete the\n        // native browser click handling of a link\n        _this5.currentPage = pageNum;\n\n        _this5.$emit('change', pageNum);\n      });\n      this.$nextTick(function () {\n        // Done in a nextTick() to ensure rendering complete\n        try {\n          // Emulate native link click page reloading behaviour by blurring the\n          // paginator and returning focus to the document\n          var target = evt.currentTarget || evt.target;\n          target.blur();\n        } catch (e) {}\n      });\n    },\n    getPageInfo: function getPageInfo(pageNum) {\n      if (!isArray(this.pages) || this.pages.length === 0 || isUndefined(this.pages[pageNum - 1])) {\n        var link = \"\".concat(this.baseUrl).concat(pageNum);\n        return {\n          link: this.useRouter ? {\n            path: link\n          } : link,\n          text: toString(pageNum)\n        };\n      }\n\n      var info = this.pages[pageNum - 1];\n\n      if (isObject(info)) {\n        var _link = info.link;\n        return {\n          // Normalize link for router use\n          link: isObject(_link) ? _link : this.useRouter ? {\n            path: _link\n          } : _link,\n          // Make sure text has a value\n          text: toString(info.text || pageNum)\n        };\n      } else {\n        return {\n          link: toString(info),\n          text: toString(pageNum)\n        };\n      }\n    },\n    makePage: function makePage(pageNum) {\n      var info = this.getPageInfo(pageNum);\n\n      if (this.pageGen && isFunction(this.pageGen)) {\n        return this.pageGen(pageNum, info);\n      }\n\n      return info.text;\n    },\n    makeLink: function makeLink(pageNum) {\n      var info = this.getPageInfo(pageNum);\n\n      if (this.linkGen && isFunction(this.linkGen)) {\n        return this.linkGen(pageNum, info);\n      }\n\n      return info.link;\n    },\n    linkProps: function linkProps(pageNum) {\n      var link = this.makeLink(pageNum);\n      var props = {\n        target: this.target || null,\n        rel: this.rel || null,\n        disabled: this.disabled,\n        // The following props are only used if BLink detects router\n        exact: this.exact,\n        activeClass: this.activeClass,\n        exactActiveClass: this.exactActiveClass,\n        append: this.append,\n        replace: this.replace,\n        // nuxt-link specific prop\n        noPrefetch: this.noPrefetch\n      };\n\n      if (this.useRouter || isObject(link)) {\n        props.to = link;\n      } else {\n        props.href = link;\n      }\n\n      return props;\n    },\n    resolveLink: function resolveLink() {\n      var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      // Given a to (or href string), convert to normalized route-like structure\n      // Works only client side!!\n      var link;\n\n      try {\n        // Convert the `to` to a HREF via a temporary `a` tag\n        link = document.createElement('a');\n        link.href = computeHref({\n          to: to\n        }, 'a', '/', '/'); // We need to add the anchor to the document to make sure the\n        // `pathname` is correctly detected in any browser (i.e. IE)\n\n        document.body.appendChild(link); // Once href is assigned, the link will be normalized to the full URL bits\n\n        var _link2 = link,\n            pathname = _link2.pathname,\n            hash = _link2.hash,\n            search = _link2.search; // Remove link from document\n\n        document.body.removeChild(link); // Return the location in a route-like object\n\n        return {\n          path: pathname,\n          hash: hash,\n          query: parseQuery(search)\n        };\n      } catch (e) {\n        /* istanbul ignore next */\n        try {\n          link && link.parentNode && link.parentNode.removeChild(link);\n        } catch (e) {}\n        /* istanbul ignore next */\n\n\n        return {};\n      }\n    },\n    resolveRoute: function resolveRoute() {\n      var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n      // Given a to (or href string), convert to normalized route location structure\n      // works only when router available!!\n      try {\n        var route = this.$router.resolve(to, this.$route).route;\n        return {\n          path: route.path,\n          hash: route.hash,\n          query: route.query\n        };\n      } catch (e) {\n        /* istanbul ignore next */\n        return {};\n      }\n    },\n    guessCurrentPage: function guessCurrentPage() {\n      var guess = this.computedValue;\n      var $router = this.$router;\n      var $route = this.$route; // This section only occurs if we are client side, or server-side with $router\n\n      /* istanbul ignore else */\n\n      if (!this.noPageDetect && !guess && (isBrowser || !isBrowser && $router)) {\n        // Current route (if router available)\n        var currRoute = $router && $route ? {\n          path: $route.path,\n          hash: $route.hash,\n          query: $route.query\n        } : {}; // Current page full HREF (if client side). Can't be done as a computed prop!\n\n        var loc = isBrowser ? window.location || document.location : null;\n        var currLink = loc ? {\n          path: loc.pathname,\n          hash: loc.hash,\n          query: parseQuery(loc.search)\n        } : {}; // Loop through the possible pages looking for a match until found\n\n        for (var page = 1; !guess && page <= this.localNumberOfPages; page++) {\n          var to = this.makeLink(page);\n\n          if ($router && (isObject(to) || this.useRouter)) {\n            // Resolve the page via the $router\n            guess = looseEqual(this.resolveRoute(to), currRoute) ? page : null;\n          } else if (isBrowser) {\n            // If no $router available (or !this.useRouter when `to` is a string)\n            // we compare using parsed URIs\n            guess = looseEqual(this.resolveLink(to), currLink) ? page : null;\n          } else {\n            // probably SSR, but no $router so we can't guess, so lets break out of\n            // the loop early\n\n            /* istanbul ignore next */\n            guess = -1;\n          }\n        }\n      } // We set currentPage to 0 to trigger an $emit('input', null)\n      // As the default for this.currentPage is -1 when no value is specified\n      // And valid page numbers are greater than 0\n\n\n      this.currentPage = guess > 0 ? guess : 0;\n    }\n  }\n});","import { BPaginationNav } from './pagination-nav';\nimport { pluginFactory } from '../../utils/plugins';\nvar PaginationNavPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BPaginationNav: BPaginationNav\n  }\n});\nexport { PaginationNavPlugin, BPaginationNav };","// Base on-demand component for tooltip / popover templates\n//\n// Currently:\n//   Responsible for positioning and transitioning the template\n//   Templates are only instantiated when shown, and destroyed when hidden\n//\nimport Vue from '../../../utils/vue';\nimport Popper from 'popper.js';\nimport { getCS, select } from '../../../utils/dom';\nimport { HTMLElement, SVGElement } from '../../../utils/safe-types';\nimport { BVTransition } from '../../../utils/bv-transition';\nvar NAME = 'BVPopper';\nvar AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left',\n  TOPLEFT: 'top',\n  TOPRIGHT: 'top',\n  RIGHTTOP: 'right',\n  RIGHTBOTTOM: 'right',\n  BOTTOMLEFT: 'bottom',\n  BOTTOMRIGHT: 'bottom',\n  LEFTTOP: 'left',\n  LEFTBOTTOM: 'left'\n};\nvar OffsetMap = {\n  AUTO: 0,\n  TOPLEFT: -1,\n  TOP: 0,\n  TOPRIGHT: +1,\n  RIGHTTOP: -1,\n  RIGHT: 0,\n  RIGHTBOTTOM: +1,\n  BOTTOMLEFT: -1,\n  BOTTOM: 0,\n  BOTTOMRIGHT: +1,\n  LEFTTOP: -1,\n  LEFT: 0,\n  LEFTBOTTOM: +1\n}; // @vue/component\n\nexport var BVPopper = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  props: {\n    target: {\n      // Element that the tooltip/popover is positioned relative to\n      type: [HTMLElement, SVGElement],\n      default: null\n    },\n    placement: {\n      type: String,\n      default: 'top'\n    },\n    fallbackPlacement: {\n      type: [String, Array],\n      default: 'flip'\n    },\n    offset: {\n      type: Number,\n      default: 0\n    },\n    boundary: {\n      // 'scrollParent', 'viewport', 'window', or Element\n      type: [String, HTMLElement],\n      default: 'scrollParent'\n    },\n    boundaryPadding: {\n      // Tooltip/popover will try and stay away from\n      // boundary edge by this many pixels\n      type: Number,\n      default: 5\n    },\n    arrowPadding: {\n      // The minimum distance (in `px`) from the edge of the\n      // tooltip/popover that the arrow can be positioned\n      type: Number,\n      default: 6\n    }\n  },\n  data: function data() {\n    return {\n      // reactive props set by parent\n      noFade: false,\n      // State related data\n      localShow: true,\n      attachment: this.getAttachment(this.placement)\n    };\n  },\n  computed: {\n    templateType: function templateType()\n    /* istanbul ignore next */\n    {\n      // Overridden by template component\n      return 'unknown';\n    },\n    popperConfig: function popperConfig() {\n      var _this = this;\n\n      var placement = this.placement;\n      return {\n        placement: this.getAttachment(placement),\n        modifiers: {\n          offset: {\n            offset: this.getOffset(placement)\n          },\n          flip: {\n            behavior: this.fallbackPlacement\n          },\n          // `arrow.element` can also be a reference to an HTML Element\n          // maybe we should make this a `$ref` in the templates?\n          arrow: {\n            element: '.arrow'\n          },\n          preventOverflow: {\n            padding: this.boundaryPadding,\n            boundariesElement: this.boundary\n          }\n        },\n        onCreate: function onCreate(data) {\n          // Handle flipping arrow classes\n          if (data.originalPlacement !== data.placement) {\n            /* istanbul ignore next: can't test in JSDOM */\n            _this.popperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          // Handle flipping arrow classes\n          _this.popperPlacementChange(data);\n        }\n      };\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // Note: We are created on-demand, and should be guaranteed that\n    // DOM is rendered/ready by the time the created hook runs\n    this.$_popper = null; // Ensure we show as we mount\n\n    this.localShow = true; // Create popper instance before shown\n\n    this.$on('show', function (el) {\n      _this2.popperCreate(el);\n    }); // Self destruct once hidden\n\n    this.$on('hidden', function () {\n      _this2.$nextTick(_this2.$destroy);\n    }); // If parent is destroyed, ensure we are destroyed\n\n    this.$parent.$once('hook:destroyed', this.$destroy);\n  },\n  beforeMount: function beforeMount() {\n    // Ensure that the attachment position is correct before mounting\n    // as our propsData is added after `new Template({...})`\n    this.attachment = this.getAttachment(this.placement);\n  },\n  mounted: function mounted() {// TBD\n  },\n  updated: function updated() {\n    // Update popper if needed\n    // TODO: Should this be a watcher on `this.popperConfig` instead?\n    this.popperUpdate();\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.popperDestroy();\n  },\n  destroyed: function destroyed() {\n    // Make sure template is removed from DOM\n    var el = this.$el;\n    el && el.parentNode && el.parentNode.removeChild(el);\n  },\n  methods: {\n    // \"Public\" method to trigger hide template\n    hide: function hide() {\n      this.localShow = false;\n    },\n    // Private\n    getAttachment: function getAttachment(placement) {\n      return AttachmentMap[String(placement).toUpperCase()] || 'auto';\n    },\n    getOffset: function getOffset(placement) {\n      if (!this.offset) {\n        // Could set a ref for the arrow element\n        var arrow = this.$refs.arrow || select('.arrow', this.$el);\n        var arrowOffset = (parseFloat(getCS(arrow).width) || 0) + (parseFloat(this.arrowPadding) || 0);\n\n        switch (OffsetMap[String(placement).toUpperCase()] || 0) {\n          case +1:\n            /* istanbul ignore next: can't test in JSDOM */\n            return \"+50%p - \".concat(arrowOffset, \"px\");\n\n          case -1:\n            /* istanbul ignore next: can't test in JSDOM */\n            return \"-50%p + \".concat(arrowOffset, \"px\");\n\n          default:\n            return 0;\n        }\n      }\n      /* istanbul ignore next */\n\n\n      return this.offset;\n    },\n    popperCreate: function popperCreate(el) {\n      this.popperDestroy(); // We use `el` rather than `this.$el` just in case the original\n      // mountpoint root element type was changed by the template\n\n      this.$_popper = new Popper(this.target, el, this.popperConfig);\n    },\n    popperDestroy: function popperDestroy() {\n      this.$_popper && this.$_popper.destroy();\n      this.$_popper = null;\n    },\n    popperUpdate: function popperUpdate() {\n      this.$_popper && this.$_popper.scheduleUpdate();\n    },\n    popperPlacementChange: function popperPlacementChange(data) {\n      // Callback used by popper to adjust the arrow placement\n      this.attachment = this.getAttachment(data.placement);\n    },\n    renderTemplate: function renderTemplate(h)\n    /* istanbul ignore next */\n    {\n      // Will be overridden by templates\n      return h('div');\n    }\n  },\n  render: function render(h) {\n    var _this3 = this;\n\n    // Note: `show` and 'fade' classes are only appled during transition\n    return h(BVTransition, {\n      // Transitions as soon as mounted\n      props: {\n        appear: true,\n        noFade: this.noFade\n      },\n      on: {\n        // Events used by parent component/instance\n        beforeEnter: function beforeEnter(el) {\n          return _this3.$emit('show', el);\n        },\n        afterEnter: function afterEnter(el) {\n          return _this3.$emit('shown', el);\n        },\n        beforeLeave: function beforeLeave(el) {\n          return _this3.$emit('hide', el);\n        },\n        afterLeave: function afterLeave(el) {\n          return _this3.$emit('hidden', el);\n        }\n      }\n    }, [this.localShow ? this.renderTemplate(h) : h()]);\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 '../../../utils/vue';\nimport scopedStyleAttrsMixin from '../../../mixins/scoped-style-attrs';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { BVPopper } from './bv-popper';\nvar NAME = 'BVTooltipTemplate'; // @vue/component\n\nexport var BVTooltipTemplate = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  extends: BVPopper,\n  mixins: [scopedStyleAttrsMixin],\n  props: {\n    // Other non-reactive (while open) props are pulled in from BVPopper\n    id: {\n      type: String,\n      default: null\n    },\n    html: {\n      // Used only by the directive versions\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    // We use data, rather than props to ensure reactivity\n    // Parent component will directly set this data\n    return {\n      title: '',\n      content: '',\n      variant: null,\n      customClass: null,\n      interactive: true\n    };\n  },\n  computed: {\n    templateType: function templateType() {\n      return 'tooltip';\n    },\n    templateClasses: function templateClasses() {\n      var _ref;\n\n      return [(_ref = {\n        // Disables pointer events to hide the tooltip when the user\n        // hovers over its content\n        noninteractive: !this.interactive\n      }, _defineProperty(_ref, \"b-\".concat(this.templateType, \"-\").concat(this.variant), this.variant), _defineProperty(_ref, \"bs-\".concat(this.templateType, \"-\").concat(this.attachment), this.attachment), _ref), this.customClass];\n    },\n    templateAttributes: function templateAttributes() {\n      return _objectSpread({\n        id: this.id,\n        role: 'tooltip',\n        tabindex: '-1'\n      }, this.scopedStyleAttrs);\n    },\n    templateListeners: function templateListeners() {\n      var _this = this;\n\n      // Used for hover/focus trigger listeners\n      return {\n        mouseenter: function mouseenter(evt) {\n          /* istanbul ignore next: difficult to test in JSDOM */\n          _this.$emit('mouseenter', evt);\n        },\n        mouseleave: function mouseleave(evt) {\n          /* istanbul ignore next: difficult to test in JSDOM */\n          _this.$emit('mouseleave', evt);\n        },\n        focusin: function focusin(evt) {\n          /* istanbul ignore next: difficult to test in JSDOM */\n          _this.$emit('focusin', evt);\n        },\n        focusout: function focusout(evt) {\n          /* istanbul ignore next: difficult to test in JSDOM */\n          _this.$emit('focusout', evt);\n        }\n      };\n    }\n  },\n  methods: {\n    renderTemplate: function renderTemplate(h) {\n      // Title can be a scoped slot function\n      var $title = isFunction(this.title) ? this.title({}) : isUndefinedOrNull(this.title) ? h() : this.title; // Directive versions only\n\n      var domProps = this.html && !isFunction(this.title) ? {\n        innerHTML: this.title\n      } : {};\n      return h('div', {\n        staticClass: 'tooltip b-tooltip',\n        class: this.templateClasses,\n        attrs: this.templateAttributes,\n        on: this.templateListeners\n      }, [h('div', {\n        ref: 'arrow',\n        staticClass: 'arrow'\n      }), h('div', {\n        staticClass: 'tooltip-inner',\n        domProps: domProps\n      }, [$title])]);\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Tooltip \"Class\" (Built as a renderless Vue instance)\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\nimport Vue from '../../../utils/vue';\nimport getScopId from '../../../utils/get-scope-id';\nimport looseEqual from '../../../utils/loose-equal';\nimport noop from '../../../utils/noop';\nimport { arrayIncludes, concat, from as arrayFrom } from '../../../utils/array';\nimport { closest, contains, getAttr, getById, hasAttr, hasClass, isDisabled, isElement, isVisible, removeAttr, select, setAttr } from '../../../utils/dom';\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOn, eventOff, eventOnOff } from '../../../utils/events';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../../utils/inspect';\nimport { keys } from '../../../utils/object';\nimport { warn } from '../../../utils/warn';\nimport { BvEvent } from '../../../utils/bv-event.class';\nimport { BVTooltipTemplate } from './bv-tooltip-template';\nvar NAME = 'BVTooltip'; // Modal container selector for appending tooltip/popover\n\nvar MODAL_SELECTOR = '.modal-content'; // Modal `$root` hidden event\n\nvar MODAL_CLOSE_EVENT = 'bv::modal::hidden'; // For dropdown sniffing\n\nvar DROPDOWN_CLASS = 'dropdown';\nvar DROPDOWN_OPEN_SELECTOR = '.dropdown-menu.show'; // Data specific to popper and template\n// We don't use props, as we need reactivity (we can't pass reactive props)\n\nvar templateData = {\n  // Text string or Scoped slot function\n  title: '',\n  // Text string or Scoped slot function\n  content: '',\n  // String\n  variant: null,\n  // String, Array, Object\n  customClass: null,\n  // String or array of Strings (overwritten by BVPopper)\n  triggers: '',\n  // String (overwritten by BVPopper)\n  placement: 'auto',\n  // String or array of strings\n  fallbackPlacement: 'flip',\n  // Element or Component reference (or function that returns element) of\n  // the element that will have the trigger events bound, and is also\n  // default element for positioning\n  target: null,\n  // HTML ID, Element or Component reference\n  container: null,\n  // 'body'\n  // Boolean\n  noFade: false,\n  // 'scrollParent', 'viewport', 'window', Element, or Component reference\n  boundary: 'scrollParent',\n  // Tooltip/popover will try and stay away from\n  // boundary edge by this many pixels (Number)\n  boundaryPadding: 5,\n  // Arrow offset (Number)\n  offset: 0,\n  // Hover/focus delay (Number or Object)\n  delay: 0,\n  // Arrow of Tooltip/popover will try and stay away from\n  // the edge of tooltip/popover edge by this many pixels\n  arrowPadding: 6,\n  // Interactive state (Boolean)\n  interactive: true,\n  // Disabled state (Boolean)\n  disabled: false,\n  // ID to use for tooltip/popover\n  id: null,\n  // Flag used by directives only, for HTML content\n  html: false\n}; // @vue/component\n\nexport var BVTooltip = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  props: {// None\n  },\n  data: function data() {\n    return _objectSpread({}, templateData, {\n      // State management data\n      activeTrigger: {\n        // manual: false,\n        hover: false,\n        click: false,\n        focus: false\n      },\n      localShow: false\n    });\n  },\n  computed: {\n    templateType: function templateType() {\n      // Overwritten by BVPopover\n      return 'tooltip';\n    },\n    computedId: function computedId() {\n      return this.id || \"__bv_\".concat(this.templateType, \"_\").concat(this._uid, \"__\");\n    },\n    computedDelay: function computedDelay() {\n      // Normalizes delay into object form\n      var delay = {\n        show: 0,\n        hide: 0\n      };\n\n      if (isPlainObject(this.delay)) {\n        delay.show = Math.max(parseInt(this.delay.show, 10) || 0, 0);\n        delay.hide = Math.max(parseInt(this.delay.hide, 10) || 0, 0);\n      } else if (isNumber(this.delay) || isString(this.delay)) {\n        delay.show = delay.hide = Math.max(parseInt(this.delay, 10) || 0, 0);\n      }\n\n      return delay;\n    },\n    computedTriggers: function computedTriggers() {\n      // Returns the triggers in sorted array form\n      // TODO: Switch this to object form for easier lookup\n      return concat(this.triggers).filter(Boolean).join(' ').trim().toLowerCase().split(/\\s+/).sort();\n    },\n    isWithActiveTrigger: function isWithActiveTrigger() {\n      for (var trigger in this.activeTrigger) {\n        if (this.activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n    computedTemplateData: function computedTemplateData() {\n      return {\n        title: this.title,\n        content: this.content,\n        variant: this.variant,\n        customClass: this.customClass,\n        noFade: this.noFade,\n        interactive: this.interactive\n      };\n    }\n  },\n  watch: {\n    computedTriggers: function computedTriggers(newTriggers, oldTriggers) {\n      var _this = this;\n\n      // Triggers have changed, so re-register them\n\n      /* istanbul ignore next */\n      if (!looseEqual(newTriggers, oldTriggers)) {\n        this.$nextTick(function () {\n          // Disable trigger listeners\n          _this.unListen(); // Clear any active triggers that are no longer in the list of triggers\n\n\n          oldTriggers.forEach(function (trigger) {\n            if (!arrayIncludes(newTriggers, trigger)) {\n              if (_this.activeTrigger[trigger]) {\n                _this.activeTrigger[trigger] = false;\n              }\n            }\n          }); // Re-enable the trigger listeners\n\n          _this.listen();\n        });\n      }\n    },\n    computedTemplateData: function computedTemplateData() {\n      // If any of the while open reactive \"props\" change,\n      // ensure that the template updates accordingly\n      this.handleTemplateUpdate();\n    },\n    disabled: function disabled(newVal) {\n      newVal ? this.disable() : this.enable();\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // Create non-reactive properties\n    this.$_tip = null;\n    this.$_hoverTimeout = null;\n    this.$_hoverState = '';\n    this.$_visibleInterval = null;\n    this.$_enabled = !this.disabled;\n    this.$_noop = noop.bind(this); // Destroy ourselves when the parent is destroyed\n\n    if (this.$parent) {\n      this.$parent.$once('hook:beforeDestroy', this.$destroy);\n    }\n\n    this.$nextTick(function () {\n      var target = _this2.getTarget();\n\n      if (target && contains(document.body, target)) {\n        // Copy the parent's scoped style attribute\n        _this2.scopeId = getScopId(_this2.$parent); // Set up all trigger handlers and listeners\n\n        _this2.listen();\n      } else {\n        /* istanbul ignore next */\n        warn('Unable to find target element in document.', _this2.templateType);\n      }\n    });\n  },\n  updated: function updated()\n  /* istanbul ignore next */\n  {\n    // Usually called when the slots/data changes\n    this.$nextTick(this.handleTemplateUpdate);\n  },\n  deactivated: function deactivated()\n  /* istanbul ignore next */\n  {\n    // In a keepalive that has been deactivated, so hide\n    // the tooltip/popover if it is showing\n    this.forceHide();\n  },\n  beforeDestroy: function beforeDestroy()\n  /* istanbul ignore next */\n  {\n    // Remove all handler/listeners\n    this.unListen();\n    this.setWhileOpenListeners(false); // Clear any timeouts/intervals\n\n    this.clearHoverTimeout();\n    this.clearVisibilityInterval(); // Destroy the template\n\n    this.destroyTemplate();\n  },\n  methods: {\n    // --- Methods for creating and destroying the template ---\n    getTemplate: function getTemplate() {\n      // Overridden by BVPopover\n      return BVTooltipTemplate;\n    },\n    updateData: function updateData() {\n      var _this3 = this;\n\n      var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      // Method for updating popper/template data\n      // We only update data if it exists, and has not changed\n      var titleUpdated = false;\n      keys(templateData).forEach(function (prop) {\n        if (!isUndefined(data[prop]) && _this3[prop] !== data[prop]) {\n          _this3[prop] = data[prop];\n\n          if (prop === 'title') {\n            titleUpdated = true;\n          }\n        }\n      });\n\n      if (titleUpdated && this.localShow) {\n        // If the title has updated, we may need to handle the title\n        // attribute on the trigger target. We only do this while the\n        // template is open\n        this.fixTitle();\n      }\n    },\n    createTemplateAndShow: function createTemplateAndShow() {\n      // Creates the template instance and show it\n      var container = this.getContainer();\n      var Template = this.getTemplate();\n      var $tip = this.$_tip = new Template({\n        parent: this,\n        // The following is not reactive to changes in the props data\n        propsData: {\n          // These values cannot be changed while template is showing\n          id: this.computedId,\n          html: this.html,\n          placement: this.placement,\n          fallbackPlacement: this.fallbackPlacement,\n          target: this.getPlacementTarget(),\n          boundary: this.getBoundary(),\n          // Ensure the following are integers\n          offset: parseInt(this.offset, 10) || 0,\n          arrowPadding: parseInt(this.arrowPadding, 10) || 0,\n          boundaryPadding: parseInt(this.boundaryPadding, 10) || 0\n        }\n      }); // We set the initial reactive data (values that can be changed while open)\n\n      this.handleTemplateUpdate(); // Template transition phase events (handled once only)\n      // When the template has mounted, but not visibly shown yet\n\n      $tip.$once('show', this.onTemplateShow); // When the template has completed showing\n\n      $tip.$once('shown', this.onTemplateShown); // When the template has started to hide\n\n      $tip.$once('hide', this.onTemplateHide); // When the template has completed hiding\n\n      $tip.$once('hidden', this.onTemplateHidden); // When the template gets destroyed for any reason\n\n      $tip.$once('hook:destroyed', this.destroyTemplate); // Convenience events from template\n      // To save us from manually adding/removing DOM\n      // listeners to tip element when it is open\n\n      $tip.$on('focusin', this.handleEvent);\n      $tip.$on('focusout', this.handleEvent);\n      $tip.$on('mouseenter', this.handleEvent);\n      $tip.$on('mouseleave', this.handleEvent); // Mount (which triggers the `show`)\n\n      $tip.$mount(container.appendChild(document.createElement('div'))); // Template will automatically remove its markup from DOM when hidden\n    },\n    hideTemplate: function hideTemplate() {\n      // Trigger the template to start hiding\n      // The template will emit the `hide` event after this and\n      // then emit the `hidden` event once it is fully hidden\n      // The `hook:destroyed` will also be called (safety measure)\n      this.$_tip && this.$_tip.hide(); // Clear out any stragging active triggers\n\n      this.clearActiveTriggers(); // Reset the hover state\n\n      this.$_hoverState = '';\n    },\n    // Destroy the template instance and reset state\n    destroyTemplate: function destroyTemplate() {\n      this.setWhileOpenListeners(false);\n      this.clearHoverTimeout();\n      this.$_hoverState = '';\n      this.clearActiveTriggers();\n      this.localPlacementTarget = null;\n\n      try {\n        this.$_tip && this.$_tip.$destroy();\n      } catch (_unused) {}\n\n      this.$_tip = null;\n      this.removeAriaDescribedby();\n      this.restoreTitle();\n      this.localShow = false;\n    },\n    getTemplateElement: function getTemplateElement() {\n      return this.$_tip ? this.$_tip.$el : null;\n    },\n    handleTemplateUpdate: function handleTemplateUpdate() {\n      var _this4 = this;\n\n      // Update our template title/content \"props\"\n      // So that the template updates accordingly\n      var $tip = this.$_tip;\n\n      if ($tip) {\n        var props = ['title', 'content', 'variant', 'customClass', 'noFade', 'interactive']; // Only update the values if they have changed\n\n        props.forEach(function (prop) {\n          if ($tip[prop] !== _this4[prop]) {\n            $tip[prop] = _this4[prop];\n          }\n        });\n      }\n    },\n    // --- Show/Hide handlers ---\n    // Show the tooltip\n    show: function show() {\n      var target = this.getTarget();\n\n      if (!target || !contains(document.body, target) || !isVisible(target) || this.dropdownOpen() || (isUndefinedOrNull(this.title) || this.title === '') && (isUndefinedOrNull(this.content) || this.content === '')) {\n        // If trigger element isn't in the DOM or is not visible, or\n        // is on an open dropdown toggle, or has no content, then\n        // we exit without showing\n        return;\n      } // If tip already exists, exit early\n\n\n      if (this.$_tip || this.localShow) {\n        /* istanbul ignore next */\n        return;\n      } // In the process of showing\n\n\n      this.localShow = true; // Create a cancelable BvEvent\n\n      var showEvt = this.buildEvent('show', {\n        cancelable: true\n      });\n      this.emitEvent(showEvt); // Don't show if event cancelled\n\n      /* istanbul ignore next: ignore for now */\n\n      if (showEvt.defaultPrevented) {\n        // Destroy the template (if for some reason it was created)\n\n        /* istanbul ignore next */\n        this.destroyTemplate();\n        /* istanbul ignore next */\n\n        return;\n      } // Fix the title attribute on target\n\n\n      this.fixTitle(); // Set aria-describedby on target\n\n      this.addAriaDescribedby(); // Create and show the tooltip\n\n      this.createTemplateAndShow();\n    },\n    hide: function hide() {\n      var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      // Hide the tooltip\n      var tip = this.getTemplateElement();\n\n      if (!tip || !this.localShow) {\n        /* istanbul ignore next */\n        this.restoreTitle();\n        /* istanbul ignore next */\n\n        return;\n      } // Emit cancelable BvEvent 'hide'\n      // We disable cancelling if `force` is true\n\n\n      var hideEvt = this.buildEvent('hide', {\n        cancelable: !force\n      });\n      this.emitEvent(hideEvt);\n      /* istanbul ignore next: ignore for now */\n\n      if (hideEvt.defaultPrevented) {\n        // Don't hide if event cancelled\n\n        /* istanbul ignore next */\n        return;\n      } // Tell the template to hide\n\n\n      this.hideTemplate();\n    },\n    forceHide: function forceHide() {\n      // Forcefully hides/destroys the template, regardless of any active triggers\n      var tip = this.getTemplateElement();\n\n      if (!tip || !this.localShow) {\n        /* istanbul ignore next */\n        return;\n      } // Disable while open listeners/watchers\n      // This is also done in the template `hide` evt handler\n\n\n      this.setWhileOpenListeners(false); // Clear any hover enter/leave event\n\n      this.clearHoverTimeout();\n      this.$_hoverState = '';\n      this.clearActiveTriggers(); // Disable the fade animation on the template\n\n      if (this.$_tip) {\n        this.$_tip.noFade = true;\n      } // Hide the tip (with force = true)\n\n\n      this.hide(true);\n    },\n    enable: function enable() {\n      this.$_enabled = true; // Create a non-cancelable BvEvent\n\n      this.emitEvent(this.buildEvent('enabled'));\n    },\n    disable: function disable() {\n      this.$_enabled = false; // Create a non-cancelable BvEvent\n\n      this.emitEvent(this.buildEvent('disabled'));\n    },\n    // --- Handlers for template events ---\n    // When template is inserted into DOM, but not yet shown\n    onTemplateShow: function onTemplateShow() {\n      // Enable while open listeners/watchers\n      this.setWhileOpenListeners(true);\n    },\n    // When template show transition completes\n    onTemplateShown: function onTemplateShown() {\n      var prevHoverState = this.$_hoverState;\n      this.$_hoverState = '';\n\n      if (prevHoverState === 'out') {\n        this.leave(null);\n      } // Emit a non-cancelable BvEvent 'shown'\n\n\n      this.emitEvent(this.buildEvent('shown'));\n    },\n    // When template is starting to hide\n    onTemplateHide: function onTemplateHide() {\n      // Disable while open listeners/watchers\n      this.setWhileOpenListeners(false);\n    },\n    // When template has completed closing (just before it self destructs)\n    onTemplateHidden: function onTemplateHidden() {\n      // Destroy the template\n      this.destroyTemplate(); // Emit a non-cancelable BvEvent 'shown'\n\n      this.emitEvent(this.buildEvent('hidden'));\n    },\n    // --- Utility methods ---\n    getTarget: function getTarget() {\n      // Handle case where target may be a component ref\n      var target = this.target ? this.target.$el || this.target : null; // If an ID\n\n      target = isString(target) ? getById(target.replace(/^#/, '')) : target; // If a function\n\n      target = isFunction(target) ? target() : target; // If an element ref\n\n      return isElement(target) ? target : null;\n    },\n    getPlacementTarget: function getPlacementTarget() {\n      // This is the target that the tooltip will be placed on, which may not\n      // necessarily be the same element that has the trigger event listeners\n      // For now, this is the same as target\n      // TODO:\n      //   Add in child selector support\n      //   Add in visibility checks for this element\n      //   Fallback to target if not found\n      return this.getTarget();\n    },\n    getTargetId: function getTargetId() {\n      // Returns the ID of the trigger element\n      var target = this.getTarget();\n      return target && target.id ? target.id : null;\n    },\n    getContainer: function getContainer() {\n      // Handle case where container may be a component ref\n      var container = this.container ? this.container.$el || this.container : false;\n      var body = document.body;\n      var target = this.getTarget(); // If we are in a modal, we append to the modal instead\n      // of body, unless a container is specified\n      // TODO:\n      //   Template should periodically check to see if it is in dom\n      //   And if not, self destruct (if container got v-if'ed out of DOM)\n      //   Or this could possibly be part of the visibility check\n\n      return container === false ? closest(MODAL_SELECTOR, target) || body : isString(container) ? getById(container.replace(/^#/, '')) || body : body;\n    },\n    getBoundary: function getBoundary() {\n      return this.boundary ? this.boundary.$el || this.boundary : 'scrollParent';\n    },\n    isInModal: function isInModal() {\n      var target = this.getTarget();\n      return target && closest(MODAL_SELECTOR, target);\n    },\n    isDropdown: function isDropdown() {\n      // Returns true if trigger is a dropdown\n      var target = this.getTarget();\n      return target && hasClass(target, DROPDOWN_CLASS);\n    },\n    dropdownOpen: function dropdownOpen() {\n      // Returns true if trigger is a dropdown and the dropdown menu is open\n      var target = this.getTarget();\n      return this.isDropdown() && target && select(DROPDOWN_OPEN_SELECTOR, target);\n    },\n    clearHoverTimeout: function clearHoverTimeout() {\n      if (this.$_hoverTimeout) {\n        clearTimeout(this.$_hoverTimeout);\n        this.$_hoverTimeout = null;\n      }\n    },\n    clearVisibilityInterval: function clearVisibilityInterval() {\n      if (this.$_visibleInterval) {\n        clearInterval(this.$_visibleInterval);\n        this.$_visibleInterval = null;\n      }\n    },\n    clearActiveTriggers: function clearActiveTriggers() {\n      for (var trigger in this.activeTrigger) {\n        this.activeTrigger[trigger] = false;\n      }\n    },\n    addAriaDescribedby: function addAriaDescribedby() {\n      // Add aria-describedby on trigger element, without removing any other IDs\n      var target = this.getTarget();\n      var desc = getAttr(target, 'aria-describedby') || '';\n      desc = desc.split(/\\s+/).concat(this.computedId).join(' ').trim(); // Update/add aria-described by\n\n      setAttr(target, 'aria-describedby', desc);\n    },\n    removeAriaDescribedby: function removeAriaDescribedby() {\n      var _this5 = this;\n\n      // Remove aria-describedby on trigger element, without removing any other IDs\n      var target = this.getTarget();\n      var desc = getAttr(target, 'aria-describedby') || '';\n      desc = desc.split(/\\s+/).filter(function (d) {\n        return d !== _this5.computedId;\n      }).join(' ').trim(); // Update or remove aria-describedby\n\n      if (desc) {\n        /* istanbul ignore next */\n        setAttr(target, 'aria-describedby', desc);\n      } else {\n        removeAttr(target, 'aria-describedby');\n      }\n    },\n    fixTitle: function fixTitle() {\n      // If the target has a title attribute, null it out and\n      // store on data-title\n      var target = this.getTarget();\n\n      if (target && getAttr(target, 'title')) {\n        // We only update title attribute if it has a value\n        setAttr(target, 'data-original-title', getAttr(target, 'title') || '');\n        setAttr(target, 'title', '');\n      }\n    },\n    restoreTitle: function restoreTitle() {\n      // If target had a title, restore the title attribute\n      // and remove the data-title attribute\n      var target = this.getTarget();\n\n      if (target && hasAttr(target, 'data-original-title')) {\n        setAttr(target, 'title', getAttr(target, 'data-original-title') || '');\n        removeAttr(target, 'data-original-title');\n      }\n    },\n    // --- BvEvent helpers ---\n    buildEvent: function buildEvent(type) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      // Defaults to a non-cancellable event\n      return new BvEvent(type, _objectSpread({\n        cancelable: false,\n        target: this.getTarget(),\n        relatedTarget: this.getTemplateElement() || null,\n        componentId: this.computedId,\n        vueTarget: this\n      }, options));\n    },\n    emitEvent: function emitEvent(bvEvt) {\n      // Emits a BvEvent on $root and this instance\n      var evtName = bvEvt.type;\n      var $root = this.$root;\n\n      if ($root && $root.$emit) {\n        // Emit an event on $root\n        $root.$emit(\"bv::\".concat(this.templateType, \"::\").concat(evtName), bvEvt);\n      }\n\n      this.$emit(evtName, bvEvt);\n    },\n    // --- Event handler setup methods ---\n    listen: function listen() {\n      var _this6 = this;\n\n      // Enable trigger event handlers\n      var el = this.getTarget();\n\n      if (!el) {\n        /* istanbul ignore next */\n        return;\n      } // Listen for global show/hide events\n\n\n      this.setRootListener(true); // Set up our listeners on the target trigger element\n\n      this.computedTriggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          eventOn(el, 'click', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        } else if (trigger === 'focus') {\n          eventOn(el, 'focusin', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n          eventOn(el, 'focusout', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        } else if (trigger === 'blur') {\n          // Used to close $tip when element looses focus\n\n          /* istanbul ignore next */\n          eventOn(el, 'focusout', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        } else if (trigger === 'hover') {\n          eventOn(el, 'mouseenter', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n          eventOn(el, 'mouseleave', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        }\n      }, this);\n    },\n    unListen: function unListen()\n    /* istanbul ignore next */\n    {\n      var _this7 = this;\n\n      // Remove trigger event handlers\n      var events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave'];\n      var target = this.getTarget(); // Stop listening for global show/hide/enable/disable events\n\n      this.setRootListener(false); // Clear out any active target listeners\n\n      events.forEach(function (evt) {\n        target && eventOff(target, evt, _this7.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n      }, this);\n    },\n    setRootListener: function setRootListener(on) {\n      // Listen for global `bv::{hide|show}::{tooltip|popover}` hide request event\n      var $root = this.$root;\n\n      if ($root) {\n        var method = on ? '$on' : '$off';\n        var type = this.templateType;\n        $root[method](\"bv::hide::\".concat(type), this.doHide);\n        $root[method](\"bv::show::\".concat(type), this.doShow);\n        $root[method](\"bv::disable::\".concat(type), this.doDisable);\n        $root[method](\"bv::enable::\".concat(type), this.doEnable);\n      }\n    },\n    setWhileOpenListeners: function setWhileOpenListeners(on) {\n      // Events that are only registered when the template is showing\n      // Modal close events\n      this.setModalListener(on); // Dropdown open events (if we are attached to a dropdown)\n\n      this.setDropdownListener(on); // Periodic $element visibility check\n      // For handling when tip target is in <keepalive>, tabs, carousel, etc\n\n      this.visibleCheck(on); // On-touch start listeners\n\n      this.setOnTouchStartListener(on);\n    },\n    // Handler for periodic visibility check\n    visibleCheck: function visibleCheck(on) {\n      var _this8 = this;\n\n      this.clearVisibilityInterval();\n      var target = this.getTarget();\n      var tip = this.getTemplateElement();\n\n      if (on) {\n        this.$_visibleInterval = setInterval(function () {\n          if (tip && _this8.localShow && (!target.parentNode || !isVisible(target))) {\n            // Target element is no longer visible or not in DOM, so force-hide the tooltip\n            _this8.forceHide();\n          }\n        }, 100);\n      }\n    },\n    setModalListener: function setModalListener(on) {\n      // Handle case where tooltip/target is in a modal\n      if (this.isInModal()) {\n        // We can listen for modal hidden events on `$root`\n        this.$root[on ? '$on' : '$off'](MODAL_CLOSE_EVENT, this.forceHide);\n      }\n    },\n    setOnTouchStartListener: function setOnTouchStartListener(on)\n    /* istanbul ignore next: JSDOM doesn't support `ontouchstart` */\n    {\n      var _this9 = this;\n\n      // If this is a touch-enabled device we add extra empty\n      // `mouseover` listeners to the body's immediate children\n      // Only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement) {\n        arrayFrom(document.body.children).forEach(function (el) {\n          eventOnOff(on, el, 'mouseover', _this9.$_noop);\n        });\n      }\n    },\n    setDropdownListener: function setDropdownListener(on) {\n      var target = this.getTarget();\n\n      if (!target || !this.$root || !this.isDropdown) {\n        return;\n      } // We can listen for dropdown shown events on its instance\n      // TODO:\n      //   We could grab the ID from the dropdown, and listen for\n      //   $root events for that particular dropdown id\n      //   Dropdown shown and hidden events will need to emit\n      //   Note: Dropdown auto-ID happens in a `$nextTick()` after mount\n      //         So the ID lookup would need to be done in a `$nextTick()`\n\n\n      if (target.__vue__) {\n        target.__vue__[on ? '$on' : '$off']('shown', this.forceHide);\n      }\n    },\n    // --- Event handlers ---\n    handleEvent: function handleEvent(evt) {\n      // General trigger event handler\n      // target is the trigger element\n      var target = this.getTarget();\n\n      if (!target || isDisabled(target) || !this.$_enabled || this.dropdownOpen()) {\n        // If disabled or not enabled, or if a dropdown that is open, don't do anything\n        // If tip is shown before element gets disabled, then tip will not\n        // close until no longer disabled or forcefully closed\n        return;\n      }\n\n      var type = evt.type;\n      var triggers = this.computedTriggers;\n\n      if (type === 'click' && arrayIncludes(triggers, 'click')) {\n        this.click(evt);\n      } else if (type === 'mouseenter' && arrayIncludes(triggers, 'hover')) {\n        // `mouseenter` is a non-bubbling event\n        this.enter(evt);\n      } else if (type === 'focusin' && arrayIncludes(triggers, 'focus')) {\n        // `focusin` is a bubbling event\n        // `evt` includes `relatedTarget` (element loosing focus)\n        this.enter(evt);\n      } else if (type === 'focusout' && (arrayIncludes(triggers, 'focus') || arrayIncludes(triggers, 'blur')) || type === 'mouseleave' && arrayIncludes(triggers, 'hover')) {\n        // `focusout` is a bubbling event\n        // `mouseleave` is a non-bubbling event\n        // `tip` is the template (will be null if not open)\n        var tip = this.getTemplateElement(); // `evtTarget` is the element which is loosing focus/hover and\n\n        var evtTarget = evt.target; // `relatedTarget` is the element gaining focus/hover\n\n        var relatedTarget = evt.relatedTarget;\n        /* istanbul ignore next */\n\n        if ( // From tip to target\n        tip && contains(tip, evtTarget) && contains(target, relatedTarget) || // From target to tip\n        tip && contains(target, evtTarget) && contains(tip, relatedTarget) || // Within tip\n        tip && contains(tip, evtTarget) && contains(tip, relatedTarget) || // Within target\n        contains(target, evtTarget) && contains(target, relatedTarget)) {\n          // If focus/hover moves within `tip` and `target`, don't trigger a leave\n          return;\n        } // Otherwise trigger a leave\n\n\n        this.leave(evt);\n      }\n    },\n    doHide: function doHide(id) {\n      // Programmatically hide tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Close all tooltips or popovers, or this specific tip (with ID)\n        this.forceHide();\n      }\n    },\n    doShow: function doShow(id) {\n      // Programmatically show tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Open all tooltips or popovers, or this specific tip (with ID)\n        this.show();\n      }\n    },\n    doDisable: function doDisable(id)\n    /*istanbul ignore next: ignore for now */\n    {\n      // Programmatically disable tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Disable all tooltips or popovers (no ID), or this specific tip (with ID)\n        this.disable();\n      }\n    },\n    doEnable: function doEnable(id)\n    /*istanbul ignore next: ignore for now */\n    {\n      // Programmatically enable tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Enable all tooltips or popovers (no ID), or this specific tip (with ID)\n        this.enable();\n      }\n    },\n    click: function click() {\n      if (!this.$_enabled || this.dropdownOpen()) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      this.activeTrigger.click = !this.activeTrigger.click;\n\n      if (this.isWithActiveTrigger) {\n        this.enter(null);\n      } else {\n        /* istanbul ignore next */\n        this.leave(null);\n      }\n    },\n    toggle: function toggle()\n    /* istanbul ignore next */\n    {\n      // Manual toggle handler\n      if (!this.$_enabled || this.dropdownOpen()) {\n        /* istanbul ignore next */\n        return;\n      } // Should we register as an active trigger?\n      // this.activeTrigger.manual = !this.activeTrigger.manual\n\n\n      if (this.localShow) {\n        this.leave(null);\n      } else {\n        this.enter(null);\n      }\n    },\n    enter: function enter() {\n      var _this10 = this;\n\n      var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      // Opening trigger handler\n      // Note: Click events are sent with evt === null\n      if (evt) {\n        this.activeTrigger[evt.type === 'focusin' ? 'focus' : 'hover'] = true;\n      }\n      /* istanbul ignore next */\n\n\n      if (this.localShow || this.$_hoverState === 'in') {\n        this.$_hoverState = 'in';\n        return;\n      }\n\n      this.clearHoverTimeout();\n      this.$_hoverState = 'in';\n\n      if (!this.computedDelay.show) {\n        this.show();\n      } else {\n        // Hide any title attribute while enter delay is active\n        this.fixTitle();\n        this.$_hoverTimeout = setTimeout(function () {\n          /* istanbul ignore else */\n          if (_this10.$_hoverState === 'in') {\n            _this10.show();\n          } else if (!_this10.localShow) {\n            _this10.restoreTitle();\n          }\n        }, this.computedDelay.show);\n      }\n    },\n    leave: function leave() {\n      var _this11 = this;\n\n      var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      // Closing trigger handler\n      // Note: Click events are sent with evt === null\n      if (evt) {\n        this.activeTrigger[evt.type === 'focusout' ? 'focus' : 'hover'] = false;\n        /* istanbul ignore next */\n\n        if (evt.type === 'focusout' && arrayIncludes(this.computedTriggers, 'blur')) {\n          // Special case for `blur`: we clear out the other triggers\n          this.activeTrigger.click = false;\n          this.activeTrigger.hover = false;\n        }\n      }\n      /* istanbul ignore next: ignore for now */\n\n\n      if (this.isWithActiveTrigger) {\n        return;\n      }\n\n      this.clearHoverTimeout();\n      this.$_hoverState = 'out';\n\n      if (!this.computedDelay.hide) {\n        this.hide();\n      } else {\n        this.$_hoverTimeout = setTimeout(function () {\n          if (_this11.$_hoverState === 'out') {\n            _this11.hide();\n          }\n        }, this.computedDelay.hide);\n      }\n    }\n  }\n});","import Vue from '../../utils/vue';\nimport getScopId from '../../utils/get-scope-id';\nimport { isArray, arrayIncludes } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { isString, isUndefinedOrNull } from '../../utils/inspect';\nimport { HTMLElement, SVGElement } from '../../utils/safe-types';\nimport { BVTooltip } from './helpers/bv-tooltip';\nvar NAME = 'BTooltip'; // @vue/component\n\nexport var BTooltip = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  props: {\n    title: {\n      type: String // default: undefined\n\n    },\n    // Added in by BPopover\n    // content: {\n    //   type: String,\n    //   default: undefined\n    // },\n    target: {\n      // String ID of element, or element/component reference\n      // Or function that returns one of the above\n      type: [String, HTMLElement, SVGElement, Function, Object],\n      // default: undefined,\n      required: true\n    },\n    triggers: {\n      type: [String, Array],\n      default: 'hover focus'\n    },\n    placement: {\n      type: String,\n      default: 'top'\n    },\n    fallbackPlacement: {\n      type: [String, Array],\n      default: 'flip',\n      validator: function validator(value) {\n        return isArray(value) && value.every(function (v) {\n          return isString(v);\n        }) || arrayIncludes(['flip', 'clockwise', 'counterclockwise'], value);\n      }\n    },\n    variant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'variant');\n      }\n    },\n    customClass: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'customClass');\n      }\n    },\n    delay: {\n      type: [Number, Object, String],\n      default: function _default() {\n        return getComponentConfig(NAME, 'delay');\n      }\n    },\n    boundary: {\n      // String: scrollParent, window, or viewport\n      // Element: element reference\n      // Object: Vue component\n      type: [String, HTMLElement, Object],\n      default: function _default() {\n        return getComponentConfig(NAME, 'boundary');\n      }\n    },\n    boundaryPadding: {\n      type: [Number, String],\n      default: function _default() {\n        return getComponentConfig(NAME, 'boundaryPadding');\n      }\n    },\n    offset: {\n      type: [Number, String],\n      default: 0\n    },\n    noFade: {\n      type: Boolean,\n      default: false\n    },\n    container: {\n      // String: HTML ID of container, if null body is used (default)\n      // HTMLElement: element reference reference\n      // Object: Vue Component\n      type: [String, HTMLElement, Object] // default: undefined\n\n    },\n    show: {\n      type: Boolean,\n      default: false\n    },\n    noninteractive: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    id: {\n      // ID to use for tooltip element\n      // If not provided on will automatically be generated\n      type: String,\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      localShow: this.show,\n      localTitle: '',\n      localContent: ''\n    };\n  },\n  computed: {\n    templateData: function templateData() {\n      // Data that will be passed to the template and popper\n      return {\n        // We use massaged versions of the title and content props/slots\n        title: this.localTitle,\n        content: this.localContent,\n        // Pass these props as is\n        target: this.target,\n        triggers: this.triggers,\n        placement: this.placement,\n        fallbackPlacement: this.fallbackPlacement,\n        variant: this.variant,\n        customClass: this.customClass,\n        container: this.container,\n        boundary: this.boundary,\n        boundaryPadding: this.boundaryPadding,\n        delay: this.delay,\n        offset: this.offset,\n        noFade: this.noFade,\n        interactive: !this.noninteractive,\n        disabled: this.disabled,\n        id: this.id\n      };\n    },\n    templateTitleContent: function templateTitleContent() {\n      // Used to watch for changes to the title and content props\n      return {\n        title: this.title,\n        content: this.content\n      };\n    }\n  },\n  watch: {\n    show: function show(_show, oldVal) {\n      if (_show !== oldVal && _show !== this.localShow && this.$_bv_toolpop) {\n        if (_show) {\n          this.$_bv_toolpop.show();\n        } else {\n          // We use `forceHide()` to override any active triggers\n          this.$_bv_toolpop.forceHide();\n        }\n      }\n    },\n    disabled: function disabled(newVal) {\n      if (newVal) {\n        this.doDisable();\n      } else {\n        this.doEnable();\n      }\n    },\n    localShow: function localShow(newVal) {\n      // TODO: May need to be done in a `$nextTick()`\n      this.$emit('update:show', newVal);\n    },\n    templateData: function templateData() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        if (_this.$_bv_toolpop) {\n          _this.$_bv_toolpop.updateData(_this.templateData);\n        }\n      });\n    },\n    // Watchers for title/content props (prop changes do not trigger the `updated()` hook)\n    templateTitleContent: function templateTitleContent() {\n      this.$nextTick(this.updateContent);\n    }\n  },\n  created: function created() {\n    // Non reactive properties\n    this.$_bv_toolpop = null;\n  },\n  updated: function updated() {\n    // Update the `propData` object\n    // Done in a `$nextTick()` to ensure slot(s) have updated\n    this.$nextTick(this.updateContent);\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Shutdown our local event listeners\n    this.$off('open', this.doOpen);\n    this.$off('close', this.doClose);\n    this.$off('disable', this.doDisable);\n    this.$off('enable', this.doEnable); // Destroy the tip instance\n\n    this.$_bv_toolpop && this.$_bv_toolpop.$destroy();\n    this.$_bv_toolpop = null;\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    // Instantiate a new BVTooltip instance\n    // Done in a `$nextTick()` to ensure DOM has completed rendering\n    // so that target can be found\n    this.$nextTick(function () {\n      // Load the on demand child instance\n      var Component = _this2.getComponent(); // Ensure we have initial content\n\n\n      _this2.updateContent(); // Pass down the scoped style attribute if available\n\n\n      var scopeId = getScopId(_this2) || getScopId(_this2.$parent); // Create the instance\n\n      var $toolpop = _this2.$_bv_toolpop = new Component({\n        parent: _this2,\n        // Pass down the scoped style ID\n        _scopeId: scopeId || undefined\n      }); // Set the initial data\n\n      $toolpop.updateData(_this2.templateData); // Set listeners\n\n      $toolpop.$on('show', _this2.onShow);\n      $toolpop.$on('shown', _this2.onShown);\n      $toolpop.$on('hide', _this2.onHide);\n      $toolpop.$on('hidden', _this2.onHidden);\n      $toolpop.$on('disabled', _this2.onDisabled);\n      $toolpop.$on('enabled', _this2.onEnabled); // Initially disabled?\n\n      if (_this2.disabled) {\n        // Initially disabled\n        _this2.doDisable();\n      } // Listen to open signals from others\n\n\n      _this2.$on('open', _this2.doOpen); // Listen to close signals from others\n\n\n      _this2.$on('close', _this2.doClose); // Listen to disable signals from others\n\n\n      _this2.$on('disable', _this2.doDisable); // Listen to enable signals from others\n\n\n      _this2.$on('enable', _this2.doEnable); // Initially show tooltip?\n\n\n      if (_this2.localShow) {\n        _this2.$_bv_toolpop && _this2.$_bv_toolpop.show();\n      }\n    });\n  },\n  methods: {\n    getComponent: function getComponent() {\n      // Overridden by BPopover\n      return BVTooltip;\n    },\n    updateContent: function updateContent() {\n      // Overridden by BPopover\n      // Tooltip: Default slot is `title`\n      // Popover: Default slot is `content`, `title` slot is title\n      // We pass a scoped slot function reference by default (Vue v2.6x)\n      // And pass the title prop as a fallback\n      this.setTitle(this.$scopedSlots.default || this.title);\n    },\n    // Helper methods for `updateContent()`\n    setTitle: function setTitle(val) {\n      val = isUndefinedOrNull(val) ? '' : val; // We only update the value if it has changed\n\n      if (this.localTitle !== val) {\n        this.localTitle = val;\n      }\n    },\n    setContent: function setContent(val) {\n      val = isUndefinedOrNull(val) ? '' : val; // We only update the value if it has changed\n\n      if (this.localContent !== val) {\n        this.localContent = val;\n      }\n    },\n    // --- Template event handlers ---\n    onShow: function onShow(bvEvt) {\n      // Placeholder\n      this.$emit('show', bvEvt);\n\n      if (bvEvt) {\n        this.localShow = !bvEvt.defaultPrevented;\n      }\n    },\n    onShown: function onShown(bvEvt) {\n      // Tip is now showing\n      this.localShow = true;\n      this.$emit('shown', bvEvt);\n    },\n    onHide: function onHide(bvEvt) {\n      this.$emit('hide', bvEvt);\n    },\n    onHidden: function onHidden(bvEvt) {\n      // Tip is no longer showing\n      this.$emit('hidden', bvEvt);\n      this.localShow = false;\n    },\n    onDisabled: function onDisabled(bvEvt) {\n      // Prevent possible endless loop if user mistakenly\n      // fires `disabled` instead of `disable`\n      if (bvEvt && bvEvt.type === 'disabled') {\n        this.$emit('update:disabled', true);\n        this.$emit('disabled', bvEvt);\n      }\n    },\n    onEnabled: function onEnabled(bvEvt) {\n      // Prevent possible endless loop if user mistakenly\n      // fires `enabled` instead of `enable`\n      if (bvEvt && bvEvt.type === 'enabled') {\n        this.$emit('update:disabled', false);\n        this.$emit('enabled', bvEvt);\n      }\n    },\n    // --- Local event listeners ---\n    doOpen: function doOpen() {\n      !this.localShow && this.$_bv_toolpop && this.$_bv_toolpop.show();\n    },\n    doClose: function doClose() {\n      this.localShow && this.$_bv_toolpop && this.$_bv_toolpop.hide();\n    },\n    doDisable: function doDisable() {\n      this.$_bv_toolpop && this.$_bv_toolpop.disable();\n    },\n    doEnable: function doEnable() {\n      this.$_bv_toolpop && this.$_bv_toolpop.enable();\n    }\n  },\n  render: function render(h) {\n    // Always renders a comment node\n    // TODO:\n    //   Future: Possibly render a target slot (single root element)\n    //   which we can apply the listeners to (pass `this.$el` to BVTooltip)\n    return h();\n  }\n});","import Vue from '../../../utils/vue';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { BVTooltipTemplate } from '../../tooltip/helpers/bv-tooltip-template';\nvar NAME = 'BVPopoverTemplate'; // @vue/component\n\nexport var BVPopoverTemplate = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  extends: BVTooltipTemplate,\n  computed: {\n    templateType: function templateType() {\n      return 'popover';\n    }\n  },\n  methods: {\n    renderTemplate: function renderTemplate(h) {\n      // Title and content could be a scoped slot function\n      var $title = isFunction(this.title) ? this.title({}) : this.title;\n      var $content = isFunction(this.content) ? this.content({}) : this.content; // Directive usage only\n\n      var titleDomProps = this.html && !isFunction(this.title) ? {\n        innerHTML: this.title\n      } : {};\n      var contentDomProps = this.html && !isFunction(this.content) ? {\n        innerHTML: this.content\n      } : {};\n      return h('div', {\n        staticClass: 'popover b-popover',\n        class: this.templateClasses,\n        attrs: this.templateAttributes,\n        on: this.templateListeners\n      }, [h('div', {\n        ref: 'arrow',\n        staticClass: 'arrow'\n      }), isUndefinedOrNull($title) || $title === '' ? h() : h('h3', {\n        staticClass: 'popover-header',\n        domProps: titleDomProps\n      }, [$title]), isUndefinedOrNull($content) || $content === '' ? h() : h('div', {\n        staticClass: 'popover-body',\n        domProps: contentDomProps\n      }, [$content])]);\n    }\n  }\n});","// Popover \"Class\" (Built as a renderless Vue instance)\n// Inherits from BVTooltip\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\nimport Vue from '../../../utils/vue';\nimport { BVTooltip } from '../../tooltip/helpers/bv-tooltip';\nimport { BVPopoverTemplate } from './bv-popover-template';\nvar NAME = 'BVPopover'; // @vue/component\n\nexport var BVPopover = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  extends: BVTooltip,\n  computed: {\n    // Overwrites BVTooltip\n    templateType: function templateType() {\n      return 'popover';\n    }\n  },\n  methods: {\n    getTemplate: function getTemplate() {\n      // Overwrites BVTooltip\n      return BVPopoverTemplate;\n    }\n  }\n});","import Vue from '../../utils/vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { HTMLElement } from '../../utils/safe-types';\nimport { BTooltip } from '../tooltip/tooltip';\nimport { BVPopover } from './helpers/bv-popover';\nvar NAME = 'BPopover';\nexport var BPopover = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  extends: BTooltip,\n  inheritAttrs: false,\n  props: {\n    title: {\n      type: String // default: undefined\n\n    },\n    content: {\n      type: String // default: undefined\n\n    },\n    triggers: {\n      type: [String, Array],\n      default: 'click'\n    },\n    placement: {\n      type: String,\n      default: 'right'\n    },\n    variant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'variant');\n      }\n    },\n    customClass: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'customClass');\n      }\n    },\n    delay: {\n      type: [Number, Object, String],\n      default: function _default() {\n        return getComponentConfig(NAME, 'delay');\n      }\n    },\n    boundary: {\n      // String: scrollParent, window, or viewport\n      // Element: element reference\n      // Object: Vue component\n      type: [String, HTMLElement, Object],\n      default: function _default() {\n        return getComponentConfig(NAME, 'boundary');\n      }\n    },\n    boundaryPadding: {\n      type: [Number, String],\n      default: function _default() {\n        return getComponentConfig(NAME, 'boundaryPadding');\n      }\n    }\n  },\n  methods: {\n    getComponent: function getComponent() {\n      // Overridden by BPopover\n      return BVPopover;\n    },\n    updateContent: function updateContent() {\n      // Tooltip: Default slot is `title`\n      // Popover: Default slot is `content`, `title` slot is title\n      // We pass a scoped slot function references by default (Vue v2.6x)\n      // And pass the title prop as a fallback\n      this.setContent(this.$scopedSlots.default || this.content);\n      this.setTitle(this.$scopedSlots.title || this.title);\n    }\n  } // Render function provided by BTooltip\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 getScopId from '../../utils/get-scope-id';\nimport identity from '../../utils/identity';\nimport looseEqual from '../../utils/loose-equal';\nimport { concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { isBrowser } from '../../utils/env';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport { BVPopover } from '../../components/popover/helpers/bv-popover'; // Key which we use to store tooltip object on element\n\nvar BV_POPOVER = '__BV_Popover__'; // Default trigger\n\nvar DefaultTrigger = 'click'; // Valid event triggers\n\nvar validTriggers = {\n  focus: true,\n  hover: true,\n  click: true,\n  blur: true,\n  manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i;\nvar spacesRE = /\\s+/; // Build a Popover config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n  // We start out with a basic config\n  var NAME = 'BPopover';\n  var config = {\n    title: undefined,\n    content: undefined,\n    trigger: '',\n    // Default set below if needed\n    placement: 'right',\n    fallbackPlacement: 'flip',\n    container: false,\n    // Default of body\n    animation: true,\n    offset: 0,\n    disabled: false,\n    id: null,\n    html: false,\n    delay: getComponentConfig(NAME, 'delay'),\n    boundary: String(getComponentConfig(NAME, 'boundary')),\n    boundaryPadding: parseInt(getComponentConfig(NAME, 'boundaryPadding'), 10) || 0,\n    variant: getComponentConfig(NAME, 'variant'),\n    customClass: getComponentConfig(NAME, 'customClass')\n  }; // Process `bindings.value`\n\n  if (isString(bindings.value) || isNumber(bindings.value)) {\n    // Value is popover content (html optionally supported)\n    config.content = bindings.value;\n  } else if (isFunction(bindings.value)) {\n    // Content generator function\n    config.content = bindings.value;\n  } else if (isPlainObject(bindings.value)) {\n    // Value is config object, so merge\n    config = _objectSpread({}, config, {}, bindings.value);\n  } // If argument, assume element ID of container element\n\n\n  if (bindings.arg) {\n    // Element ID specified as arg\n    // We must prepend '#' to become a CSS selector\n    config.container = \"#\".concat(bindings.arg);\n  } // If title is not provided, try title attribute\n\n\n  if (isUndefined(config.title)) {\n    // Try attribute\n    var data = vnode.data || {};\n    config.title = data.attrs && !isUndefinedOrNull(data.attrs.title) ? data.attrs.title : undefined;\n  } // Normalize delay\n\n\n  if (!isPlainObject(config.delay)) {\n    config.delay = {\n      show: parseInt(config.delay, 10) || 0,\n      hide: parseInt(config.delay, 10) || 0\n    };\n  } // Process modifiers\n\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    if (htmlRE.test(mod)) {\n      // Title/content allows HTML\n      config.html = true;\n    } else if (noFadeRE.test(mod)) {\n      // No animation\n      config.animation = false;\n    } else if (placementRE.test(mod)) {\n      // Placement of popover\n      config.placement = mod;\n    } else if (boundaryRE.test(mod)) {\n      // Boundary of popover\n      mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n      config.boundary = mod;\n    } else if (delayRE.test(mod)) {\n      // Delay value\n      var delay = parseInt(mod.slice(1), 10) || 0;\n      config.delay.show = delay;\n      config.delay.hide = delay;\n    } else if (delayShowRE.test(mod)) {\n      // Delay show value\n      config.delay.show = parseInt(mod.slice(2), 10) || 0;\n    } else if (delayHideRE.test(mod)) {\n      // Delay hide value\n      config.delay.hide = parseInt(mod.slice(2), 10) || 0;\n    } else if (offsetRE.test(mod)) {\n      // Offset value, negative allowed\n      config.offset = parseInt(mod.slice(1), 10) || 0;\n    } else if (variantRE.test(mod)) {\n      // Variant\n      config.variant = mod.slice(2) || null;\n    }\n  }); // Special handling of event trigger modifiers trigger is\n  // a space separated list\n\n  var selectedTriggers = {}; // Parse current config object trigger\n\n  concat(config.trigger || '').filter(identity).join(' ').trim().toLowerCase().split(spacesRE).forEach(function (trigger) {\n    if (validTriggers[trigger]) {\n      selectedTriggers[trigger] = true;\n    }\n  }); // Parse modifiers for triggers\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    mod = mod.toLowerCase();\n\n    if (validTriggers[mod]) {\n      // If modifier is a valid trigger\n      selectedTriggers[mod] = true;\n    }\n  }); // Sanitize triggers\n\n  config.trigger = keys(selectedTriggers).join(' ');\n\n  if (config.trigger === 'blur') {\n    // Blur by itself is useless, so convert it to 'focus'\n    config.trigger = 'focus';\n  }\n\n  if (!config.trigger) {\n    // Use default trigger\n    config.trigger = DefaultTrigger;\n  }\n\n  return config;\n}; // Add or update Popover on our element\n\n\nvar applyPopover = function applyPopover(el, bindings, vnode) {\n  if (!isBrowser) {\n    /* istanbul ignore next */\n    return;\n  }\n\n  var config = parseBindings(bindings, vnode);\n\n  if (!el[BV_POPOVER]) {\n    var $parent = vnode.context;\n    el[BV_POPOVER] = new BVPopover({\n      parent: $parent,\n      // Add the parent's scoped style attribute data\n      _scopeId: getScopId($parent, undefined)\n    });\n    el[BV_POPOVER].__bv_prev_data__ = {};\n    el[BV_POPOVER].$on('show', function ()\n    /* istanbul ignore next: for now */\n    {\n      // Before showing the popover, we update the title\n      // and content if they are functions\n      var data = {};\n\n      if (isFunction(config.title)) {\n        data.title = config.title(el);\n      }\n\n      if (isFunction(config.content)) {\n        data.content = config.content(el);\n      }\n\n      if (keys(data).length > 0) {\n        el[BV_POPOVER].updateData(data);\n      }\n    });\n  }\n\n  var data = {\n    title: config.title,\n    content: config.content,\n    triggers: config.trigger,\n    placement: config.placement,\n    fallbackPlacement: config.fallbackPlacement,\n    variant: config.variant,\n    customClass: config.customClass,\n    container: config.container,\n    boundary: config.boundary,\n    delay: config.delay,\n    offset: config.offset,\n    noFade: !config.animation,\n    id: config.id,\n    disabled: config.disabled,\n    html: config.html\n  };\n  var oldData = el[BV_POPOVER].__bv_prev_data__;\n  el[BV_POPOVER].__bv_prev_data__ = data;\n\n  if (!looseEqual(data, oldData)) {\n    // We only update the instance if data has changed\n    var newData = {\n      target: el\n    };\n    keys(data).forEach(function (prop) {\n      // We only pass data properties that have changed\n      if (data[prop] !== oldData[prop]) {\n        // If title/content is a function, we execute it here\n        newData[prop] = (prop === 'title' || prop === 'content') && isFunction(data[prop]) ? data[prop](el) : data[prop];\n      }\n    });\n    el[BV_POPOVER].updateData(newData);\n  }\n}; // Remove Popover from our element\n\n\nvar removePopover = function removePopover(el) {\n  if (el[BV_POPOVER]) {\n    el[BV_POPOVER].$destroy();\n    el[BV_POPOVER] = null;\n  }\n\n  delete el[BV_POPOVER];\n}; // Export our directive\n\n\nexport var VBPopover = {\n  bind: function bind(el, bindings, vnode) {\n    applyPopover(el, bindings, vnode);\n  },\n  // We use `componentUpdated` here instead of `update`, as the former\n  // waits until the containing component and children have finished updating\n  componentUpdated: function componentUpdated(el, bindings, vnode) {\n    // Performed in a `$nextTick()` to prevent endless render/update loops\n    vnode.context.$nextTick(function () {\n      applyPopover(el, bindings, vnode);\n    });\n  },\n  unbind: function unbind(el) {\n    removePopover(el);\n  }\n};","import { VBPopover } from './popover';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBPopoverPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBPopover: VBPopover\n  }\n});\nexport { VBPopoverPlugin, VBPopover };","import { BPopover } from './popover';\nimport { VBPopoverPlugin } from '../../directives/popover';\nimport { pluginFactory } from '../../utils/plugins';\nvar PopoverPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BPopover: BPopover\n  },\n  plugins: {\n    VBPopoverPlugin: VBPopoverPlugin\n  }\n});\nexport { PopoverPlugin, BPopover };","import Vue from '../../utils/vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { htmlOrText } from '../../utils/html';\nimport { isBoolean } from '../../utils/inspect';\nimport { toFixed, toFloat, toInteger } from '../../utils/number';\nimport { toString } from '../../utils/string';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nvar NAME = 'BProgressBar'; // @vue/component\n\nexport var BProgressBar = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [normalizeSlotMixin],\n  inject: {\n    bvProgress: {\n      default: function _default()\n      /* istanbul ignore next */\n      {\n        return {};\n      }\n    }\n  },\n  props: {\n    value: {\n      type: [Number, String],\n      default: 0\n    },\n    label: {\n      type: String,\n      default: null\n    },\n    labelHtml: {\n      type: String\n    },\n    // $parent (this.bvProgress) prop values may take precedence over the following props\n    // Which is why they are defaulted to null\n    max: {\n      type: [Number, String],\n      default: null\n    },\n    precision: {\n      type: [Number, String],\n      default: null\n    },\n    variant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'variant');\n      }\n    },\n    striped: {\n      type: Boolean,\n      default: null\n    },\n    animated: {\n      type: Boolean,\n      default: null\n    },\n    showProgress: {\n      type: Boolean,\n      default: null\n    },\n    showValue: {\n      type: Boolean,\n      default: null\n    }\n  },\n  computed: {\n    progressBarClasses: function progressBarClasses() {\n      return [this.computedVariant ? \"bg-\".concat(this.computedVariant) : '', this.computedStriped || this.computedAnimated ? 'progress-bar-striped' : '', this.computedAnimated ? 'progress-bar-animated' : ''];\n    },\n    progressBarStyles: function progressBarStyles() {\n      return {\n        width: 100 * (this.computedValue / this.computedMax) + '%'\n      };\n    },\n    computedValue: function computedValue() {\n      return toFloat(this.value) || 0;\n    },\n    computedMax: function computedMax() {\n      // Prefer our max over parent setting\n      var max = toFloat(this.max);\n      return isNaN(max) ? toFloat(this.bvProgress.max) || 100 : max;\n    },\n    computedPrecision: function computedPrecision() {\n      // Prefer our precision over parent setting\n      var precision = toInteger(this.precision);\n      return isNaN(precision) ? toInteger(this.bvProgress.precision) || 0 : precision;\n    },\n    computedProgress: function computedProgress() {\n      var precision = this.computedPrecision;\n      var p = Math.pow(10, precision);\n      return toFixed(100 * p * this.computedValue / this.computedMax / p, precision);\n    },\n    computedVariant: function computedVariant() {\n      // Prefer our variant over parent setting\n      return this.variant || this.bvProgress.variant;\n    },\n    computedStriped: function computedStriped() {\n      // Prefer our striped over parent setting\n      return isBoolean(this.striped) ? this.striped : this.bvProgress.striped || false;\n    },\n    computedAnimated: function computedAnimated() {\n      // Prefer our animated over parent setting\n      return isBoolean(this.animated) ? this.animated : this.bvProgress.animated || false;\n    },\n    computedShowProgress: function computedShowProgress() {\n      // Prefer our showProgress over parent setting\n      return isBoolean(this.showProgress) ? this.showProgress : this.bvProgress.showProgress || false;\n    },\n    computedShowValue: function computedShowValue() {\n      // Prefer our showValue over parent setting\n      return isBoolean(this.showValue) ? this.showValue : this.bvProgress.showValue || false;\n    }\n  },\n  render: function render(h) {\n    var childNodes = h();\n\n    if (this.hasNormalizedSlot('default')) {\n      childNodes = this.normalizeSlot('default');\n    } else if (this.label || this.labelHtml) {\n      childNodes = h('span', {\n        domProps: htmlOrText(this.labelHtml, this.label)\n      });\n    } else if (this.computedShowProgress) {\n      childNodes = this.computedProgress;\n    } else if (this.computedShowValue) {\n      childNodes = toFixed(this.computedValue, this.computedPrecision);\n    }\n\n    return h('div', {\n      staticClass: 'progress-bar',\n      class: this.progressBarClasses,\n      style: this.progressBarStyles,\n      attrs: {\n        role: 'progressbar',\n        'aria-valuemin': '0',\n        'aria-valuemax': toString(this.computedMax),\n        'aria-valuenow': toFixed(this.computedValue, this.computedPrecision)\n      }\n    }, [childNodes]);\n  }\n});","import Vue from '../../utils/vue';\nimport { getComponentConfig } from '../../utils/config';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BProgressBar } from './progress-bar';\nvar NAME = 'BProgress'; // @vue/component\n\nexport var BProgress = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [normalizeSlotMixin],\n  provide: function provide() {\n    return {\n      bvProgress: this\n    };\n  },\n  props: {\n    // These props can be inherited via the child b-progress-bar(s)\n    variant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig(NAME, 'variant');\n      }\n    },\n    striped: {\n      type: Boolean,\n      default: false\n    },\n    animated: {\n      type: Boolean,\n      default: false\n    },\n    height: {\n      type: String,\n      default: null\n    },\n    precision: {\n      type: [Number, String],\n      default: 0\n    },\n    showProgress: {\n      type: Boolean,\n      default: false\n    },\n    showValue: {\n      type: Boolean,\n      default: false\n    },\n    max: {\n      type: [Number, String],\n      default: 100\n    },\n    // This prop is not inherited by child b-progress-bar(s)\n    value: {\n      type: [Number, String],\n      default: 0\n    }\n  },\n  computed: {\n    progressHeight: function progressHeight() {\n      return {\n        height: this.height || null\n      };\n    }\n  },\n  render: function render(h) {\n    var childNodes = this.normalizeSlot('default');\n\n    if (!childNodes) {\n      childNodes = h(BProgressBar, {\n        props: {\n          value: this.value,\n          max: this.max,\n          precision: this.precision,\n          variant: this.variant,\n          animated: this.animated,\n          striped: this.striped,\n          showProgress: this.showProgress,\n          showValue: this.showValue\n        }\n      });\n    }\n\n    return h('div', {\n      class: ['progress'],\n      style: this.progressHeight\n    }, [childNodes]);\n  }\n});","import { BProgress } from './progress';\nimport { BProgressBar } from './progress-bar';\nimport { pluginFactory } from '../../utils/plugins';\nvar ProgressPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BProgress: BProgress,\n    BProgressBar: BProgressBar\n  }\n});\nexport { ProgressPlugin, BProgress, BProgressBar };","import { BSpinner } from './spinner';\nimport { pluginFactory } from '../../utils/plugins';\nvar SpinnerPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BSpinner: BSpinner\n  }\n});\nexport { SpinnerPlugin, BSpinner };","// Mixin to determine if an event listener has been registered\n// either via `v-on:name` (in the parent) or programmatically\n// via `vm.$on('name', ...)`\n// See: https://github.com/vuejs/vue/issues/10825\nimport { isArray, isUndefined } from '../utils/inspect'; // @vue/component\n\nexport default {\n  methods: {\n    hasListener: function hasListener(name) {\n      // Only includes listeners registerd via `v-on:name`\n      var $listeners = this.$listeners || {}; // Includes `v-on:name` and `this.$on('name')` registerd listeners\n      // Note this property is not part of the public Vue API, but it is\n      // the only way to determine if a listener was added via `vm.$on`\n\n      var $events = this._events || {}; // Registered listeners in `this._events` are always an array,\n      // but might be zero length\n\n      return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\n    }\n  }\n};","/**\n * Converts a string, including strings in camelCase or snake_case, into Start Case (a variant\n * of Title Case where all words start with a capital letter), it keeps original single quote\n * and hyphen in the word.\n *\n * Copyright (c) 2017 Compass (MIT)\n * https://github.com/UrbanCompass/to-start-case\n * @author Zhuoyuan Zhang <https://github.com/drawyan>\n * @author Wei Wang <https://github.com/onlywei>\n *\n *\n *   'management_companies' to 'Management Companies'\n *   'managementCompanies' to 'Management Companies'\n *   `hell's kitchen` to `Hell's Kitchen`\n *   `co-op` to `Co-op`\n *\n * @param {String} str\n * @returns {String}\n */\n// Precompile regular expressions for performance\nvar RX_UNDERSCORE = /_/g;\nvar RX_LOWER_UPPER = /([a-z])([A-Z])/g;\nvar RX_START_SPACE_WORD = /(\\s|^)(\\w)/g;\n\nvar startCase = function startCase(str) {\n  return str.replace(RX_UNDERSCORE, ' ').replace(RX_LOWER_UPPER, function (str, $1, $2) {\n    return $1 + ' ' + $2;\n  }).replace(RX_START_SPACE_WORD, function (str, $1, $2) {\n    return $1 + $2.toUpperCase();\n  });\n};\n\nexport default startCase;","// Constants used by table helpers\n// Object of item keys that should be ignored for headers and\n// stringification and filter events\nexport var IGNORED_FIELD_KEYS = {\n  _rowVariant: true,\n  _cellVariants: true,\n  _showDetails: true\n}; // Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\n\nexport var EVENT_FILTER = ['a', 'a *', // Include content inside links\n'button', 'button *', // Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","import identity from '../../../utils/identity';\nimport startCase from '../../../utils/startcase';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n  var field = null;\n\n  if (isString(value)) {\n    // Label shortcut\n    field = {\n      key: key,\n      label: value\n    };\n  } else if (isFunction(value)) {\n    // Formatter shortcut\n    field = {\n      key: key,\n      formatter: value\n    };\n  } else if (isObject(value)) {\n    field = clone(value);\n    field.key = field.key || key;\n  } else if (value !== false) {\n    // Fallback to just key\n\n    /* istanbul ignore next */\n    field = {\n      key: key\n    };\n  }\n\n  return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nvar normalizeFields = function normalizeFields(origFields, items) {\n  var fields = [];\n\n  if (isArray(origFields)) {\n    // Normalize array Form\n    origFields.filter(identity).forEach(function (f) {\n      if (isString(f)) {\n        fields.push({\n          key: f,\n          label: startCase(f)\n        });\n      } else if (isObject(f) && f.key && isString(f.key)) {\n        // Full object definition. We use assign so that we don't mutate the original\n        fields.push(clone(f));\n      } else if (isObject(f) && keys(f).length === 1) {\n        // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n        var key = keys(f)[0];\n        var field = processField(key, f[key]);\n\n        if (field) {\n          fields.push(field);\n        }\n      }\n    });\n  } // If no field provided, take a sample from first record (if exits)\n\n\n  if (fields.length === 0 && isArray(items) && items.length > 0) {\n    var sample = items[0];\n    keys(sample).forEach(function (k) {\n      if (!IGNORED_FIELD_KEYS[k]) {\n        fields.push({\n          key: k,\n          label: startCase(k)\n        });\n      }\n    });\n  } // Ensure we have a unique array of fields and that they have String labels\n\n\n  var memo = {};\n  return fields.filter(function (f) {\n    if (!memo[f.key]) {\n      memo[f.key] = true;\n      f.label = isString(f.label) ? f.label : startCase(f.key);\n      return true;\n    }\n\n    return false;\n  });\n};\n\nexport default normalizeFields;","import looseEqual from '../../../utils/loose-equal';\nimport { isArray, isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { clone } from '../../../utils/object';\nimport normalizeFields from './normalize-fields';\nexport default {\n  props: {\n    items: {\n      // Provider mixin adds in `Function` type\n      type: Array,\n      default: function _default()\n      /* istanbul ignore next */\n      {\n        return [];\n      }\n    },\n    fields: {\n      type: Array,\n      default: null\n    },\n    primaryKey: {\n      // Primary key for record\n      // If provided the value in each row must be unique!\n      type: String,\n      default: null\n    },\n    value: {\n      // `v-model` for retrieving the current displayed rows\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    }\n  },\n  data: function data() {\n    return {\n      // Our local copy of the items\n      // Must be an array\n      localItems: isArray(this.items) ? this.items.slice() : []\n    };\n  },\n  computed: {\n    computedFields: function computedFields() {\n      // We normalize fields into an array of objects\n      // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n      return normalizeFields(this.fields, this.localItems);\n    },\n    computedFieldsObj: function computedFieldsObj() {\n      // Fields as a simple lookup hash object\n      // Mainly for formatter lookup and use in `scopedSlots` for convenience\n      // If the field has a formatter, it normalizes formatter to a\n      // function ref or `undefined` if no formatter\n      var parent = this.$parent;\n      return this.computedFields.reduce(function (obj, f) {\n        // We use object spread here so we don't mutate the original field object\n        obj[f.key] = clone(f);\n\n        if (f.formatter) {\n          // Normalize formatter to a function ref or `undefined`\n          var formatter = f.formatter;\n\n          if (isString(formatter) && isFunction(parent[formatter])) {\n            formatter = parent[formatter];\n          } else if (!isFunction(formatter)) {\n            /* istanbul ignore next */\n            formatter = undefined;\n          } // Return formatter function or `undefined` if none\n\n\n          obj[f.key].formatter = formatter;\n        }\n\n        return obj;\n      }, {});\n    },\n    computedItems: function computedItems() {\n      // Fallback if various mixins not provided\n      return (this.paginatedItems || this.sortedItems || this.filteredItems || this.localItems || []).slice();\n    },\n    context: function context() {\n      // Current state of sorting, filtering and pagination props/values\n      return {\n        filter: this.localFilter,\n        sortBy: this.localSortBy,\n        sortDesc: this.localSortDesc,\n        perPage: parseInt(this.perPage, 10) || 0,\n        currentPage: parseInt(this.currentPage, 10) || 1,\n        apiUrl: this.apiUrl\n      };\n    }\n  },\n  watch: {\n    items: function items(newItems) {\n      /* istanbul ignore else */\n      if (isArray(newItems)) {\n        // Set `localItems`/`filteredItems` to a copy of the provided array\n        this.localItems = newItems.slice();\n      } else if (isUndefinedOrNull(newItems)) {\n        /* istanbul ignore next */\n        this.localItems = [];\n      }\n    },\n    // Watch for changes on `computedItems` and update the `v-model`\n    computedItems: function computedItems(newVal) {\n      this.$emit('input', newVal);\n    },\n    // Watch for context changes\n    context: function context(newVal, oldVal) {\n      // Emit context information for external paging/filtering/sorting handling\n      if (!looseEqual(newVal, oldVal)) {\n        this.$emit('context-changed', newVal);\n      }\n    }\n  },\n  mounted: function mounted() {\n    // Initially update the `v-model` of displayed items\n    this.$emit('input', this.computedItems);\n  },\n  methods: {\n    // Method to get the formatter method for a given field key\n    getFieldFormatter: function getFieldFormatter(key) {\n      var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n      // function ref if present, otherwise `undefined`\n\n      return field ? field.formatter : undefined;\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\n// Mixin for providing stacked tables\nexport default {\n  props: {\n    stacked: {\n      type: [Boolean, String],\n      default: false\n    }\n  },\n  computed: {\n    isStacked: function isStacked() {\n      // `true` when always stacked, or returns breakpoint specified\n      return this.stacked === '' ? true : this.stacked;\n    },\n    isStackedAlways: function isStackedAlways() {\n      return this.isStacked === true;\n    },\n    stackedTableClasses: function stackedTableClasses() {\n      return _defineProperty({\n        'b-table-stacked': this.isStackedAlways\n      }, \"b-table-stacked-\".concat(this.stacked), !this.isStackedAlways && this.isStacked);\n    }\n  }\n};","import { keys } from '../../../utils/object';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction } from '../../../utils/inspect';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nvar sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n  var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  return keys(row).reduce(function (obj, key) {\n    // Ignore special fields that start with `_`\n    // Ignore fields in the `ignoreFields` array\n    // Include only fields in the `includeFields` array\n    if (!IGNORED_FIELD_KEYS[key] && !(ignoreFields && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(includeFields && includeFields.length > 0 && !arrayIncludes(includeFields, key))) {\n      var f = fieldsObj[key] || {};\n      var val = row[key]; // `f.filterByFormatted` will either be a function or boolean\n      // `f.formater` will have already been noramlized into a function ref\n\n      var filterByFormatted = f.filterByFormatted;\n      var formatter = isFunction(filterByFormatted) ? filterByFormatted : filterByFormatted ? f.formatter : null;\n      obj[key] = isFunction(formatter) ? formatter(val, key, row) : val;\n    }\n\n    return obj;\n  }, {});\n};\n\nexport default sanitizeRow;","import { keys } from '../../../utils/object';\nimport { isDate, isObject, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toString } from '../../../utils/string'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n//   ex:\n//     { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n//   becomes\n//     'one 3 2 zzz 10 12 11'\n//\n// Primitives (numbers/strings) are returned as-is\n// Null and undefined values are filtered out\n// Dates are converted to their native string format\n\nvar stringifyObjectValues = function stringifyObjectValues(val) {\n  if (isUndefinedOrNull(val)) {\n    /* istanbul ignore next */\n    return '';\n  } // Arrays are also object, and keys just returns the array indexes\n  // Date objects we convert to strings\n\n\n  if (isObject(val) && !isDate(val)) {\n    return keys(val).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n    .filter(function (v) {\n      return !isUndefinedOrNull(v);\n    }) // Ignore undefined/null values\n    .map(function (k) {\n      return stringifyObjectValues(val[k]);\n    }).join(' ');\n  }\n\n  return toString(val);\n};\n\nexport default stringifyObjectValues;","import { isObject } from '../../../utils/inspect';\nimport sanitizeRow from './sanitize-row';\nimport stringifyObjectValues from './stringify-object-values'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nvar stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n  return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) : '';\n};\n\nexport default stringifyRecordValues;","import cloneDeep from '../../../utils/clone-deep';\nimport looseEqual from '../../../utils/loose-equal';\nimport { concat } from '../../../utils/array';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { toInteger } from '../../../utils/number';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport stringifyRecordValues from './stringify-record-values';\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"<b-form-input>\" instead.';\nvar RX_SPACES = /[\\s\\uFEFF\\xA0]+/g;\nexport default {\n  props: {\n    filter: {\n      type: [String, RegExp, Object, Array],\n      default: null\n    },\n    filterFunction: {\n      type: Function,\n      default: null\n    },\n    filterIgnoredFields: {\n      type: Array // default: undefined\n\n    },\n    filterIncludedFields: {\n      type: Array // default: undefined\n\n    },\n    filterDebounce: {\n      type: [Number, String],\n      deprecated: DEBOUNCE_DEPRECATED_MSG,\n      default: 0,\n      validator: function validator(val) {\n        return /^\\d+/.test(String(val));\n      }\n    }\n  },\n  data: function data() {\n    return {\n      // Flag for displaying which empty slot to show and some event triggering\n      isFiltered: false,\n      // Where we store the copy of the filter criteria after debouncing\n      // We pre-set it with the sanitized filter value\n      localFilter: this.filterSanitize(this.filter)\n    };\n  },\n  computed: {\n    computedFilterIgnored: function computedFilterIgnored() {\n      return this.filterIgnoredFields ? concat(this.filterIgnoredFields).filter(Boolean) : null;\n    },\n    computedFilterIncluded: function computedFilterIncluded() {\n      return this.filterIncludedFields ? concat(this.filterIncludedFields).filter(Boolean) : null;\n    },\n    computedFilterDebounce: function computedFilterDebounce() {\n      var ms = toInteger(this.filterDebounce) || 0;\n      /* istanbul ignore next */\n\n      if (ms > 0) {\n        warn(DEBOUNCE_DEPRECATED_MSG, 'BTable');\n      }\n\n      return ms;\n    },\n    localFiltering: function localFiltering() {\n      return this.hasProvider ? !!this.noProviderFiltering : true;\n    },\n    // For watching changes to `filteredItems` vs `localItems`\n    filteredCheck: function filteredCheck() {\n      return {\n        filteredItems: this.filteredItems,\n        localItems: this.localItems,\n        localFilter: this.localFilter\n      };\n    },\n    // Sanitized/normalize filter-function prop\n    localFilterFn: function localFilterFn() {\n      // Return `null` to signal to use internal filter function\n      return isFunction(this.filterFunction) ? this.filterFunction : null;\n    },\n    // Returns the records in `localItems` that match the filter criteria\n    // Returns the original `localItems` array if not sorting\n    filteredItems: function filteredItems() {\n      var items = this.localItems || []; // Note the criteria is debounced and sanitized\n\n      var criteria = this.localFilter; // Resolve the filtering function, when requested\n      // We prefer the provided filtering function and fallback to the internal one\n      // When no filtering criteria is specified the filtering factories will return `null`\n\n      var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n      return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n    }\n  },\n  watch: {\n    // Watch for debounce being set to 0\n    computedFilterDebounce: function computedFilterDebounce(newVal) {\n      if (!newVal && this.$_filterTimer) {\n        clearTimeout(this.$_filterTimer);\n        this.$_filterTimer = null;\n        this.localFilter = this.filterSanitize(this.filter);\n      }\n    },\n    // Watch for changes to the filter criteria, and debounce if necessary\n    filter: {\n      // We need a deep watcher in case the user passes\n      // an object when using `filter-function`\n      deep: true,\n      handler: function handler(newCriteria) {\n        var _this = this;\n\n        var timeout = this.computedFilterDebounce;\n        clearTimeout(this.$_filterTimer);\n        this.$_filterTimer = null;\n\n        if (timeout && timeout > 0) {\n          // If we have a debounce time, delay the update of `localFilter`\n          this.$_filterTimer = setTimeout(function () {\n            _this.localFilter = _this.filterSanitize(newCriteria);\n          }, timeout);\n        } else {\n          // Otherwise, immediately update `localFilter` with `newFilter` value\n          this.localFilter = this.filterSanitize(newCriteria);\n        }\n      }\n    },\n    // Watch for changes to the filter criteria and filtered items vs `localItems`\n    // Set visual state and emit events as required\n    filteredCheck: function filteredCheck(_ref) {\n      var filteredItems = _ref.filteredItems,\n          localFilter = _ref.localFilter;\n      // Determine if the dataset is filtered or not\n      var isFiltered = false;\n\n      if (!localFilter) {\n        // If filter criteria is falsey\n        isFiltered = false;\n      } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n        // If filter criteria is an empty array or object\n        isFiltered = false;\n      } else if (localFilter) {\n        // If filter criteria is truthy\n        isFiltered = true;\n      }\n\n      if (isFiltered) {\n        this.$emit('filtered', filteredItems, filteredItems.length);\n      }\n\n      this.isFiltered = isFiltered;\n    },\n    isFiltered: function isFiltered(newVal, oldVal) {\n      if (newVal === false && oldVal === true) {\n        // We need to emit a filtered event if isFiltered transitions from true to\n        // false so that users can update their pagination controls.\n        this.$emit('filtered', this.localItems, this.localItems.length);\n      }\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // Create non-reactive prop where we store the debounce timer id\n    this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n    // This will trigger any watchers/dependents\n    // this.localFilter = this.filterSanitize(this.filter)\n    // Set the initial filtered state in a `$nextTick()` so that\n    // we trigger a filtered event if needed\n\n    this.$nextTick(function () {\n      _this2.isFiltered = Boolean(_this2.localFilter);\n    });\n  },\n  beforeDestroy: function beforeDestroy()\n  /* istanbul ignore next */\n  {\n    clearTimeout(this.$_filterTimer);\n    this.$_filterTimer = null;\n  },\n  methods: {\n    filterSanitize: function filterSanitize(criteria) {\n      // Sanitizes filter criteria based on internal or external filtering\n      if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n        // If using internal filter function, which only accepts string or RegExp,\n        // return '' to signify no filter\n        return '';\n      } // Could be a string, object or array, as needed by external filter function\n      // We use `cloneDeep` to ensure we have a new copy of an object or array\n      // without Vue's reactive observers\n\n\n      return cloneDeep(criteria);\n    },\n    // Filter Function factories\n    filterFnFactory: function filterFnFactory(filterFn, criteria) {\n      // Wrapper factory for external filter functions\n      // Wrap the provided filter-function and return a new function\n      // Returns `null` if no filter-function defined or if criteria is falsey\n      // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n      // we have it passed, so that the caller computed prop will be reactive to changes\n      // in the original filter-function (as this routine is a method)\n      if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n        return null;\n      } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n      var fn = function fn(item) {\n        // Generated function returns true if the criteria matches part\n        // of the serialized data, otherwise false\n        return filterFn(item, criteria);\n      }; // Return the wrapped function\n\n\n      return fn;\n    },\n    defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n      var _this3 = this;\n\n      // Generates the default filter function, using the given filter criteria\n      // Returns `null` if no criteria or criteria format not supported\n      if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n        // Built in filter can only support strings or RegExp criteria (at the moment)\n        return null;\n      } // Build the RegExp needed for filtering\n\n\n      var regExp = criteria;\n\n      if (isString(regExp)) {\n        // Escape special RegExp characters in the string and convert contiguous\n        // whitespace to \\s+ matches\n        var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n        // to find the value once in the string)\n\n        regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n      } // Generate the wrapped filter test function to use\n\n\n      var fn = function fn(item) {\n        // This searches all row values (and sub property values) in the entire (excluding\n        // special `_` prefixed keys), because we convert the record to a space-separated\n        // string containing all the value properties (recursively), even ones that are\n        // not visible (not specified in this.fields)\n        // Users can ignore filtering on specific fields, or on only certain fields,\n        // and can optionall specify searching results of fields with formatter\n        //\n        // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n        //\n        // Generated function returns true if the criteria matches part of\n        // the serialized data, otherwise false\n        //\n        // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n        regExp.lastIndex = 0;\n        return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n      }; // Return the generated function\n\n\n      return fn;\n    }\n  }\n};","import get from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isUndefinedOrNull } from '../../../utils/inspect';\nimport stringifyObjectValues from './stringify-object-values'; // Default sort compare routine\n//\n// TODO: Add option to sort by multiple columns (tri-state per column,\n//       plus order of columns in sort)  where sortBy could be an array\n//       of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n//       or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n//       Multisort will most likely be handled in mixin-sort.js by\n//       calling this method for each sortBy\n\nvar defaultSortCompare = function defaultSortCompare(a, b, sortBy, sortDesc, formatter, localeOpts, locale, nullLast) {\n  var aa = get(a, sortBy, null);\n  var bb = get(b, sortBy, null);\n\n  if (isFunction(formatter)) {\n    aa = formatter(aa, sortBy, a);\n    bb = formatter(bb, sortBy, b);\n  }\n\n  aa = isUndefinedOrNull(aa) ? '' : aa;\n  bb = isUndefinedOrNull(bb) ? '' : bb;\n\n  if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n    // Special case for comparing dates and numbers\n    // Internally dates are compared via their epoch number values\n    return aa < bb ? -1 : aa > bb ? 1 : 0;\n  } else if (nullLast && aa === '' && bb !== '') {\n    // Special case when sorting null/undefined/empty string last\n    return 1;\n  } else if (nullLast && aa !== '' && bb === '') {\n    // Special case when sorting null/undefined/empty string last\n    return -1;\n  } // Do localized string comparison\n\n\n  return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOpts);\n};\n\nexport default defaultSortCompare;","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 stableSort from '../../../utils/stable-sort';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { trim } from '../../../utils/string';\nimport defaultSortCompare from './default-sort-compare';\nexport default {\n  props: {\n    sortBy: {\n      type: String,\n      default: ''\n    },\n    sortDesc: {\n      // TODO: Make this tri-state: true, false, null\n      type: Boolean,\n      default: false\n    },\n    sortDirection: {\n      // This prop is named incorrectly\n      // It should be `initialSortDirection` as it is a bit misleading\n      // (not to mention it screws up the ARIA label on the headers)\n      type: String,\n      default: 'asc',\n      validator: function validator(direction) {\n        return arrayIncludes(['asc', 'desc', 'last'], direction);\n      }\n    },\n    sortCompare: {\n      type: Function,\n      default: null\n    },\n    sortCompareOptions: {\n      // Supported localCompare options, see `options` section of:\n      // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare\n      type: Object,\n      default: function _default() {\n        return {\n          numeric: true\n        };\n      }\n    },\n    sortCompareLocale: {\n      // String: locale code\n      // Array: array of Locale strings\n      type: [String, Array] // default: undefined\n\n    },\n    sortNullLast: {\n      // Sort null and undefined to appear last\n      type: Boolean,\n      default: false\n    },\n    noSortReset: {\n      // Another prop that should have had a better name.\n      // It should be noSortClear (on non-sortable headers).\n      // We will need to make sure the documentation is clear on what\n      // this prop does (as well as in the code for future reference)\n      type: Boolean,\n      default: false\n    },\n    labelSortAsc: {\n      type: String,\n      default: 'Click to sort Ascending'\n    },\n    labelSortDesc: {\n      type: String,\n      default: 'Click to sort Descending'\n    },\n    labelSortClear: {\n      type: String,\n      default: 'Click to clear sorting'\n    },\n    noLocalSorting: {\n      type: Boolean,\n      default: false\n    },\n    noFooterSorting: {\n      type: Boolean,\n      default: false\n    },\n    sortIconLeft: {\n      // Place the sorting icon on the left of the header cells\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      localSortBy: this.sortBy || '',\n      localSortDesc: this.sortDesc || false\n    };\n  },\n  computed: {\n    localSorting: function localSorting() {\n      return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n    },\n    isSortable: function isSortable() {\n      return this.computedFields.some(function (f) {\n        return f.sortable;\n      });\n    },\n    sortedItems: function sortedItems() {\n      // Sorts the filtered items and returns a new array of the sorted items\n      // or the original items array if not sorted.\n      var items = (this.filteredItems || this.localItems || []).slice();\n      var sortBy = this.localSortBy;\n      var sortDesc = this.localSortDesc;\n      var sortCompare = this.sortCompare;\n      var localSorting = this.localSorting;\n\n      var sortOptions = _objectSpread({}, this.sortCompareOptions, {\n        usage: 'sort'\n      });\n\n      var sortLocale = this.sortCompareLocale || undefined;\n      var nullLast = this.sortNullLast;\n\n      if (sortBy && localSorting) {\n        var field = this.computedFieldsObj[sortBy] || {};\n        var sortByFormatted = field.sortByFormatted;\n        var formatter = isFunction(sortByFormatted) ? sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n        return stableSort(items, function (a, b) {\n          var result = null;\n\n          if (isFunction(sortCompare)) {\n            // Call user provided sortCompare routine\n            result = sortCompare(a, b, sortBy, sortDesc, formatter, sortOptions, sortLocale);\n          }\n\n          if (isUndefinedOrNull(result) || result === false) {\n            // Fallback to built-in defaultSortCompare if sortCompare\n            // is not defined or returns null/false\n            result = defaultSortCompare(a, b, sortBy, sortDesc, formatter, sortOptions, sortLocale, nullLast);\n          } // Negate result if sorting in descending order\n\n\n          return (result || 0) * (sortDesc ? -1 : 1);\n        });\n      }\n\n      return items;\n    }\n  },\n  watch: {\n    isSortable: function isSortable(newVal)\n    /* istanbul ignore next: pain in the butt to test */\n    {\n      if (newVal) {\n        if (this.isSortable) {\n          this.$on('head-clicked', this.handleSort);\n        }\n      } else {\n        this.$off('head-clicked', this.handleSort);\n      }\n    },\n    sortDesc: function sortDesc(newVal) {\n      if (newVal === this.localSortDesc) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      this.localSortDesc = newVal || false;\n    },\n    sortBy: function sortBy(newVal) {\n      if (newVal === this.localSortBy) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      this.localSortBy = newVal || '';\n    },\n    // Update .sync props\n    localSortDesc: function localSortDesc(newVal, oldVal) {\n      // Emit update to sort-desc.sync\n      if (newVal !== oldVal) {\n        this.$emit('update:sortDesc', newVal);\n      }\n    },\n    localSortBy: function localSortBy(newVal, oldVal) {\n      if (newVal !== oldVal) {\n        this.$emit('update:sortBy', newVal);\n      }\n    }\n  },\n  created: function created() {\n    if (this.isSortable) {\n      this.$on('head-clicked', this.handleSort);\n    }\n  },\n  methods: {\n    // Handlers\n    // Need to move from thead-mixin\n    handleSort: function handleSort(key, field, evt, isFoot) {\n      var _this = this;\n\n      if (!this.isSortable) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      if (isFoot && this.noFooterSorting) {\n        return;\n      } // TODO: make this tri-state sorting\n      // cycle desc => asc => none => desc => ...\n\n\n      var sortChanged = false;\n\n      var toggleLocalSortDesc = function toggleLocalSortDesc() {\n        var sortDirection = field.sortDirection || _this.sortDirection;\n\n        if (sortDirection === 'asc') {\n          _this.localSortDesc = false;\n        } else if (sortDirection === 'desc') {\n          _this.localSortDesc = true;\n        } else {// sortDirection === 'last'\n          // Leave at last sort direction from previous column\n        }\n      };\n\n      if (field.sortable) {\n        if (key === this.localSortBy) {\n          // Change sorting direction on current column\n          this.localSortDesc = !this.localSortDesc;\n        } else {\n          // Start sorting this column ascending\n          this.localSortBy = key; // this.localSortDesc = false\n\n          toggleLocalSortDesc();\n        }\n\n        sortChanged = true;\n      } else if (this.localSortBy && !this.noSortReset) {\n        this.localSortBy = '';\n        toggleLocalSortDesc();\n        sortChanged = true;\n      }\n\n      if (sortChanged) {\n        // Sorting parameters changed\n        this.$emit('sort-changed', this.context);\n      }\n    },\n    // methods to compute classes and attrs for thead>th cells\n    sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n      return {\n        // If sortable and sortIconLeft are true, then place sort icon on the left\n        'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n      };\n    },\n    sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n      if (!this.isSortable || isFoot && this.noFooterSorting) {\n        // No attributes if not a sortable table\n        return {};\n      }\n\n      var sortable = field.sortable; // Assemble the aria-sort attribute value\n\n      var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n      return {\n        'aria-sort': ariaSort\n      };\n    },\n    sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n      // A label to be placed in an `.sr-only` element in the header cell\n      if (!this.isSortable || isFoot && this.noFooterSorting) {\n        // No label if not a sortable table\n        return null;\n      }\n\n      var sortable = field.sortable; // The correctness of these labels is very important for screen-reader users.\n\n      var labelSorting = '';\n\n      if (sortable) {\n        if (this.localSortBy === key) {\n          // currently sorted sortable column.\n          labelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n        } else {\n          // Not currently sorted sortable column.\n          // Not using nested ternary's here for clarity/readability\n          // Default for ariaLabel\n          labelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n          var sortDirection = this.sortDirection || field.sortDirection;\n\n          if (sortDirection === 'asc') {\n            labelSorting = this.labelSortAsc;\n          } else if (sortDirection === 'desc') {\n            labelSorting = this.labelSortDesc;\n          }\n        }\n      } else if (!this.noSortReset) {\n        // Non sortable column\n        labelSorting = this.localSortBy ? this.labelSortClear : '';\n      } // Return the sr-only sort label or null if no label\n\n\n      return trim(labelSorting) || null;\n    }\n  }\n};","export default {\n  props: {\n    perPage: {\n      type: [Number, String],\n      default: 0\n    },\n    currentPage: {\n      type: [Number, String],\n      default: 1\n    }\n  },\n  computed: {\n    localPaging: function localPaging() {\n      return this.hasProvider ? !!this.noProviderPaging : true;\n    },\n    paginatedItems: function paginatedItems() {\n      var items = this.sortedItems || this.filteredItems || this.localItems || [];\n      var currentPage = Math.max(parseInt(this.currentPage, 10) || 1, 1);\n      var perPage = Math.max(parseInt(this.perPage, 10) || 0, 0); // Apply local pagination\n\n      if (this.localPaging && !!perPage) {\n        // Grab the current page of data (which may be past filtered items limit)\n        items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n      } // Return the items to display in the table\n\n\n      return items;\n    }\n  }\n};","import { htmlOrText } from '../../../utils/html';\nexport default {\n  props: {\n    // `caption-top` is part of table-redere mixin (styling)\n    // captionTop: {\n    //   type: Boolean,\n    //   default: false\n    // },\n    caption: {\n      type: String,\n      default: null\n    },\n    captionHtml: {\n      type: String\n    }\n  },\n  computed: {\n    captionId: function captionId() {\n      // Even though `this.safeId` looks like a method, it is a computed prop\n      // that returns a new function if the underlying ID changes\n      return this.isStacked ? this.safeId('_caption_') : null;\n    }\n  },\n  methods: {\n    renderCaption: function renderCaption() {\n      var h = this.$createElement; // Build the caption\n\n      var $captionSlot = this.normalizeSlot('table-caption');\n      var $caption = h();\n\n      if ($captionSlot || this.caption || this.captionHtml) {\n        var data = {\n          key: 'caption',\n          attrs: {\n            id: this.captionId\n          }\n        };\n\n        if (!$captionSlot) {\n          data.domProps = htmlOrText(this.captionHtml, this.caption);\n        }\n\n        $caption = h('caption', data, [$captionSlot]);\n      }\n\n      return $caption;\n    }\n  }\n};","export default {\n  methods: {\n    renderColgroup: function renderColgroup() {\n      var h = this.$createElement;\n      var fields = this.computedFields;\n      var $colgroup = h();\n\n      if (this.hasNormalizedSlot('table-colgroup')) {\n        $colgroup = h('colgroup', {\n          key: 'colgroup'\n        }, [this.normalizeSlot('table-colgroup', {\n          columns: fields.length,\n          fields: fields\n        })]);\n      }\n\n      return $colgroup;\n    }\n  }\n};","import { closest, getAttr, getById, matches, select } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nvar filterEvent = function filterEvent(evt) {\n  // Exit early when we don't have a target element\n  if (!evt || !evt.target) {\n    /* istanbul ignore next */\n    return false;\n  }\n\n  var el = evt.target; // Exit early when element is disabled or a table element\n\n  if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n    return false;\n  } // Ignore the click when it was inside a dropdown menu\n\n\n  if (closest('.dropdown-menu', el)) {\n    return true;\n  }\n\n  var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n  // Modern browsers have `label.control` that references the associated input, but IE 11\n  // does not have this property on the label element, so we resort to DOM lookups\n\n  if (label) {\n    var labelFor = getAttr(label, 'for');\n    var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n    if (input && !input.disabled) {\n      return true;\n    }\n  } // Otherwise check if the event target matches one of the selectors in the\n  // event filter (i.e. anchors, non disabled inputs, etc.)\n  // Return `true` if we should ignore the event\n\n\n  return matches(el, EVENT_FILTER);\n};\n\nexport default filterEvent;","import { getSel, isElement } from '../../../utils/dom'; // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nvar textSelectionActive = function textSelectionActive() {\n  var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n  var sel = getSel();\n  return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ? sel.containsNode(el, true) : false;\n};\n\nexport default textSelectionActive;","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 '../../utils/vue';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nexport var props = {\n  headVariant: {\n    // Also sniffed by <b-tr> / <b-td> / <b-th>\n    type: String,\n    // supported values: 'lite', 'dark', or null\n    default: null\n  }\n}; // @vue/component\n\nexport var BThead = /*#__PURE__*/Vue.extend({\n  name: 'BThead',\n  mixins: [normalizeSlotMixin],\n  inheritAttrs: false,\n  provide: function provide() {\n    return {\n      bvTableRowGroup: this\n    };\n  },\n  inject: {\n    bvTable: {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      default: function _default()\n      /* istanbul ignore next */\n      {\n        return {};\n      }\n    }\n  },\n  props: props,\n  computed: {\n    isThead: function isThead() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return true;\n    },\n    isDark: function isDark() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.dark;\n    },\n    isStacked: function isStacked() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.isStacked;\n    },\n    isResponsive: function isResponsive() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.isResponsive;\n    },\n    isStickyHeader: function isStickyHeader() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      // Needed to handle header background classes, due to lack of\n      // background color inheritance with Bootstrap v4 table CSS\n      // Sticky headers only apply to cells in table `thead`\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    hasStickyHeader: function hasStickyHeader() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      // Needed to handle header background classes, due to lack of\n      // background color inheritance with Bootstrap v4 table CSS\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    tableVariant: function tableVariant() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.tableVariant;\n    },\n    theadClasses: function theadClasses() {\n      return [this.headVariant ? \"thead-\".concat(this.headVariant) : null];\n    },\n    theadAttrs: function theadAttrs() {\n      return _objectSpread({\n        role: 'rowgroup'\n      }, this.$attrs);\n    }\n  },\n  render: function render(h) {\n    return h('thead', {\n      class: this.theadClasses,\n      attrs: this.theadAttrs,\n      // Pass down any native listeners\n      on: this.$listeners\n    }, this.normalizeSlot('default'));\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 '../../utils/vue';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nexport var props = {\n  footVariant: {\n    type: String,\n    // supported values: 'lite', 'dark', or null\n    default: null\n  }\n}; // @vue/component\n\nexport var BTfoot = /*#__PURE__*/Vue.extend({\n  name: 'BTfoot',\n  mixins: [normalizeSlotMixin],\n  inheritAttrs: false,\n  provide: function provide() {\n    return {\n      bvTableRowGroup: this\n    };\n  },\n  inject: {\n    bvTable: {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      default: function _default()\n      /* istanbul ignore next */\n      {\n        return {};\n      }\n    }\n  },\n  props: props,\n  computed: {\n    isTfoot: function isTfoot() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return true;\n    },\n    isDark: function isDark()\n    /* istanbul ignore next: Not currently sniffed in tests */\n    {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.dark;\n    },\n    isStacked: function isStacked() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.isStacked;\n    },\n    isResponsive: function isResponsive() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.isResponsive;\n    },\n    isStickyHeader: function isStickyHeader() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      // Sticky headers are only supported in thead\n      return false;\n    },\n    hasStickyHeader: function hasStickyHeader() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      // Needed to handle header background classes, due to lack of\n      // background color inheritance with Bootstrap v4 table CSS\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    tableVariant: function tableVariant()\n    /* istanbul ignore next: Not currently sniffed in tests */\n    {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.tableVariant;\n    },\n    tfootClasses: function tfootClasses() {\n      return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n    },\n    tfootAttrs: function tfootAttrs() {\n      return _objectSpread({\n        role: 'rowgroup'\n      }, this.$attrs);\n    }\n  },\n  render: function render(h) {\n    return h('tfoot', {\n      class: this.tfootClasses,\n      attrs: this.tfootAttrs,\n      // Pass down any native listeners\n      on: this.$listeners\n    }, this.normalizeSlot('default'));\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 '../../utils/vue';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nexport var props = {\n  variant: {\n    type: String,\n    default: null\n  }\n};\nvar LIGHT = 'light';\nvar DARK = 'dark'; // @vue/component\n\nexport var BTr = /*#__PURE__*/Vue.extend({\n  name: 'BTr',\n  mixins: [normalizeSlotMixin],\n  inheritAttrs: false,\n  provide: function provide() {\n    return {\n      bvTableTr: this\n    };\n  },\n  inject: {\n    bvTableRowGroup: {\n      default: function _default()\n      /* istanbul ignore next */\n      {\n        return {};\n      }\n    }\n  },\n  props: props,\n  computed: {\n    inTbody: function inTbody() {\n      // Sniffed by <b-td> / <b-th>\n      return this.bvTableRowGroup.isTbody;\n    },\n    inThead: function inThead() {\n      // Sniffed by <b-td> / <b-th>\n      return this.bvTableRowGroup.isThead;\n    },\n    inTfoot: function inTfoot() {\n      // Sniffed by <b-td> / <b-th>\n      return this.bvTableRowGroup.isTfoot;\n    },\n    isDark: function isDark() {\n      // Sniffed by <b-td> / <b-th>\n      return this.bvTableRowGroup.isDark;\n    },\n    isStacked: function isStacked() {\n      // Sniffed by <b-td> / <b-th>\n      return this.bvTableRowGroup.isStacked;\n    },\n    isResponsive: function isResponsive() {\n      // Sniffed by <b-td> / <b-th>\n      return this.bvTableRowGroup.isResponsive;\n    },\n    isStickyHeader: function isStickyHeader() {\n      // Sniffed by <b-td> / <b-th>\n      // Sticky headers are only supported in thead\n      return this.bvTableRowGroup.isStickyHeader;\n    },\n    hasStickyHeader: function hasStickyHeader() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      // Needed to handle header background classes, due to lack of\n      // background color inheritance with Bootstrap v4 table CSS\n      return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n    },\n    tableVariant: function tableVariant() {\n      // Sniffed by <b-td> / <b-th>\n      return this.bvTableRowGroup.tableVariant;\n    },\n    headVariant: function headVariant() {\n      // Sniffed by <b-td> / <b-th>\n      return this.inThead ? this.bvTableRowGroup.headVariant : null;\n    },\n    footVariant: function footVariant() {\n      // Sniffed by <b-td> / <b-th>\n      return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n    },\n    isRowDark: function isRowDark() {\n      return this.headVariant === LIGHT || this.footVariant === LIGHT ? false : this.headVariant === DARK || this.footVariant === DARK ? true : this.isDark;\n    },\n    trClasses: function trClasses() {\n      return [this.variant ? \"\".concat(this.isRowDark ? 'bg' : 'table', \"-\").concat(this.variant) : null];\n    },\n    trAttrs: function trAttrs() {\n      return _objectSpread({\n        role: 'row'\n      }, this.$attrs);\n    }\n  },\n  render: function render(h) {\n    return h('tr', {\n      class: this.trClasses,\n      attrs: this.trAttrs,\n      // Pass native listeners to child\n      on: this.$listeners\n    }, this.normalizeSlot('default'));\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 '../../utils/vue';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toString } from '../../utils/string';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nvar digitsRx = /^\\d+$/; // Parse a rowspan or colspan into a digit (or null if < 1 or NaN)\n\nvar parseSpan = function parseSpan(val) {\n  val = parseInt(val, 10);\n  return digitsRx.test(String(val)) && val > 0 ? val : null;\n};\n/* istanbul ignore next */\n\n\nvar spanValidator = function spanValidator(val) {\n  return isUndefinedOrNull(val) || parseSpan(val) > 0;\n};\n\nexport var props = {\n  variant: {\n    type: String,\n    default: null\n  },\n  colspan: {\n    type: [Number, String],\n    default: null,\n    validator: spanValidator\n  },\n  rowspan: {\n    type: [Number, String],\n    default: null,\n    validator: spanValidator\n  },\n  stackedHeading: {\n    type: String,\n    default: null\n  },\n  stickyColumn: {\n    type: Boolean,\n    default: false\n  }\n}; // @vue/component\n\nexport var BTd = /*#__PURE__*/Vue.extend({\n  name: 'BTableCell',\n  mixins: [normalizeSlotMixin],\n  inheritAttrs: false,\n  inject: {\n    bvTableTr: {\n      default: function _default()\n      /* istanbul ignore next */\n      {\n        return {};\n      }\n    }\n  },\n  props: props,\n  computed: {\n    tag: function tag() {\n      // Overridden by <b-th>\n      return 'td';\n    },\n    inTbody: function inTbody() {\n      return this.bvTableTr.inTbody;\n    },\n    inThead: function inThead() {\n      return this.bvTableTr.inThead;\n    },\n    inTfoot: function inTfoot() {\n      return this.bvTableTr.inTfoot;\n    },\n    isDark: function isDark() {\n      return this.bvTableTr.isDark;\n    },\n    isStacked: function isStacked() {\n      return this.bvTableTr.isStacked;\n    },\n    isStackedCell: function isStackedCell() {\n      // We only support stacked-heading in tbody in stacked mode\n      return this.inTbody && this.isStacked;\n    },\n    isResponsive: function isResponsive() {\n      return this.bvTableTr.isResponsive;\n    },\n    isStickyHeader: function isStickyHeader() {\n      // Needed to handle header background classes, due to lack of\n      // background color inheritance with Bootstrap v4 table CSS\n      // Sticky headers only apply to cells in table `thead`\n      return this.bvTableTr.isStickyHeader;\n    },\n    hasStickyHeader: function hasStickyHeader() {\n      // Needed to handle header background classes, due to lack of\n      // background color inheritance with Bootstrap v4 table CSS\n      return this.bvTableTr.hasStickyHeader;\n    },\n    isStickyColumn: function isStickyColumn() {\n      // Needed to handle background classes, due to lack of\n      // background color inheritance with Bootstrap v4 table CSS\n      // Sticky column cells are only available in responsive\n      // mode (horizontal scrolling) or when sticky header mode\n      // Applies to cells in `thead`, `tbody` and `tfoot`\n      return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n    },\n    rowVariant: function rowVariant() {\n      return this.bvTableTr.variant;\n    },\n    headVariant: function headVariant() {\n      return this.bvTableTr.headVariant;\n    },\n    footVariant: function footVariant()\n    /* istanbul ignore next: need to add in tests for footer variant */\n    {\n      return this.bvTableTr.footVariant;\n    },\n    tableVariant: function tableVariant() {\n      return this.bvTableTr.tableVariant;\n    },\n    computedColspan: function computedColspan() {\n      return parseSpan(this.colspan);\n    },\n    computedRowspan: function computedRowspan() {\n      return parseSpan(this.rowspan);\n    },\n    cellClasses: function cellClasses() {\n      // We use computed props here for improved performance by caching\n      // the results of the string interpolation\n      // TODO: need to add handling for footVariant\n      var variant = this.variant;\n\n      if (!variant && this.isStickyHeader && !this.headVariant || !variant && this.isStickyColumn) {\n        // Needed for sticky-header mode as Bootstrap v4 table cells do\n        // not inherit parent's background-color. Boo!\n        variant = this.rowVariant || this.tableVariant || 'b-table-default';\n      }\n\n      return [variant ? \"\".concat(this.isDark ? 'bg' : 'table', \"-\").concat(variant) : null, this.isStickyColumn ? 'b-table-sticky-column' : null];\n    },\n    cellAttrs: function cellAttrs() {\n      // We use computed props here for improved performance by caching\n      // the results of the object spread (Object.assign)\n      var headOrFoot = this.inThead || this.inTfoot; // Make sure col/rowspan's are > 0 or null\n\n      var colspan = this.computedColspan;\n      var rowspan = this.computedRowspan; // Default role and scope\n\n      var role = 'cell';\n      var scope = null; // Compute role and scope\n      // We only add scopes with an explicit span of 1 or greater\n\n      if (headOrFoot) {\n        // Header or footer cells\n        role = 'columnheader';\n        scope = colspan > 0 ? 'colspan' : 'col';\n      } else if (this.tag === 'th') {\n        // th's in tbody\n        role = 'rowheader';\n        scope = rowspan > 0 ? 'rowgroup' : 'row';\n      }\n\n      return _objectSpread({\n        colspan: colspan,\n        rowspan: rowspan,\n        role: role,\n        scope: scope\n      }, this.$attrs, {\n        // Add in the stacked cell label data-attribute if in\n        // stacked mode (if a stacked heading label is provided)\n        'data-label': this.isStackedCell && !isUndefinedOrNull(this.stackedHeading) ? toString(this.stackedHeading) : null\n      });\n    }\n  },\n  render: function render(h) {\n    var content = [this.normalizeSlot('default')];\n    return h(this.tag, {\n      class: this.cellClasses,\n      attrs: this.cellAttrs,\n      // Transfer any native listeners\n      on: this.$listeners\n    }, [this.isStackedCell ? h('div', [content]) : content]);\n  }\n});","import Vue from '../../utils/vue';\nimport { BTd } from './td'; // @vue/component\n\nexport var BTh = /*#__PURE__*/Vue.extend({\n  name: 'BTh',\n  extends: BTd,\n  computed: {\n    tag: function tag() {\n      return 'th';\n    }\n  }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\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 identity from '../../../utils/identity';\nimport KeyCodes from '../../../utils/key-codes';\nimport startCase from '../../../utils/startcase';\nimport { getComponentConfig } from '../../../utils/config';\nimport { htmlOrText } from '../../../utils/html';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport filterEvent from './filter-event';\nimport textSelectionActive from './text-selection-active';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nexport default {\n  props: {\n    headVariant: {\n      type: String,\n      // 'light', 'dark' or `null` (or custom)\n      default: function _default() {\n        return getComponentConfig('BTable', 'headVariant');\n      }\n    },\n    headRowVariant: {\n      type: String,\n      // Any Bootstrap theme variant (or custom)\n      default: null\n    },\n    theadClass: {\n      type: [String, Array, Object] // default: undefined\n\n    },\n    theadTrClass: {\n      type: [String, Array, Object] // default: undefined\n\n    }\n  },\n  methods: {\n    fieldClasses: function fieldClasses(field) {\n      // Header field (<th>) classes\n      return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n    },\n    headClicked: function headClicked(evt, field, isFoot) {\n      if (this.stopIfBusy && this.stopIfBusy(evt)) {\n        // If table is busy (via provider) then don't propagate\n        return;\n      } else if (filterEvent(evt)) {\n        // Clicked on a non-disabled control so ignore\n        return;\n      } else if (textSelectionActive(this.$el)) {\n        // User is selecting text, so ignore\n\n        /* istanbul ignore next: JSDOM doesn't support getSelection() */\n        return;\n      }\n\n      evt.stopPropagation();\n      evt.preventDefault();\n      this.$emit('head-clicked', field.key, field, evt, isFoot);\n    },\n    renderThead: function renderThead() {\n      var _this = this;\n\n      var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var h = this.$createElement;\n      var fields = this.computedFields || [];\n\n      if (this.isStackedAlways || fields.length === 0) {\n        // In always stacked mode, we don't bother rendering the head/foot\n        // Or if no field headings (empty table)\n        return h();\n      } // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n\n      var selectAllRows = this.isSelectable ? this.selectAllRows : function () {};\n      var clearSelected = this.isSelectable ? this.clearSelected : function () {}; // Helper function to generate a field <th> cell\n\n      var makeCell = function makeCell(field, colIndex) {\n        var ariaLabel = null;\n\n        if (!field.label.trim() && !field.headerTitle) {\n          // In case field's label and title are empty/blank\n          // We need to add a hint about what the column is about for non-sighted users\n\n          /* istanbul ignore next */\n          ariaLabel = startCase(field.key);\n        }\n\n        var hasHeadClickListener = _this.hasListener('head-clicked') || _this.isSortable;\n\n        var handlers = {};\n\n        if (hasHeadClickListener) {\n          handlers.click = function (evt) {\n            _this.headClicked(evt, field, isFoot);\n          };\n\n          handlers.keydown = function (evt) {\n            var keyCode = evt.keyCode;\n\n            if (keyCode === KeyCodes.ENTER || keyCode === KeyCodes.SPACE) {\n              _this.headClicked(evt, field, isFoot);\n            }\n          };\n        }\n\n        var sortAttrs = _this.isSortable ? _this.sortTheadThAttrs(field.key, field, isFoot) : {};\n        var sortClass = _this.isSortable ? _this.sortTheadThClasses(field.key, field, isFoot) : null;\n        var sortLabel = _this.isSortable ? _this.sortTheadThLabel(field.key, field, isFoot) : null;\n        var data = {\n          key: field.key,\n          class: [_this.fieldClasses(field), sortClass],\n          props: {\n            variant: field.variant,\n            stickyColumn: field.stickyColumn\n          },\n          style: field.thStyle || {},\n          attrs: _objectSpread({\n            // We only add a tabindex of 0 if there is a head-clicked listener\n            tabindex: hasHeadClickListener ? '0' : null,\n            abbr: field.headerAbbr || null,\n            title: field.headerTitle || null,\n            'aria-colindex': colIndex + 1,\n            'aria-label': ariaLabel\n          }, _this.getThValues(null, field.key, field.thAttr, isFoot ? 'foot' : 'head', {}), {}, sortAttrs),\n          on: handlers\n        }; // Handle edge case where in-document templates are used with new\n        // `v-slot:name` syntax where the browser lower-cases the v-slot's\n        // name (attributes become lower cased when parsed by the browser)\n        // We have replaced the square bracket syntax with round brackets\n        // to prevent confusion with dynamic slot names\n\n        var slotNames = [\"head(\".concat(field.key, \")\"), \"head(\".concat(field.key.toLowerCase(), \")\"), 'head()'];\n\n        if (isFoot) {\n          // Footer will fallback to header slot names\n          slotNames = [\"foot(\".concat(field.key, \")\"), \"foot(\".concat(field.key.toLowerCase(), \")\"), 'foot()'].concat(_toConsumableArray(slotNames));\n        }\n\n        var scope = {\n          label: field.label,\n          column: field.key,\n          field: field,\n          isFoot: isFoot,\n          // Add in row select methods\n          selectAllRows: selectAllRows,\n          clearSelected: clearSelected\n        };\n        var content = _this.normalizeSlot(slotNames, scope) || (field.labelHtml ? h('div', {\n          domProps: htmlOrText(field.labelHtml)\n        }) : field.label);\n        var srLabel = sortLabel ? h('span', {\n          staticClass: 'sr-only'\n        }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n        return h(BTh, data, [content, srLabel].filter(identity));\n      }; // Generate the array of <th> cells\n\n\n      var $cells = fields.map(makeCell).filter(identity); // Genrate the row(s)\n\n      var $trs = [];\n\n      if (isFoot) {\n        var trProps = {\n          variant: isUndefinedOrNull(this.footRowVariant) ? this.headRowVariant : this.footRowVariant\n        };\n        $trs.push(h(BTr, {\n          class: this.tfootTrClass,\n          props: trProps\n        }, $cells));\n      } else {\n        var scope = {\n          columns: fields.length,\n          fields: fields,\n          // Add in row select methods\n          selectAllRows: selectAllRows,\n          clearSelected: clearSelected\n        };\n        $trs.push(this.normalizeSlot('thead-top', scope) || h());\n        $trs.push(h(BTr, {\n          class: this.theadTrClass,\n          props: {\n            variant: this.headRowVariant\n          }\n        }, $cells));\n      }\n\n      return h(isFoot ? BTfoot : BThead, {\n        key: isFoot ? 'bv-tfoot' : 'bv-thead',\n        class: (isFoot ? this.tfootClass : this.theadClass) || null,\n        props: isFoot ? {\n          footVariant: this.footVariant || this.headVariant || null\n        } : {\n          headVariant: this.headVariant || null\n        }\n      }, $trs);\n    }\n  }\n};","import { getComponentConfig } from '../../../utils/config';\nimport { BTfoot } from '../tfoot';\nexport default {\n  props: {\n    footClone: {\n      type: Boolean,\n      default: false\n    },\n    footVariant: {\n      type: String,\n      // 'dark', 'light', or `null` (or custom)\n      default: function _default() {\n        return getComponentConfig('BTable', 'footVariant');\n      }\n    },\n    footRowVariant: {\n      type: String,\n      // Any Bootstrap theme variant (or custom). Falls back to `headRowVariant`\n      default: null\n    },\n    tfootClass: {\n      type: [String, Array, Object],\n      default: null\n    },\n    tfootTrClass: {\n      type: [String, Array, Object],\n      default: null\n    }\n  },\n  methods: {\n    renderTFootCustom: function renderTFootCustom() {\n      var h = this.$createElement;\n\n      if (this.hasNormalizedSlot('custom-foot')) {\n        return h(BTfoot, {\n          key: 'bv-tfoot-custom',\n          class: this.tfootClass || null,\n          props: {\n            footVariant: this.footVariant || this.headVariant || null\n          }\n        }, this.normalizeSlot('custom-foot', {\n          items: this.computedItems.slice(),\n          fields: this.computedFields.slice(),\n          columns: this.computedFields.length\n        }));\n      } else {\n        return h();\n      }\n    },\n    renderTfoot: function renderTfoot() {\n      // Passing true to renderThead will make it render a tfoot\n      return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n    }\n  }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Vue from '../../utils/vue';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nexport var props = {\n  tbodyTransitionProps: {\n    type: Object // default: undefined\n\n  },\n  tbodyTransitionHandlers: {\n    type: Object // default: undefined\n\n  }\n}; // @vue/component\n\nexport var BTbody = /*#__PURE__*/Vue.extend({\n  name: 'BTbody',\n  mixins: [normalizeSlotMixin],\n  inheritAttrs: false,\n  provide: function provide() {\n    return {\n      bvTableRowGroup: this\n    };\n  },\n  inject: {\n    bvTable: {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      default: function _default()\n      /* istanbul ignore next */\n      {\n        return {};\n      }\n    }\n  },\n  props: props,\n  computed: {\n    isTbody: function isTbody() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return true;\n    },\n    isDark: function isDark() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.dark;\n    },\n    isStacked: function isStacked() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.isStacked;\n    },\n    isResponsive: function isResponsive() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.isResponsive;\n    },\n    isStickyHeader: function isStickyHeader() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      // Sticky headers are only supported in thead\n      return false;\n    },\n    hasStickyHeader: function hasStickyHeader() {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      // Needed to handle header background classes, due to lack of\n      // background color inheritance with Bootstrap v4 table CSS\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    tableVariant: function tableVariant()\n    /* istanbul ignore next: Not currently sniffed in tests */\n    {\n      // Sniffed by <b-tr> / <b-td> / <b-th>\n      return this.bvTable.tableVariant;\n    },\n    isTransitionGroup: function isTransitionGroup() {\n      return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n    },\n    tbodyAttrs: function tbodyAttrs() {\n      return _objectSpread({\n        role: 'rowgroup'\n      }, this.$attrs);\n    },\n    tbodyProps: function tbodyProps() {\n      return this.tbodyTransitionProps ? _objectSpread({}, this.tbodyTransitionProps, {\n        tag: 'tbody'\n      }) : {};\n    }\n  },\n  render: function render(h) {\n    var data = {\n      props: this.tbodyProps,\n      attrs: this.tbodyAttrs\n    };\n\n    if (this.isTransitionGroup) {\n      // We use native listeners if a transition group\n      // for any delegated events\n      data.on = this.tbodyTransitionHandlers || {};\n      data.nativeOn = this.$listeners || {};\n    } else {\n      // Otherwise we place any listeners on the tbody element\n      data.on = this.$listeners || {};\n    }\n\n    return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot('default'));\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 get from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nvar detailsSlotName = 'row-details';\nexport default {\n  props: {\n    tbodyTrClass: {\n      type: [String, Array, Object, Function],\n      default: null\n    },\n    tbodyTrAttr: {\n      type: [Object, Function],\n      default: null\n    },\n    detailsTdClass: {\n      type: [String, Array, Object],\n      default: null\n    }\n  },\n  methods: {\n    // Methods for computing classes, attributes and styles for table cells\n    getTdValues: function getTdValues(item, key, tdValue, defValue) {\n      var parent = this.$parent;\n\n      if (tdValue) {\n        var value = get(item, key, '');\n\n        if (isFunction(tdValue)) {\n          return tdValue(value, key, item);\n        } else if (isString(tdValue) && isFunction(parent[tdValue])) {\n          return parent[tdValue](value, key, item);\n        }\n\n        return tdValue;\n      }\n\n      return defValue;\n    },\n    getThValues: function getThValues(item, key, thValue, type, defValue) {\n      var parent = this.$parent;\n\n      if (thValue) {\n        var value = get(item, key, '');\n\n        if (isFunction(thValue)) {\n          return thValue(value, key, item, type);\n        } else if (isString(thValue) && isFunction(parent[thValue])) {\n          return parent[thValue](value, key, item, type);\n        }\n\n        return thValue;\n      }\n\n      return defValue;\n    },\n    // Method to get the value for a field\n    getFormattedValue: function getFormattedValue(item, field) {\n      var key = field.key;\n      var formatter = this.getFieldFormatter(key);\n      var value = get(item, key, null);\n\n      if (isFunction(formatter)) {\n        value = formatter(value, key, item);\n      }\n\n      return isUndefinedOrNull(value) ? '' : value;\n    },\n    // Factory function methods\n    toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n      var _this = this;\n\n      // Returns a function to toggle a row's details slot\n      return function () {\n        if (hasDetailsSlot) {\n          _this.$set(item, '_showDetails', !item._showDetails);\n        }\n      };\n    },\n    // Row event handlers\n    rowHovered: function rowHovered(evt) {\n      // `mouseenter` handler (non-bubbling)\n      // `this.tbodyRowEvtStopped` from tbody mixin\n      if (!this.tbodyRowEvtStopped(evt)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent('row-hovered', evt);\n      }\n    },\n    rowUnhovered: function rowUnhovered(evt) {\n      // `mouseleave` handler (non-bubbling)\n      // `this.tbodyRowEvtStopped` from tbody mixin\n      if (!this.tbodyRowEvtStopped(evt)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent('row-unhovered', evt);\n      }\n    },\n    // Render helpers\n    renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n      var _this2 = this;\n\n      // Renders a TD or TH for a row's field\n      var h = this.$createElement;\n      var hasDetailsSlot = this.hasNormalizedSlot(detailsSlotName);\n      var formatted = this.getFormattedValue(item, field);\n      var key = field.key;\n      var stickyColumn = !this.isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n      // improve performance of BTable/BTableLite by reducing the\n      // total number of vue instances created during render\n\n      var cellTag = stickyColumn ? field.isRowHeader ? BTh : BTd : field.isRowHeader ? 'th' : 'td';\n      var cellVariant = item._cellVariants && item._cellVariants[key] ? item._cellVariants[key] : field.variant || null;\n      var data = {\n        // For the Vue key, we concatenate the column index and\n        // field key (as field keys could be duplicated)\n        // TODO: Although we do prevent duplicate field keys...\n        //   So we could change this to: `row-${rowIndex}-cell-${key}`\n        key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key),\n        class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n        props: {},\n        attrs: _objectSpread({\n          'aria-colindex': String(colIndex + 1)\n        }, field.isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {}))\n      };\n\n      if (stickyColumn) {\n        // We are using the helper BTd or BTh\n        data.props = {\n          stackedHeading: this.isStacked ? field.label : null,\n          stickyColumn: true,\n          variant: cellVariant\n        };\n      } else {\n        // Using native TD or TH element, so we need to\n        // add in the attributes and variant class\n        data.attrs['data-label'] = this.isStacked && !isUndefinedOrNull(field.label) ? toString(field.label) : null;\n        data.attrs.role = field.isRowHeader ? 'rowheader' : 'cell';\n        data.attrs.scope = field.isRowHeader ? 'row' : null; // Add in the variant class\n\n        if (cellVariant) {\n          data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n        }\n      }\n\n      var slotScope = {\n        item: item,\n        index: rowIndex,\n        field: field,\n        unformatted: get(item, key, ''),\n        value: formatted,\n        toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n        detailsShowing: Boolean(item._showDetails)\n      }; // If table supports selectable mode, then add in the following scope\n      // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n      if (this.supportsSelectableRows) {\n        slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n        slotScope.selectRow = function () {\n          return _this2.selectRow(rowIndex);\n        };\n\n        slotScope.unselectRow = function () {\n          return _this2.unselectRow(rowIndex);\n        };\n      } // The new `v-slot` syntax doesn't like a slot name starting with\n      // a square bracket and if using in-document HTML templates, the\n      // v-slot attributes are lower-cased by the browser.\n      // Switched to round bracket syntax to prevent confusion with\n      // dynamic slot name syntax.\n      // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n      // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n      // Will be `null` if no slot (or fallback slot) exists\n\n\n      var slotName = this.$_bodyFieldSlotNameCache[key];\n      var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n      if (this.isStacked) {\n        // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n        $childNodes = [h('div', [$childNodes])];\n      } // Render either a td or th cell\n\n\n      return h(cellTag, data, [$childNodes]);\n    },\n    renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n      var _this3 = this;\n\n      // Renders an item's row (or rows if details supported)\n      var h = this.$createElement;\n      var fields = this.computedFields;\n      var tableStriped = this.striped;\n      var hasDetailsSlot = this.hasNormalizedSlot(detailsSlotName);\n      var rowShowDetails = item._showDetails && hasDetailsSlot;\n      var hasRowClickHandler = this.$listeners['row-clicked'] || this.hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n      var $rows = []; // Details ID needed for `aria-details` when details showing\n      // We set it to `null` when not showing so that attribute\n      // does not appear on the element\n\n      var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n      var $tds = fields.map(function (field, colIndex) {\n        return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n      }); // Calculate the row number in the dataset (indexed from 1)\n\n      var ariaRowIndex = null;\n\n      if (this.currentPage && this.perPage && this.perPage > 0) {\n        ariaRowIndex = String((this.currentPage - 1) * this.perPage + rowIndex + 1);\n      } // Create a unique :key to help ensure that sub components are re-rendered rather than\n      // re-used, which can cause issues. If a primary key is not provided we use the rendered\n      // rows index within the tbody.\n      // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n      var primaryKey = this.primaryKey;\n      var primaryKeyValue = toString(get(item, primaryKey)) || null;\n      var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n      // In the format of '{tableId}__row_{primaryKeyValue}'\n\n      var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n      var selectableClasses = this.selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n      var selectableAttrs = this.selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n      var userTrClasses = isFunction(this.tbodyTrClass) ? this.tbodyTrClass(item, 'row') : this.tbodyTrClass;\n      var userTrAttrs = isFunction(this.tbodyTrAttr) ? this.tbodyTrAttr(item, 'row') : this.tbodyTrAttr; // Add the item row\n\n      $rows.push(h(BTr, {\n        key: \"__b-table-row-\".concat(rowKey, \"__\"),\n        ref: 'itemRows',\n        refInFor: true,\n        class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n        props: {\n          variant: item._rowVariant || null\n        },\n        attrs: _objectSpread({\n          id: rowId\n        }, userTrAttrs, {\n          // Users cannot override the following attributes\n          tabindex: hasRowClickHandler ? '0' : null,\n          'data-pk': primaryKeyValue || null,\n          'aria-details': detailsId,\n          'aria-owns': detailsId,\n          'aria-rowindex': ariaRowIndex\n        }, selectableAttrs),\n        on: {\n          // Note: These events are not A11Y friendly!\n          mouseenter: this.rowHovered,\n          mouseleave: this.rowUnhovered\n        }\n      }, $tds)); // Row Details slot\n\n      if (rowShowDetails) {\n        var detailsScope = {\n          item: item,\n          index: rowIndex,\n          fields: fields,\n          toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n        }; // If table supports selectable mode, then add in the following scope\n        // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n        if (this.supportsSelectableRows) {\n          detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n          detailsScope.selectRow = function () {\n            return _this3.selectRow(rowIndex);\n          };\n\n          detailsScope.unselectRow = function () {\n            return _this3.unselectRow(rowIndex);\n          };\n        } // Render the details slot in a TD\n\n\n        var $details = h(BTd, {\n          props: {\n            colspan: fields.length\n          },\n          class: this.detailsTdClass\n        }, [this.normalizeSlot(detailsSlotName, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n        // Only added if the table is striped\n\n        if (tableStriped) {\n          $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n          h('tr', {\n            key: \"__b-table-details-stripe__\".concat(rowKey),\n            staticClass: 'd-none',\n            attrs: {\n              'aria-hidden': 'true',\n              role: 'presentation'\n            }\n          }));\n        } // Add the actual details row\n\n\n        var userDetailsTrClasses = isFunction(this.tbodyTrClass) ? this.tbodyTrClass(item, detailsSlotName) : this.tbodyTrClass;\n        var userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ? this.tbodyTrAttr(item, detailsSlotName) : this.tbodyTrAttr;\n        $rows.push(h(BTr, {\n          key: \"__b-table-details__\".concat(rowKey),\n          staticClass: 'b-table-details',\n          class: [userDetailsTrClasses],\n          props: {\n            variant: item._rowVariant || null\n          },\n          attrs: _objectSpread({}, userDetailsTrAttrs, {\n            // Users cannot override the following attributes\n            id: detailsId,\n            tabindex: '-1'\n          })\n        }, [$details]));\n      } else if (hasDetailsSlot) {\n        // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n        $rows.push(h());\n\n        if (tableStriped) {\n          // Add extra placeholder if table is striped\n          $rows.push(h());\n        }\n      } // Return the row(s)\n\n\n      return $rows;\n    }\n  }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport KeyCodes from '../../../utils/key-codes';\nimport { arrayIncludes, from as arrayFrom } from '../../../utils/array';\nimport { closest, isElement } from '../../../utils/dom';\nimport { props as tbodyProps, BTbody } from '../tbody';\nimport filterEvent from './filter-event';\nimport textSelectionActive from './text-selection-active';\nimport tbodyRowMixin from './mixin-tbody-row';\n\nvar props = _objectSpread({}, tbodyProps, {\n  tbodyClass: {\n    type: [String, Array, Object] // default: undefined\n\n  }\n});\n\nexport default {\n  mixins: [tbodyRowMixin],\n  props: props,\n  methods: {\n    // Helper methods\n    getTbodyTrs: function getTbodyTrs() {\n      // Returns all the item TR elements (excludes detail and spacer rows)\n      // `this.$refs.itemRows` is an array of item TR components/elements\n      // Rows should all be B-TR components, but we map to TR elements\n      // Also note that `this.$refs.itemRows` may not always be in document order\n      var refs = this.$refs || {};\n      var tbody = refs.tbody ? refs.tbody.$el || refs.tbody : null;\n      var trs = (refs.itemRows || []).map(function (tr) {\n        return tr.$el || tr;\n      });\n      return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? arrayFrom(tbody.children).filter(function (tr) {\n        return arrayIncludes(trs, tr);\n      }) : [];\n    },\n    getTbodyTrIndex: function getTbodyTrIndex(el) {\n      // Returns index of a particular TBODY item TR\n      // We set `true` on closest to include self in result\n\n      /* istanbul ignore next: should not normally happen */\n      if (!isElement(el)) {\n        return -1;\n      }\n\n      var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n      return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n    },\n    emitTbodyRowEvent: function emitTbodyRowEvent(type, evt) {\n      // Emits a row event, with the item object, row index and original event\n      if (type && this.hasListener(type) && evt && evt.target) {\n        var rowIndex = this.getTbodyTrIndex(evt.target);\n\n        if (rowIndex > -1) {\n          // The array of TRs correlate to the `computedItems` array\n          var item = this.computedItems[rowIndex];\n          this.$emit(type, item, rowIndex, evt);\n        }\n      }\n    },\n    tbodyRowEvtStopped: function tbodyRowEvtStopped(evt) {\n      return this.stopIfBusy && this.stopIfBusy(evt);\n    },\n    // Delegated row event handlers\n    onTbodyRowKeydown: function onTbodyRowKeydown(evt) {\n      // Keyboard navigation and row click emulation\n      var target = evt.target;\n\n      if (this.tbodyRowEvtStopped(evt) || target.tagName !== 'TR' || target !== document.activeElement || target.tabIndex !== 0) {\n        // Early exit if not an item row TR\n        return;\n      }\n\n      var keyCode = evt.keyCode;\n\n      if (arrayIncludes([KeyCodes.ENTER, KeyCodes.SPACE], keyCode)) {\n        // Emulated click for keyboard users, transfer to click handler\n        evt.stopPropagation();\n        evt.preventDefault();\n        this.onTBodyRowClicked(evt);\n      } else if (arrayIncludes([KeyCodes.UP, KeyCodes.DOWN, KeyCodes.HOME, KeyCodes.END], keyCode)) {\n        // Keyboard navigation\n        var rowIndex = this.getTbodyTrIndex(target);\n\n        if (rowIndex > -1) {\n          evt.stopPropagation();\n          evt.preventDefault();\n          var trs = this.getTbodyTrs();\n          var shift = evt.shiftKey;\n\n          if (keyCode === KeyCodes.HOME || shift && keyCode === KeyCodes.UP) {\n            // Focus first row\n            trs[0].focus();\n          } else if (keyCode === KeyCodes.END || shift && keyCode === KeyCodes.DOWN) {\n            // Focus last row\n            trs[trs.length - 1].focus();\n          } else if (keyCode === KeyCodes.UP && rowIndex > 0) {\n            // Focus previous row\n            trs[rowIndex - 1].focus();\n          } else if (keyCode === KeyCodes.DOWN && rowIndex < trs.length - 1) {\n            // Focus next row\n            trs[rowIndex + 1].focus();\n          }\n        }\n      }\n    },\n    onTBodyRowClicked: function onTBodyRowClicked(evt) {\n      if (this.tbodyRowEvtStopped(evt)) {\n        // If table is busy, then don't propagate\n        return;\n      } else if (filterEvent(evt) || textSelectionActive(this.$el)) {\n        // Clicked on a non-disabled control so ignore\n        // Or user is selecting text, so ignore\n        return;\n      }\n\n      this.emitTbodyRowEvent('row-clicked', evt);\n    },\n    onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(evt) {\n      if (!this.tbodyRowEvtStopped(evt) && evt.which === 2) {\n        this.emitTbodyRowEvent('row-middle-clicked', evt);\n      }\n    },\n    onTbodyRowContextmenu: function onTbodyRowContextmenu(evt) {\n      if (!this.tbodyRowEvtStopped(evt)) {\n        this.emitTbodyRowEvent('row-contextmenu', evt);\n      }\n    },\n    onTbodyRowDblClicked: function onTbodyRowDblClicked(evt) {\n      if (!this.tbodyRowEvtStopped(evt) && !filterEvent(evt)) {\n        this.emitTbodyRowEvent('row-dblclicked', evt);\n      }\n    },\n    // Note: Row hover handlers are handled by the tbody-row mixin\n    // As mouseenter/mouseleave events do not bubble\n    //\n    // Render Helper\n    renderTbody: function renderTbody() {\n      var _this = this;\n\n      // Render the tbody element and children\n      var items = this.computedItems; // Shortcut to `createElement` (could use `this._c()` instead)\n\n      var h = this.$createElement;\n      var hasRowClickHandler = this.hasListener('row-clicked') || this.hasSelectableRowClick; // Prepare the tbody rows\n\n      var $rows = []; // Add the item data rows or the busy slot\n\n      var $busy = this.renderBusy ? this.renderBusy() : null;\n\n      if ($busy) {\n        // If table is busy and a busy slot, then return only the busy \"row\" indicator\n        $rows.push($busy);\n      } else {\n        // Table isn't busy, or we don't have a busy slot\n        // Create a slot cache for improved performance when looking up cell slot names\n        // Values will be keyed by the field's `key` and will store the slot's name\n        // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n        // Used by tbody-row mixin render helper\n        var cache = {};\n        var defaultSlotName = this.hasNormalizedSlot('cell()') ? 'cell()' : null;\n        this.computedFields.forEach(function (field) {\n          var key = field.key;\n          var fullName = \"cell(\".concat(key, \")\");\n          var lowerName = \"cell(\".concat(key.toLowerCase(), \")\");\n          cache[key] = _this.hasNormalizedSlot(fullName) ? fullName : _this.hasNormalizedSlot(lowerName) ? lowerName : defaultSlotName;\n        }); // Created as a non-reactive property so to not trigger component updates\n        // Must be a fresh object each render\n\n        this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n\n        $rows.push(this.renderTopRow ? this.renderTopRow() : h()); // Render the rows\n\n        items.forEach(function (item, rowIndex) {\n          // Render the individual item row (rows if details slot)\n          $rows.push(_this.renderTbodyRow(item, rowIndex));\n        }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n        $rows.push(this.renderEmpty ? this.renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n\n        $rows.push(this.renderBottomRow ? this.renderBottomRow() : h());\n      } // Note: these events will only emit if a listener is registered\n\n\n      var handlers = {\n        auxclick: this.onTbodyRowMiddleMouseRowClicked,\n        // TODO:\n        //   Perhaps we do want to automatically prevent the\n        //   default context menu from showing if there is a\n        //   `row-contextmenu` listener registered\n        contextmenu: this.onTbodyRowContextmenu,\n        // The following event(s) is not considered A11Y friendly\n        dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n      }; // Add in click/keydown listeners if needed\n\n      if (hasRowClickHandler) {\n        handlers.click = this.onTBodyRowClicked;\n        handlers.keydown = this.onTbodyRowKeydown;\n      } // Assemble rows into the tbody\n\n\n      var $tbody = h(BTbody, {\n        ref: 'tbody',\n        class: this.tbodyClass || null,\n        props: {\n          tbodyTransitionProps: this.tbodyTransitionProps,\n          tbodyTransitionHandlers: this.tbodyTransitionHandlers\n        },\n        // BTbody transfers all native event listeners to the root element\n        // TODO: Only set the handlers if the table is not busy\n        on: handlers\n      }, $rows); // Return the assembled tbody\n\n      return $tbody;\n    }\n  }\n};","import { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nexport default {\n  props: {\n    showEmpty: {\n      type: Boolean,\n      default: false\n    },\n    emptyText: {\n      type: String,\n      default: 'There are no records to show'\n    },\n    emptyHtml: {\n      type: String\n    },\n    emptyFilteredText: {\n      type: String,\n      default: 'There are no records matching your request'\n    },\n    emptyFilteredHtml: {\n      type: String\n    }\n  },\n  methods: {\n    renderEmpty: function renderEmpty() {\n      var h = this.$createElement;\n      var items = this.computedItems;\n      var $empty;\n\n      if (this.showEmpty && (!items || items.length === 0) && !(this.computedBusy && this.hasNormalizedSlot('table-busy'))) {\n        $empty = this.normalizeSlot(this.isFiltered ? 'emptyfiltered' : 'empty', {\n          emptyFilteredHtml: this.emptyFilteredHtml,\n          emptyFilteredText: this.emptyFilteredText,\n          emptyHtml: this.emptyHtml,\n          emptyText: this.emptyText,\n          fields: this.computedFields,\n          // Not sure why this is included, as it will always be an empty array\n          items: this.computedItems\n        });\n\n        if (!$empty) {\n          $empty = h('div', {\n            class: ['text-center', 'my-2'],\n            domProps: this.isFiltered ? htmlOrText(this.emptyFilteredHtml, this.emptyFilteredText) : htmlOrText(this.emptyHtml, this.emptyText)\n          });\n        }\n\n        $empty = h(BTd, {\n          props: {\n            colspan: this.computedFields.length || null\n          }\n        }, [h('div', {\n          attrs: {\n            role: 'alert',\n            'aria-live': 'polite'\n          }\n        }, [$empty])]);\n        $empty = h(BTr, {\n          key: this.isFiltered ? 'b-empty-filtered-row' : 'b-empty-row',\n          staticClass: 'b-table-empty-row',\n          class: [isFunction(this.tbodyTrClass) ? this.tbodyTrClass(null, 'row-empty') : this.tbodyTrClass],\n          attrs: isFunction(this.tbodyTrAttr) ? this.tbodyTrAttr(null, 'row-empty') : this.tbodyTrAttr\n        }, [$empty]);\n      }\n\n      return $empty || h();\n    }\n  }\n};","import { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr';\nvar slotName = 'top-row';\nexport default {\n  methods: {\n    renderTopRow: function renderTopRow() {\n      var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n      // If in *always* stacked mode, we don't bother rendering the row\n\n      if (!this.hasNormalizedSlot(slotName) || this.stacked === true || this.stacked === '') {\n        return h();\n      }\n\n      var fields = this.computedFields;\n      return h(BTr, {\n        key: 'b-top-row',\n        staticClass: 'b-table-top-row',\n        class: [isFunction(this.tbodyTrClass) ? this.tbodyTrClass(null, 'row-top') : this.tbodyTrClass],\n        attrs: isFunction(this.tbodyTrAttr) ? this.tbodyTrAttr(null, 'row-top') : this.tbodyTrAttr\n      }, [this.normalizeSlot(slotName, {\n        columns: fields.length,\n        fields: fields\n      })]);\n    }\n  }\n};","import { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr';\nvar slotName = 'bottom-row';\nexport default {\n  methods: {\n    renderBottomRow: function renderBottomRow() {\n      var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n      // If in *always* stacked mode, we don't bother rendering the row\n\n      if (!this.hasNormalizedSlot(slotName) || this.stacked === true || this.stacked === '') {\n        return h();\n      }\n\n      var fields = this.computedFields;\n      return h(BTr, {\n        key: 'b-bottom-row',\n        staticClass: 'b-table-bottom-row',\n        class: [isFunction(this.tbodyTrClass) ? this.tbodyTrClass(null, 'row-bottom') : this.tbodyTrClass],\n        attrs: isFunction(this.tbodyTrAttr) ? this.tbodyTrAttr(null, 'row-bottom') : this.tbodyTrAttr\n      }, this.normalizeSlot(slotName, {\n        columns: fields.length,\n        fields: fields\n      }));\n    }\n  }\n};","import { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nvar busySlotName = 'table-busy';\nexport default {\n  props: {\n    busy: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      localBusy: false\n    };\n  },\n  computed: {\n    computedBusy: function computedBusy() {\n      return this.busy || this.localBusy;\n    }\n  },\n  watch: {\n    localBusy: function localBusy(newVal, oldVal) {\n      if (newVal !== oldVal) {\n        this.$emit('update:busy', newVal);\n      }\n    }\n  },\n  methods: {\n    // Event handler helper\n    stopIfBusy: function stopIfBusy(evt) {\n      if (this.computedBusy) {\n        // If table is busy (via provider) then don't propagate\n        evt.preventDefault();\n        evt.stopPropagation();\n        return true;\n      }\n\n      return false;\n    },\n    // Render the busy indicator or return `null` if not busy\n    renderBusy: function renderBusy() {\n      var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n      if (this.computedBusy && this.hasNormalizedSlot(busySlotName)) {\n        // Show the busy slot\n        return h(BTr, {\n          key: 'table-busy-slot',\n          staticClass: 'b-table-busy-slot',\n          class: [isFunction(this.tbodyTrClass) ? this.tbodyTrClass(null, busySlotName) : this.tbodyTrClass],\n          attrs: isFunction(this.tbodyTrAttr) ? this.tbodyTrAttr(null, busySlotName) : this.tbodyTrAttr\n        }, [h(BTd, {\n          props: {\n            colspan: this.computedFields.length || null\n          }\n        }, [this.normalizeSlot(busySlotName)])]);\n      } else {\n        // We return `null` here so that we can determine if we need to\n        // render the table items rows or not\n        return 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 identity from '../../../utils/identity';\nimport looseEqual from '../../../utils/loose-equal';\nimport range from '../../../utils/range';\nimport { isArray, arrayIncludes } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { isNumber } from '../../../utils/inspect';\nimport sanitizeRow from './sanitize-row';\nexport default {\n  props: {\n    selectable: {\n      type: Boolean,\n      default: false\n    },\n    selectMode: {\n      type: String,\n      default: 'multi',\n      validator: function validator(val) {\n        return arrayIncludes(['range', 'multi', 'single'], val);\n      }\n    },\n    selectedVariant: {\n      type: String,\n      default: function _default() {\n        return getComponentConfig('BTable', 'selectedVariant');\n      }\n    },\n    noSelectOnClick: {\n      // Disable use of click handlers for row selection\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      selectedRows: [],\n      selectedLastRow: -1\n    };\n  },\n  computed: {\n    isSelectable: function isSelectable() {\n      return this.selectable && this.selectMode;\n    },\n    hasSelectableRowClick: function hasSelectableRowClick() {\n      return this.isSelectable && !this.noSelectOnClick;\n    },\n    supportsSelectableRows: function supportsSelectableRows() {\n      return true;\n    },\n    selectableHasSelection: function selectableHasSelection() {\n      return this.isSelectable && this.selectedRows && this.selectedRows.length > 0 && this.selectedRows.some(identity);\n    },\n    selectableIsMultiSelect: function selectableIsMultiSelect() {\n      return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n    },\n    selectableTableClasses: function selectableTableClasses() {\n      var _ref;\n\n      return _ref = {\n        'b-table-selectable': this.isSelectable\n      }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), this.isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', this.isSelectable && !this.hasSelectableRowClick), _ref;\n    },\n    selectableTableAttrs: function selectableTableAttrs() {\n      return {\n        // TODO:\n        //   Should this attribute not be included when no-select-on-click is set\n        //   since this attribute implies keyboard navigation?\n        'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n      };\n    }\n  },\n  watch: {\n    computedItems: function computedItems(newVal, oldVal) {\n      // Reset for selectable\n      var equal = false;\n\n      if (this.isSelectable && this.selectedRows.length > 0) {\n        // Quick check against array length\n        equal = isArray(newVal) && isArray(oldVal) && newVal.length === oldVal.length;\n\n        for (var i = 0; equal && i < newVal.length; i++) {\n          // Look for the first non-loosely equal row, after ignoring reserved fields\n          equal = looseEqual(sanitizeRow(newVal[i]), sanitizeRow(oldVal[i]));\n        }\n      }\n\n      if (!equal) {\n        this.clearSelected();\n      }\n    },\n    selectable: function selectable(newVal) {\n      this.clearSelected();\n      this.setSelectionHandlers(newVal);\n    },\n    selectMode: function selectMode() {\n      this.clearSelected();\n    },\n    hasSelectableRowClick: function hasSelectableRowClick(newVal) {\n      this.clearSelected();\n      this.setSelectionHandlers(!newVal);\n    },\n    selectedRows: function selectedRows(_selectedRows, oldVal) {\n      var _this = this;\n\n      if (this.isSelectable && !looseEqual(_selectedRows, oldVal)) {\n        var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n        _selectedRows.forEach(function (v, idx) {\n          if (v) {\n            items.push(_this.computedItems[idx]);\n          }\n        });\n\n        this.$emit('row-selected', items);\n      }\n    }\n  },\n  beforeMount: function beforeMount() {\n    // Set up handlers if needed\n    if (this.isSelectable) {\n      this.setSelectionHandlers(true);\n    }\n  },\n  methods: {\n    // Public methods\n    selectRow: function selectRow(index) {\n      // Select a particular row (indexed based on computedItems)\n      if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n        var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n        selectedRows[index] = true;\n        this.selectedLastClicked = -1;\n        this.selectedRows = selectedRows;\n      }\n    },\n    unselectRow: function unselectRow(index) {\n      // Un-select a particular row (indexed based on `computedItems`)\n      if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n        var selectedRows = this.selectedRows.slice();\n        selectedRows[index] = false;\n        this.selectedLastClicked = -1;\n        this.selectedRows = selectedRows;\n      }\n    },\n    selectAllRows: function selectAllRows() {\n      var length = this.computedItems.length;\n\n      if (this.isSelectable && length > 0) {\n        this.selectedLastClicked = -1;\n        this.selectedRows = this.selectableIsMultiSelect ? range(length).map(function () {\n          return true;\n        }) : [true];\n      }\n    },\n    isRowSelected: function isRowSelected(index) {\n      // Determine if a row is selected (indexed based on `computedItems`)\n      return !!(isNumber(index) && this.selectedRows[index]);\n    },\n    clearSelected: function clearSelected() {\n      // Clear any active selected row(s)\n      this.selectedLastClicked = -1;\n      this.selectedRows = [];\n    },\n    // Internal private methods\n    selectableRowClasses: function selectableRowClasses(index) {\n      if (this.isSelectable && this.isRowSelected(index)) {\n        var variant = this.selectedVariant;\n        return _defineProperty({\n          'b-table-row-selected': true\n        }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n      } else {\n        return {};\n      }\n    },\n    selectableRowAttrs: function selectableRowAttrs(index) {\n      return {\n        'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n      };\n    },\n    setSelectionHandlers: function setSelectionHandlers(on) {\n      var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n      this[method]('row-clicked', this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n      this[method]('filtered', this.clearSelected);\n      this[method]('context-changed', this.clearSelected);\n    },\n    selectionHandler: function selectionHandler(item, index, evt) {\n      /* istanbul ignore if: should never happen */\n      if (!this.isSelectable || this.noSelectOnClick) {\n        // Don't do anything if table is not in selectable mode\n        this.clearSelected();\n        return;\n      }\n\n      var selectMode = this.selectMode;\n      var selectedRows = this.selectedRows.slice();\n      var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n      if (selectMode === 'single') {\n        selectedRows = [];\n      } else if (selectMode === 'range') {\n        if (this.selectedLastRow > -1 && evt.shiftKey) {\n          // range\n          for (var idx = Math.min(this.selectedLastRow, index); idx <= Math.max(this.selectedLastRow, index); idx++) {\n            selectedRows[idx] = true;\n          }\n\n          selected = true;\n        } else {\n          if (!(evt.ctrlKey || evt.metaKey)) {\n            // Clear range selection if any\n            selectedRows = [];\n            selected = true;\n          }\n\n          this.selectedLastRow = selected ? index : -1;\n        }\n      }\n\n      selectedRows[index] = selected;\n      this.selectedRows = selectedRows;\n    }\n  }\n};","import looseEqual from '../../../utils/loose-equal';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { clone } from '../../../utils/object';\nimport { warn } from '../../../utils/warn';\nimport listenOnRootMixin from '../../../mixins/listen-on-root';\nexport default {\n  mixins: [listenOnRootMixin],\n  props: {\n    // Prop override(s)\n    items: {\n      // Adds in 'Function' support\n      type: [Array, Function],\n      default: function _default()\n      /* istanbul ignore next */\n      {\n        return [];\n      }\n    },\n    // Additional props\n    noProviderPaging: {\n      type: Boolean,\n      default: false\n    },\n    noProviderSorting: {\n      type: Boolean,\n      default: false\n    },\n    noProviderFiltering: {\n      type: Boolean,\n      default: false\n    },\n    apiUrl: {\n      // Passthrough prop. Passed to the context object. Not used by b-table directly\n      type: String,\n      default: ''\n    }\n  },\n  computed: {\n    hasProvider: function hasProvider() {\n      return isFunction(this.items);\n    },\n    providerTriggerContext: function providerTriggerContext() {\n      // Used to trigger the provider function via a watcher. Only the fields that\n      // are needed for triggering a provider update are included. Note that the\n      // regular this.context is sent to the provider during fetches though, as they\n      // may need all the prop info.\n      var ctx = {\n        apiUrl: this.apiUrl,\n        filter: null,\n        sortBy: null,\n        sortDesc: null,\n        perPage: null,\n        currentPage: null\n      };\n\n      if (!this.noProviderFiltering) {\n        // Either a string, or could be an object or array.\n        ctx.filter = this.localFilter;\n      }\n\n      if (!this.noProviderSorting) {\n        ctx.sortBy = this.localSortBy;\n        ctx.sortDesc = this.localSortDesc;\n      }\n\n      if (!this.noProviderPaging) {\n        ctx.perPage = this.perPage;\n        ctx.currentPage = this.currentPage;\n      }\n\n      return clone(ctx);\n    }\n  },\n  watch: {\n    // Provider update triggering\n    items: function items(newVal) {\n      // If a new provider has been specified, trigger an update\n      if (this.hasProvider || isFunction(newVal)) {\n        this.$nextTick(this._providerUpdate);\n      }\n    },\n    providerTriggerContext: function providerTriggerContext(newVal, oldVal) {\n      // Trigger the provider to update as the relevant context values have changed.\n      if (!looseEqual(newVal, oldVal)) {\n        this.$nextTick(this._providerUpdate);\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    // Call the items provider if necessary\n    if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n      // Fetch on mount if localItems is empty\n      this._providerUpdate();\n    } // Listen for global messages to tell us to force refresh the table\n\n\n    this.listenOnRoot('bv::refresh::table', function (id) {\n      if (id === _this.id || id === _this) {\n        _this.refresh();\n      }\n    });\n  },\n  methods: {\n    refresh: function refresh() {\n      // Public Method: Force a refresh of the provider function\n      this.$off('refreshed', this.refresh);\n\n      if (this.computedBusy) {\n        // Can't force an update when forced busy by user (busy prop === true)\n        if (this.localBusy && this.hasProvider) {\n          // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n          this.$on('refreshed', this.refresh);\n        }\n      } else {\n        this.clearSelected();\n\n        if (this.hasProvider) {\n          this.$nextTick(this._providerUpdate);\n        } else {\n          /* istanbul ignore next */\n          this.localItems = isArray(this.items) ? this.items.slice() : [];\n        }\n      }\n    },\n    // Provider related methods\n    _providerSetLocal: function _providerSetLocal(items) {\n      this.localItems = isArray(items) ? items.slice() : [];\n      this.localBusy = false;\n      this.$emit('refreshed'); // New root emit\n\n      if (this.id) {\n        this.emitOnRoot('bv::table::refreshed', this.id);\n      }\n    },\n    _providerUpdate: function _providerUpdate() {\n      var _this2 = this;\n\n      // Refresh the provider function items.\n      if (!this.hasProvider) {\n        // Do nothing if no provider\n        return;\n      } // If table is busy, wait until refreshed before calling again\n\n\n      if (this.computedBusy) {\n        // Schedule a new refresh once `refreshed` is emitted\n        this.$nextTick(this.refresh);\n        return;\n      } // Set internal busy state\n\n\n      this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n      this.$nextTick(function () {\n        try {\n          // Call provider function passing it the context and optional callback\n          var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n          if (isPromise(data)) {\n            // Provider returned Promise\n            data.then(function (items) {\n              // Provider resolved with items\n              _this2._providerSetLocal(items);\n            });\n          } else if (isArray(data)) {\n            // Provider returned Array data\n            _this2._providerSetLocal(data);\n          } else {\n            /* istanbul ignore if */\n            if (_this2.items.length !== 2) {\n              // Check number of arguments provider function requested\n              // Provider not using callback (didn't request second argument), so we clear\n              // busy state as most likely there was an error in the provider function\n\n              /* istanbul ignore next */\n              warn(\"Provider function didn't request callback and did not return a promise or data.\", 'BTable');\n              _this2.localBusy = false;\n            }\n          }\n        } catch (e)\n        /* istanbul ignore next */\n        {\n          // Provider function borked on us, so we spew out a warning\n          // and clear the busy state\n          warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), 'BTable');\n          _this2.localBusy = false;\n\n          _this2.$off('refreshed', _this2.refresh);\n        }\n      });\n    }\n  }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport identity from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { toString } from '../../../utils/string'; // Main `<table>` render mixin\n// Includes all main table styling options\n\nexport default {\n  // Don't place attributes on root element automatically,\n  // as table could be wrapped in responsive `<div>`\n  inheritAttrs: false,\n  provide: function provide() {\n    return {\n      bvTable: this\n    };\n  },\n  props: {\n    striped: {\n      type: Boolean,\n      default: false\n    },\n    bordered: {\n      type: Boolean,\n      default: false\n    },\n    borderless: {\n      type: Boolean,\n      default: false\n    },\n    outlined: {\n      type: Boolean,\n      default: false\n    },\n    dark: {\n      type: Boolean,\n      default: false\n    },\n    hover: {\n      type: Boolean,\n      default: false\n    },\n    small: {\n      type: Boolean,\n      default: false\n    },\n    fixed: {\n      type: Boolean,\n      default: false\n    },\n    responsive: {\n      type: [Boolean, String],\n      default: false\n    },\n    stickyHeader: {\n      // If a string, it is assumed to be the table `max-height` value\n      type: [Boolean, String],\n      default: false\n    },\n    noBorderCollapse: {\n      type: Boolean,\n      default: false\n    },\n    captionTop: {\n      type: Boolean,\n      default: false\n    },\n    tableVariant: {\n      type: String,\n      default: null\n    },\n    tableClass: {\n      type: [String, Array, Object],\n      default: null\n    }\n  },\n  computed: {\n    // Layout related computed props\n    isResponsive: function isResponsive() {\n      var responsive = this.responsive === '' ? true : this.responsive;\n      return this.isStacked ? false : responsive;\n    },\n    isStickyHeader: function isStickyHeader() {\n      var stickyHeader = this.stickyHeader === '' ? true : this.stickyHeader;\n      return this.isStacked ? false : stickyHeader;\n    },\n    wrapperClasses: function wrapperClasses() {\n      return [this.isStickyHeader ? 'b-table-sticky-header' : '', this.isResponsive === true ? 'table-responsive' : this.isResponsive ? \"table-responsive-\".concat(this.responsive) : ''].filter(identity);\n    },\n    wrapperStyles: function wrapperStyles() {\n      return this.isStickyHeader && !isBoolean(this.isStickyHeader) ? {\n        maxHeight: this.isStickyHeader\n      } : {};\n    },\n    tableClasses: function tableClasses() {\n      var hover = this.isTableSimple ? this.hover : this.hover && this.computedItems.length > 0 && !this.computedBusy;\n      return [// User supplied classes\n      this.tableClass, // Styling classes\n      {\n        'table-striped': this.striped,\n        'table-hover': hover,\n        'table-dark': this.dark,\n        'table-bordered': this.bordered,\n        'table-borderless': this.borderless,\n        'table-sm': this.small,\n        // The following are b-table custom styles\n        border: this.outlined,\n        'b-table-fixed': this.fixed,\n        'b-table-caption-top': this.captionTop,\n        'b-table-no-border-collapse': this.noBorderCollapse\n      }, this.tableVariant ? \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(this.tableVariant) : '', // Stacked table classes\n      this.stackedTableClasses, // Selectable classes\n      this.selectableTableClasses];\n    },\n    tableAttrs: function tableAttrs() {\n      // Preserve user supplied aria-describedby, if provided in `$attrs`\n      var adb = [(this.$attrs || {})['aria-describedby'], this.captionId].filter(identity).join(' ') || null;\n      var items = this.computedItems;\n      var filteredItems = this.filteredItems;\n      var fields = this.computedFields;\n      var selectableAttrs = this.selectableTableAttrs || {};\n      var ariaAttrs = this.isTableSimple ? {} : {\n        'aria-busy': this.computedBusy ? 'true' : 'false',\n        'aria-colcount': toString(fields.length),\n        'aria-describedby': adb\n      };\n      var rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n      return _objectSpread({\n        // We set `aria-rowcount` before merging in `$attrs`,\n        // in case user has supplied their own\n        'aria-rowcount': rowCount\n      }, this.$attrs, {\n        // Now we can override any `$attrs` here\n        id: this.safeId(),\n        role: 'table'\n      }, ariaAttrs, {}, selectableAttrs);\n    }\n  },\n  render: function render(h) {\n    var $content = [];\n\n    if (this.isTableSimple) {\n      $content.push(this.normalizeSlot('default'));\n    } else {\n      // Build the `<caption>` (from caption mixin)\n      $content.push(this.renderCaption ? this.renderCaption() : null); // Build the `<colgroup>`\n\n      $content.push(this.renderColgroup ? this.renderColgroup() : null); // Build the `<thead>`\n\n      $content.push(this.renderThead ? this.renderThead() : null); // Build the `<tbody>`\n\n      $content.push(this.renderTbody ? this.renderTbody() : null); // Build the `<tfoot>`\n\n      $content.push(this.renderTfoot ? this.renderTfoot() : null);\n    } // Assemble `<table>`\n\n\n    var $table = h('table', {\n      key: 'b-table',\n      staticClass: 'table b-table',\n      class: this.tableClasses,\n      attrs: this.tableAttrs\n    }, $content.filter(identity)); // Add responsive/sticky wrapper if needed and return table\n\n    return this.wrapperClasses.length > 0 ? h('div', {\n      key: 'wrap',\n      class: this.wrapperClasses,\n      style: this.wrapperStyles\n    }, [$table]) : $table;\n  }\n};","import Vue from '../../utils/vue'; // Mixins\n\nimport hasListenerMixin from '../../mixins/has-listener';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot'; // Table helper Mixins\n\nimport itemsMixin from './helpers/mixin-items';\nimport stackedMixin from './helpers/mixin-stacked';\nimport filteringMixin from './helpers/mixin-filtering';\nimport sortingMixin from './helpers/mixin-sorting';\nimport paginationMixin from './helpers/mixin-pagination';\nimport captionMixin from './helpers/mixin-caption';\nimport colgroupMixin from './helpers/mixin-colgroup';\nimport theadMixin from './helpers/mixin-thead';\nimport tfootMixin from './helpers/mixin-tfoot';\nimport tbodyMixin from './helpers/mixin-tbody';\nimport emptyMixin from './helpers/mixin-empty';\nimport topRowMixin from './helpers/mixin-top-row';\nimport bottomRowMixin from './helpers/mixin-bottom-row';\nimport busyMixin from './helpers/mixin-busy';\nimport selectableMixin from './helpers/mixin-selectable';\nimport providerMixin from './helpers/mixin-provider'; // Main table renderer mixin\n\nimport tableRendererMixin from './helpers/mixin-table-renderer'; // b-table component definition\n// @vue/component\n\nexport var BTable = /*#__PURE__*/Vue.extend({\n  name: 'BTable',\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component.\n  mixins: [// Required Mixins\n  hasListenerMixin, idMixin, normalizeSlotMixin, itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Features Mixins\n  stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin] // render function provided by table-renderer mixin\n\n});","import Vue from '../../utils/vue'; // Mixins\n\nimport hasListenerMixin from '../../mixins/has-listener';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot'; // Table helper Mixins\n\nimport itemsMixin from './helpers/mixin-items';\nimport captionMixin from './helpers/mixin-caption';\nimport colgroupMixin from './helpers/mixin-colgroup';\nimport stackedMixin from './helpers/mixin-stacked';\nimport theadMixin from './helpers/mixin-thead';\nimport tfootMixin from './helpers/mixin-tfoot';\nimport tbodyMixin from './helpers/mixin-tbody'; // Main table renderer mixin\n\nimport tableRendererMixin from './helpers/mixin-table-renderer'; // b-table-lite component definition\n// @vue/component\n\nexport var BTableLite = /*#__PURE__*/Vue.extend({\n  name: 'BTableLite',\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component.\n  mixins: [// Required mixins\n  hasListenerMixin, idMixin, normalizeSlotMixin, itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Features Mixins\n  // These are pretty lightweight, and are useful for lightweight tables\n  captionMixin, colgroupMixin] // render function provided by table-renderer mixin\n\n});","import Vue from '../../utils/vue'; // Mixins\n\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot'; // Main table renderer mixin\n\nimport tableRendererMixin from './helpers/mixin-table-renderer'; // Feature miins\n\nimport stackedMixin from './helpers/mixin-stacked'; // b-table-simple component definition\n// @vue/component\n\nexport var BTableSimple = /*#__PURE__*/Vue.extend({\n  name: 'BTableSimple',\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component.\n  mixins: [// Required mixins\n  idMixin, normalizeSlotMixin, tableRendererMixin, // feature mixin\n  // Stacked requires extra handling by users via\n  // the table cell `stacked-heading` prop\n  stackedMixin],\n  computed: {\n    isTableSimple: function isTableSimple() {\n      return true;\n    }\n  } // render function provided by table-renderer mixin\n\n});","import { BTable } from './table';\nimport { BTableLite } from './table-lite';\nimport { BTableSimple } from './table-simple';\nimport { BTbody } from './tbody';\nimport { BThead } from './thead';\nimport { BTfoot } from './tfoot';\nimport { BTr } from './tr';\nimport { BTd } from './td';\nimport { BTh } from './th';\nimport { pluginFactory } from '../../utils/plugins';\nvar TableLitePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTableLite: BTableLite\n  }\n});\nvar TableSimplePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTableSimple: BTableSimple,\n    BTbody: BTbody,\n    BThead: BThead,\n    BTfoot: BTfoot,\n    BTr: BTr,\n    BTd: BTd,\n    BTh: BTh\n  }\n});\nvar TablePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTable: BTable\n  },\n  plugins: {\n    TableLitePlugin: TableLitePlugin,\n    TableSimplePlugin: TableSimplePlugin\n  }\n});\nexport { // Plugins\nTablePlugin, TableLitePlugin, TableSimplePlugin // Table components\n, BTable, BTableLite, BTableSimple // Helper components\n, BTbody, BThead, BTfoot, BTr, BTd, BTh };","import { BTime } from './time';\nimport { pluginFactory } from '../../utils/plugins';\nvar TimePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTime: BTime\n  }\n});\nexport { TimePlugin, BTime };","import Vue from '../../utils/vue';\nimport { PortalTarget, Wormhole } from 'portal-vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { removeClass, requestAF } from '../../utils/dom';\nimport { warn } from '../../utils/warn'; // --- Constants ---\n\nvar NAME = 'BToaster';\nexport var props = {\n  name: {\n    type: String,\n    required: true\n  },\n  ariaLive: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'ariaLive');\n    }\n  },\n  ariaAtomic: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'ariaAtomic');\n    } // Allowed: 'true' or 'false' or null\n\n  },\n  role: {\n    // Aria role\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'role');\n    }\n  }\n  /*\n  transition: {\n    type: [Boolean, String, Object],\n    default: false\n  }\n  */\n\n}; // @vue/component\n\nexport var DefaultTransition = /*#__PURE__*/Vue.extend({\n  data: function data() {\n    return {\n      // Transition classes base name\n      name: 'b-toaster'\n    };\n  },\n  methods: {\n    onAfterEnter: function onAfterEnter(el) {\n      var _this = this;\n\n      // Handle bug where enter-to class is not removed.\n      // Bug is related to portal-vue and transition-groups.\n      requestAF(function () {\n        removeClass(el, \"\".concat(_this.name, \"-enter-to\")); // The *-move class is also stuck on elements that moved,\n        // but there are no javascript hooks to handle after move.\n      });\n    }\n  },\n  render: function render(h) {\n    return h('transition-group', {\n      props: {\n        tag: 'div',\n        name: this.name\n      },\n      on: {\n        afterEnter: this.onAfterEnter\n      }\n    }, this.$slots.default);\n  }\n}); // @vue/component\n\nexport var BToaster = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  props: props,\n  data: function data() {\n    return {\n      // We don't render on SSR or if a an existing target found\n      doRender: false,\n      dead: false,\n      // Toaster names cannot change once created\n      staticName: this.name\n    };\n  },\n  beforeMount: function beforeMount() {\n    var _this2 = this;\n\n    this.staticName = this.name;\n    /* istanbul ignore if */\n\n    if (Wormhole.hasTarget(this.staticName)) {\n      warn(\"A \\\"<portal-target>\\\" with name \\\"\".concat(this.name, \"\\\" already exists in the document.\"), 'BToaster');\n      this.dead = true;\n    } else {\n      this.doRender = true;\n      this.$once('hook:beforeDestroy', function () {\n        // Let toasts made with `this.$bvToast.toast()` know that this toaster\n        // is being destroyed and should should also destroy/hide themselves\n        _this2.$root.$emit('bv::toaster::destroyed', _this2.staticName);\n      });\n    }\n  },\n  destroyed: function destroyed() {\n    // Remove from DOM if needed\n\n    /* istanbul ignore next: difficult to test */\n    if (this.$el && this.$el.parentNode) {\n      this.$el.parentNode.removeChild(this.$el);\n    }\n  },\n  render: function render(h) {\n    var $toaster = h('div', {\n      class: ['d-none', {\n        'b-dead-toaster': this.dead\n      }]\n    });\n\n    if (this.doRender) {\n      var $target = h(PortalTarget, {\n        staticClass: 'b-toaster-slot',\n        props: {\n          name: this.staticName,\n          multiple: true,\n          tag: 'div',\n          slim: false,\n          // transition: this.transition || DefaultTransition\n          transition: DefaultTransition\n        }\n      });\n      $toaster = h('div', {\n        staticClass: 'b-toaster',\n        class: [this.staticName],\n        attrs: {\n          id: this.staticName,\n          role: this.role || null,\n          // Fallback to null to make sure attribute doesn't exist\n          'aria-live': this.ariaLive,\n          'aria-atomic': this.ariaAtomic\n        }\n      }, [$target]);\n    }\n\n    return $toaster;\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 '../../utils/vue';\nimport { Portal, Wormhole } from 'portal-vue';\nimport BVTransition from '../../utils/bv-transition';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { getComponentConfig } from '../../utils/config';\nimport { requestAF } from '../../utils/dom';\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOnOff } from '../../utils/events';\nimport { toInteger } from '../../utils/number';\nimport idMixin from '../../mixins/id';\nimport listenOnRootMixin from '../../mixins/listen-on-root';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport scopedStyleAttrsMixin from '../../mixins/scoped-style-attrs';\nimport { BToaster } from './toaster';\nimport { BButtonClose } from '../button/button-close';\nimport { BLink } from '../link/link'; // --- Constants ---\n\nvar NAME = 'BToast';\nvar MIN_DURATION = 1000; // --- Props ---\n\nexport var props = {\n  id: {\n    // Even though the ID prop is provided by idMixin, we\n    // add it here for $bvToast props filtering\n    type: String,\n    default: null\n  },\n  title: {\n    type: String,\n    default: null\n  },\n  toaster: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'toaster');\n    }\n  },\n  visible: {\n    type: Boolean,\n    default: false\n  },\n  variant: {\n    type: String,\n    default: function _default() {\n      return getComponentConfig(NAME, 'variant');\n    }\n  },\n  isStatus: {\n    // Switches role to 'status' and aria-live to 'polite'\n    type: Boolean,\n    default: false\n  },\n  appendToast: {\n    type: Boolean,\n    default: false\n  },\n  noAutoHide: {\n    type: Boolean,\n    default: false\n  },\n  autoHideDelay: {\n    type: [Number, String],\n    default: function _default() {\n      return getComponentConfig(NAME, 'autoHideDelay');\n    }\n  },\n  noCloseButton: {\n    type: Boolean,\n    default: false\n  },\n  noFade: {\n    type: Boolean,\n    default: false\n  },\n  noHoverPause: {\n    type: Boolean,\n    default: false\n  },\n  solid: {\n    type: Boolean,\n    default: false\n  },\n  toastClass: {\n    type: [String, Object, Array],\n    default: function _default() {\n      return getComponentConfig(NAME, 'toastClass');\n    }\n  },\n  headerClass: {\n    type: [String, Object, Array],\n    default: function _default() {\n      return getComponentConfig(NAME, 'headerClass');\n    }\n  },\n  bodyClass: {\n    type: [String, Object, Array],\n    default: function _default() {\n      return getComponentConfig(NAME, 'bodyClass');\n    }\n  },\n  href: {\n    type: String,\n    default: null\n  },\n  to: {\n    type: [String, Object],\n    default: null\n  },\n  static: {\n    // Render the toast in place, rather than in a portal-target\n    type: Boolean,\n    default: false\n  }\n}; // @vue/component\n\nexport var BToast = /*#__PURE__*/Vue.extend({\n  name: NAME,\n  mixins: [idMixin, listenOnRootMixin, normalizeSlotMixin, scopedStyleAttrsMixin],\n  inheritAttrs: false,\n  model: {\n    prop: 'visible',\n    event: 'change'\n  },\n  props: props,\n  data: function data() {\n    return {\n      isMounted: false,\n      doRender: false,\n      localShow: false,\n      isTransitioning: false,\n      isHiding: false,\n      order: 0,\n      timer: null,\n      dismissStarted: 0,\n      resumeDismiss: 0\n    };\n  },\n  computed: {\n    bToastClasses: function bToastClasses() {\n      return _defineProperty({\n        'b-toast-solid': this.solid,\n        'b-toast-append': this.appendToast,\n        'b-toast-prepend': !this.appendToast\n      }, \"b-toast-\".concat(this.variant), this.variant);\n    },\n    slotScope: function slotScope() {\n      return {\n        hide: this.hide\n      };\n    },\n    computedDuration: function computedDuration() {\n      // Minimum supported duration is 1 second\n      return Math.max(toInteger(this.autoHideDelay) || 0, MIN_DURATION);\n    },\n    computedToaster: function computedToaster() {\n      return String(this.toaster);\n    },\n    transitionHandlers: function transitionHandlers() {\n      return {\n        beforeEnter: this.onBeforeEnter,\n        afterEnter: this.onAfterEnter,\n        beforeLeave: this.onBeforeLeave,\n        afterLeave: this.onAfterLeave\n      };\n    }\n  },\n  watch: {\n    visible: function visible(newVal) {\n      newVal ? this.show() : this.hide();\n    },\n    localShow: function localShow(newVal) {\n      if (newVal !== this.visible) {\n        this.$emit('change', newVal);\n      }\n    },\n    toaster: function toaster()\n    /* istanbul ignore next */\n    {\n      // If toaster target changed, make sure toaster exists\n      this.$nextTick(this.ensureToaster);\n    },\n    static: function _static(newVal)\n    /* istanbul ignore next */\n    {\n      // If static changes to true, and the toast is showing,\n      // ensure the toaster target exists\n      if (newVal && this.localShow) {\n        this.ensureToaster();\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    this.isMounted = true;\n    this.$nextTick(function () {\n      if (_this.visible) {\n        requestAF(function () {\n          _this.show();\n        });\n      }\n    }); // Listen for global $root show events\n\n    this.listenOnRoot('bv::show::toast', function (id) {\n      if (id === _this.safeId()) {\n        _this.show();\n      }\n    }); // Listen for global $root hide events\n\n    this.listenOnRoot('bv::hide::toast', function (id) {\n      if (!id || id === _this.safeId()) {\n        _this.hide();\n      }\n    }); // Make sure we hide when toaster is destroyed\n\n    /* istanbul ignore next: difficult to test */\n\n    this.listenOnRoot('bv::toaster::destroyed', function (toaster) {\n      /* istanbul ignore next */\n      if (toaster === _this.computedToaster) {\n        /* istanbul ignore next */\n        _this.hide();\n      }\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearDismissTimer();\n  },\n  methods: {\n    show: function show() {\n      var _this2 = this;\n\n      if (!this.localShow) {\n        this.ensureToaster();\n        var showEvt = this.buildEvent('show');\n        this.emitEvent(showEvt);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.order = Date.now() * (this.appendToast ? 1 : -1);\n        this.isHiding = false;\n        this.doRender = true;\n        this.$nextTick(function () {\n          // We show the toast after we have rendered the portal and b-toast wrapper\n          // so that screen readers will properly announce the toast\n          requestAF(function () {\n            _this2.localShow = true;\n          });\n        });\n      }\n    },\n    hide: function hide() {\n      var _this3 = this;\n\n      if (this.localShow) {\n        var hideEvt = this.buildEvent('hide');\n        this.emitEvent(hideEvt);\n        this.setHoverHandler(false);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.clearDismissTimer();\n        this.isHiding = true;\n        requestAF(function () {\n          _this3.localShow = false;\n        });\n      }\n    },\n    buildEvent: function buildEvent(type) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return new BvEvent(type, _objectSpread({\n        cancelable: false,\n        target: this.$el || null,\n        relatedTarget: null\n      }, options, {\n        vueTarget: this,\n        componentId: this.safeId()\n      }));\n    },\n    emitEvent: function emitEvent(bvEvt) {\n      var type = bvEvt.type;\n      this.$root.$emit(\"bv::toast:\".concat(type), bvEvt);\n      this.$emit(type, bvEvt);\n    },\n    ensureToaster: function ensureToaster() {\n      if (this.static) {\n        return;\n      }\n\n      if (!Wormhole.hasTarget(this.computedToaster)) {\n        var div = document.createElement('div');\n        document.body.appendChild(div);\n        var toaster = new BToaster({\n          parent: this.$root,\n          propsData: {\n            name: this.computedToaster\n          }\n        });\n        toaster.$mount(div);\n      }\n    },\n    startDismissTimer: function startDismissTimer() {\n      this.clearDismissTimer();\n\n      if (!this.noAutoHide) {\n        this.timer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n        this.dismissStarted = Date.now();\n        this.resumeDismiss = 0;\n      }\n    },\n    clearDismissTimer: function clearDismissTimer() {\n      clearTimeout(this.timer);\n      this.timer = null;\n    },\n    setHoverHandler: function setHoverHandler(on) {\n      var el = this.$refs['b-toast'];\n      eventOnOff(on, el, 'mouseenter', this.onPause, EVENT_OPTIONS_NO_CAPTURE);\n      eventOnOff(on, el, 'mouseleave', this.onUnPause, EVENT_OPTIONS_NO_CAPTURE);\n    },\n    onPause: function onPause() {\n      // Determine time remaining, and then pause timer\n      if (this.noAutoHide || this.noHoverPause || !this.timer || this.resumeDismiss) {\n        return;\n      }\n\n      var passed = Date.now() - this.dismissStarted;\n\n      if (passed > 0) {\n        this.clearDismissTimer();\n        this.resumeDismiss = Math.max(this.computedDuration - passed, MIN_DURATION);\n      }\n    },\n    onUnPause: function onUnPause() {\n      // Restart timer with max of time remaining or 1 second\n      if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n        this.resumeDismiss = this.dismissStarted = 0;\n        return;\n      }\n\n      this.startDismissTimer();\n    },\n    onLinkClick: function onLinkClick() {\n      var _this4 = this;\n\n      // We delay the close to allow time for the\n      // browser to process the link click\n      this.$nextTick(function () {\n        requestAF(function () {\n          _this4.hide();\n        });\n      });\n    },\n    onBeforeEnter: function onBeforeEnter() {\n      this.isTransitioning = true;\n    },\n    onAfterEnter: function onAfterEnter() {\n      this.isTransitioning = false;\n      var hiddenEvt = this.buildEvent('shown');\n      this.emitEvent(hiddenEvt);\n      this.startDismissTimer();\n      this.setHoverHandler(true);\n    },\n    onBeforeLeave: function onBeforeLeave() {\n      this.isTransitioning = true;\n    },\n    onAfterLeave: function onAfterLeave() {\n      this.isTransitioning = false;\n      this.order = 0;\n      this.resumeDismiss = this.dismissStarted = 0;\n      var hiddenEvt = this.buildEvent('hidden');\n      this.emitEvent(hiddenEvt);\n      this.doRender = false;\n    },\n    makeToast: function makeToast(h) {\n      var _this5 = this;\n\n      // Render helper for generating the toast\n      // Assemble the header content\n      var $headerContent = [];\n      var $title = this.normalizeSlot('toast-title', this.slotScope);\n\n      if ($title) {\n        $headerContent.push($title);\n      } else if (this.title) {\n        $headerContent.push(h('strong', {\n          staticClass: 'mr-2'\n        }, this.title));\n      }\n\n      if (!this.noCloseButton) {\n        $headerContent.push(h(BButtonClose, {\n          staticClass: 'ml-auto mb-1',\n          on: {\n            click: function click() {\n              _this5.hide();\n            }\n          }\n        }));\n      } // Assemble the header (if needed)\n\n\n      var $header = h();\n\n      if ($headerContent.length > 0) {\n        $header = h('header', {\n          staticClass: 'toast-header',\n          class: this.headerClass\n        }, $headerContent);\n      } // Toast body\n\n\n      var isLink = this.href || this.to;\n      var $body = h(isLink ? BLink : 'div', {\n        staticClass: 'toast-body',\n        class: this.bodyClass,\n        props: isLink ? {\n          to: this.to,\n          href: this.href\n        } : {},\n        on: isLink ? {\n          click: this.onLinkClick\n        } : {}\n      }, [this.normalizeSlot('default', this.slotScope) || h()]); // Build the toast\n\n      var $toast = h('div', {\n        key: \"toast-\".concat(this._uid),\n        ref: 'toast',\n        staticClass: 'toast',\n        class: this.toastClass,\n        attrs: _objectSpread({}, this.$attrs, {\n          tabindex: '0',\n          id: this.safeId()\n        })\n      }, [$header, $body]);\n      return $toast;\n    }\n  },\n  render: function render(h) {\n    if (!this.doRender || !this.isMounted) {\n      return h();\n    }\n\n    var name = \"b-toast-\".concat(this._uid); // If scoped styles are applied and the toast is not static,\n    // make sure the scoped style data attribute is applied\n\n    var scopedStyleAttrs = !this.static ? this.scopedStyleAttrs : {};\n    return h(Portal, {\n      props: {\n        name: name,\n        to: this.computedToaster,\n        order: this.order,\n        slim: true,\n        disabled: this.static\n      }\n    }, [h('div', {\n      key: name,\n      ref: 'b-toast',\n      staticClass: 'b-toast',\n      class: this.bToastClasses,\n      attrs: _objectSpread({}, scopedStyleAttrs, {\n        id: this.safeId('_toast_outer'),\n        role: this.isHiding ? null : this.isStatus ? 'status' : 'alert',\n        'aria-live': this.isHiding ? null : this.isStatus ? 'polite' : 'assertive',\n        'aria-atomic': this.isHiding ? null : 'true'\n      })\n    }, [h(BVTransition, {\n      props: {\n        noFade: this.noFade\n      },\n      on: this.transitionHandlers\n    }, [this.localShow ? this.makeToast(h) : h()])])]);\n  }\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\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\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\nimport { concat } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { isUndefined, isString } from '../../../utils/inspect';\nimport { assign, defineProperties, defineProperty, keys, omit, readonlyDescriptor } from '../../../utils/object';\nimport { pluginFactory } from '../../../utils/plugins';\nimport { warn, warnNotClient } from '../../../utils/warn';\nimport { BToast, props as toastProps } from '../toast'; // --- Constants ---\n\nvar PROP_NAME = '$bvToast';\nvar PROP_NAME_PRIV = '_bv__toast'; // Base toast props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(keys(omit(toastProps, ['static', 'visible'])))); // Map prop names to toast slot names\n\nvar propsToSlots = {\n  toastContent: 'default',\n  title: 'toast-title'\n}; // --- Utility methods ---\n// Method to filter only recognized props that are not undefined\n\nvar filterOptions = function filterOptions(options) {\n  return BASE_PROPS.reduce(function (memo, key) {\n    if (!isUndefined(options[key])) {\n      memo[key] = options[key];\n    }\n\n    return memo;\n  }, {});\n}; // Method to install `$bvToast` VM injection\n\n\nvar plugin = function plugin(Vue) {\n  // Create a private sub-component constructor that\n  // extends BToast and self-destructs after hidden\n  // @vue/component\n  var BToastPop = Vue.extend({\n    name: 'BToastPop',\n    extends: BToast,\n    destroyed: function destroyed() {\n      // Make sure we not in document any more\n      if (this.$el && this.$el.parentNode) {\n        this.$el.parentNode.removeChild(this.$el);\n      }\n    },\n    mounted: function mounted() {\n      var self = this; // Self destruct handler\n\n      var handleDestroy = function handleDestroy() {\n        // Ensure the toast has been force hidden\n        self.localShow = false;\n        self.doRender = false;\n        self.$nextTick(function () {\n          self.$nextTick(function () {\n            // In a `requestAF()` to release control back to application\n            // and to allow the portal-target time to remove the content\n            requestAF(function () {\n              self.$destroy();\n            });\n          });\n        });\n      }; // Self destruct if parent destroyed\n\n\n      this.$parent.$once('hook:destroyed', handleDestroy); // Self destruct after hidden\n\n      this.$once('hidden', handleDestroy); // Self destruct when toaster is destroyed\n\n      this.listenOnRoot('bv::toaster::destroyed', function (toaster) {\n        /* istanbul ignore next: hard to test */\n        if (toaster === self.toaster) {\n          handleDestroy();\n        }\n      });\n    }\n  }); // Private method to generate the on-demand toast\n\n  var makeToast = function makeToast(props, $parent) {\n    if (warnNotClient(PROP_NAME)) {\n      /* istanbul ignore next */\n      return;\n    } // Create an instance of `BToastPop` component\n\n\n    var toast = new BToastPop({\n      // We set parent as the local VM so these toasts can emit events on the\n      // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n      parent: $parent,\n      propsData: _objectSpread({}, filterOptions(getComponentConfig('BToast') || {}), {}, omit(props, keys(propsToSlots)), {\n        // Props that can't be overridden\n        static: false,\n        visible: true\n      })\n    }); // Convert certain props to slots\n\n    keys(propsToSlots).forEach(function (prop) {\n      var value = props[prop];\n\n      if (!isUndefined(value)) {\n        // Can be a string, or array of VNodes\n        if (prop === 'title' && isString(value)) {\n          // Special case for title if it is a string, we wrap in a <strong>\n          value = [$parent.$createElement('strong', {\n            class: 'mr-2'\n          }, value)];\n        }\n\n        toast.$slots[propsToSlots[prop]] = concat(value);\n      }\n    }); // Create a mount point (a DIV) and mount it (which triggers the show)\n\n    var div = document.createElement('div');\n    document.body.appendChild(div);\n    toast.$mount(div);\n  }; // Declare BvToast instance property class\n\n\n  var BvToast = /*#__PURE__*/function () {\n    function BvToast(vm) {\n      _classCallCheck(this, BvToast);\n\n      // Assign the new properties to this instance\n      assign(this, {\n        _vm: vm,\n        _root: vm.$root\n      }); // Set these properties as read-only and non-enumerable\n\n      defineProperties(this, {\n        _vm: readonlyDescriptor(),\n        _root: readonlyDescriptor()\n      });\n    } // --- Public Instance methods ---\n    // Opens a user defined toast and returns immediately\n\n\n    _createClass(BvToast, [{\n      key: \"toast\",\n      value: function toast(content) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        if (!content || warnNotClient(PROP_NAME)) {\n          /* istanbul ignore next */\n          return;\n        }\n\n        makeToast(_objectSpread({}, filterOptions(options), {\n          toastContent: content\n        }), this._vm);\n      } // shows a `<b-toast>` component with the specified ID\n\n    }, {\n      key: \"show\",\n      value: function show(id) {\n        if (id) {\n          this._root.$emit('bv::show::toast', id);\n        }\n      } // Hide a toast with specified ID, or if not ID all toasts\n\n    }, {\n      key: \"hide\",\n      value: function hide() {\n        var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n        this._root.$emit('bv::hide::toast', id);\n      }\n    }]);\n\n    return BvToast;\n  }(); // Add our instance mixin\n\n\n  Vue.mixin({\n    beforeCreate: function beforeCreate() {\n      // Because we need access to `$root` for `$emits`, and VM for parenting,\n      // we have to create a fresh instance of `BvToast` for each VM\n      this[PROP_NAME_PRIV] = new BvToast(this);\n    }\n  }); // Define our read-only `$bvToast` instance property\n  // Placed in an if just in case in HMR mode\n  // eslint-disable-next-line no-prototype-builtins\n\n  if (!Vue.prototype.hasOwnProperty(PROP_NAME)) {\n    defineProperty(Vue.prototype, PROP_NAME, {\n      get: function get() {\n        /* istanbul ignore next */\n        if (!this || !this[PROP_NAME_PRIV]) {\n          warn(\"\\\"\".concat(PROP_NAME, \"\\\" must be accessed from a Vue instance \\\"this\\\" context.\"), 'BToast');\n        }\n\n        return this[PROP_NAME_PRIV];\n      }\n    });\n  }\n};\n\nexport var BVToastPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    plugin: plugin\n  }\n});","import { BVToastPlugin } from './helpers/bv-toast';\nimport { BToast } from './toast';\nimport { BToaster } from './toaster';\nimport { pluginFactory } from '../../utils/plugins';\nvar ToastPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BToast: BToast,\n    BToaster: BToaster\n  },\n  // $bvToast injection\n  plugins: {\n    BVToastPlugin: BVToastPlugin\n  }\n});\nexport { ToastPlugin, BToast, BToaster };","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 getScopId from '../../utils/get-scope-id';\nimport identity from '../../utils/identity';\nimport looseEqual from '../../utils/loose-equal';\nimport { concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { isBrowser } from '../../utils/env';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport { BVTooltip } from '../../components/tooltip/helpers/bv-tooltip'; // Key which we use to store tooltip object on element\n\nvar BV_TOOLTIP = '__BV_Tooltip__'; // Default trigger\n\nvar DefaultTrigger = 'hover focus'; // Valid event triggers\n\nvar validTriggers = {\n  focus: true,\n  hover: true,\n  click: true,\n  blur: true,\n  manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noninteractiveRE = /^noninteractive$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i;\nvar spacesRE = /\\s+/; // Build a Tooltip config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n  // We start out with a basic config\n  var NAME = 'BTooltip'; // Default config\n\n  var config = {\n    title: undefined,\n    trigger: '',\n    // Default set below if needed\n    placement: 'top',\n    fallbackPlacement: 'flip',\n    container: false,\n    // Default of body\n    animation: true,\n    offset: 0,\n    id: null,\n    html: false,\n    interactive: true,\n    disabled: false,\n    delay: getComponentConfig(NAME, 'delay'),\n    boundary: String(getComponentConfig(NAME, 'boundary')),\n    boundaryPadding: parseInt(getComponentConfig(NAME, 'boundaryPadding'), 10) || 0,\n    variant: getComponentConfig(NAME, 'variant'),\n    customClass: getComponentConfig(NAME, 'customClass')\n  }; // Process `bindings.value`\n\n  if (isString(bindings.value) || isNumber(bindings.value)) {\n    // Value is tooltip content (HTML optionally supported)\n    config.title = bindings.value;\n  } else if (isFunction(bindings.value)) {\n    // Title generator function\n    config.title = bindings.value;\n  } else if (isPlainObject(bindings.value)) {\n    // Value is config object, so merge\n    config = _objectSpread({}, config, {}, bindings.value);\n  } // If title is not provided, try title attribute\n\n\n  if (isUndefined(config.title)) {\n    // Try attribute\n    var data = vnode.data || {};\n    config.title = data.attrs && !isUndefinedOrNull(data.attrs.title) ? data.attrs.title : undefined;\n  } // Normalize delay\n\n\n  if (!isPlainObject(config.delay)) {\n    config.delay = {\n      show: parseInt(config.delay, 10) || 0,\n      hide: parseInt(config.delay, 10) || 0\n    };\n  } // If argument, assume element ID of container element\n\n\n  if (bindings.arg) {\n    // Element ID specified as arg\n    // We must prepend '#' to become a CSS selector\n    config.container = \"#\".concat(bindings.arg);\n  } // Process modifiers\n\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    if (htmlRE.test(mod)) {\n      // Title allows HTML\n      config.html = true;\n    } else if (noninteractiveRE.test(mod)) {\n      // Noninteractive\n      config.interactive = false;\n    } else if (noFadeRE.test(mod)) {\n      // No animation\n      config.animation = false;\n    } else if (placementRE.test(mod)) {\n      // Placement of tooltip\n      config.placement = mod;\n    } else if (boundaryRE.test(mod)) {\n      // Boundary of tooltip\n      mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n      config.boundary = mod;\n    } else if (delayRE.test(mod)) {\n      // Delay value\n      var delay = parseInt(mod.slice(1), 10) || 0;\n      config.delay.show = delay;\n      config.delay.hide = delay;\n    } else if (delayShowRE.test(mod)) {\n      // Delay show value\n      config.delay.show = parseInt(mod.slice(2), 10) || 0;\n    } else if (delayHideRE.test(mod)) {\n      // Delay hide value\n      config.delay.hide = parseInt(mod.slice(2), 10) || 0;\n    } else if (offsetRE.test(mod)) {\n      // Offset value, negative allowed\n      config.offset = parseInt(mod.slice(1), 10) || 0;\n    } else if (variantRE.test(mod)) {\n      // Variant\n      config.variant = mod.slice(2) || null;\n    }\n  }); // Special handling of event trigger modifiers trigger is\n  // a space separated list\n\n  var selectedTriggers = {}; // Parse current config object trigger\n\n  concat(config.trigger || '').filter(identity).join(' ').trim().toLowerCase().split(spacesRE).forEach(function (trigger) {\n    if (validTriggers[trigger]) {\n      selectedTriggers[trigger] = true;\n    }\n  }); // Parse modifiers for triggers\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    mod = mod.toLowerCase();\n\n    if (validTriggers[mod]) {\n      // If modifier is a valid trigger\n      selectedTriggers[mod] = true;\n    }\n  }); // Sanitize triggers\n\n  config.trigger = keys(selectedTriggers).join(' ');\n\n  if (config.trigger === 'blur') {\n    // Blur by itself is useless, so convert it to 'focus'\n    config.trigger = 'focus';\n  }\n\n  if (!config.trigger) {\n    // Use default trigger\n    config.trigger = DefaultTrigger;\n  } // Return the config\n\n\n  return config;\n}; // Add/update Tooltip on our element\n\n\nvar applyTooltip = function applyTooltip(el, bindings, vnode) {\n  if (!isBrowser) {\n    /* istanbul ignore next */\n    return;\n  }\n\n  var config = parseBindings(bindings, vnode);\n\n  if (!el[BV_TOOLTIP]) {\n    var $parent = vnode.context;\n    el[BV_TOOLTIP] = new BVTooltip({\n      parent: $parent,\n      // Add the parent's scoped style attribute data\n      _scopeId: getScopId($parent, undefined)\n    });\n    el[BV_TOOLTIP].__bv_prev_data__ = {};\n    el[BV_TOOLTIP].$on('show', function ()\n    /* istanbul ignore next: for now */\n    {\n      // Before showing the tooltip, we update the title if it is a function\n      if (isFunction(config.title)) {\n        el[BV_TOOLTIP].updateData({\n          title: config.title(el)\n        });\n      }\n    });\n  }\n\n  var data = {\n    title: config.title,\n    triggers: config.trigger,\n    placement: config.placement,\n    fallbackPlacement: config.fallbackPlacement,\n    variant: config.variant,\n    customClass: config.customClass,\n    container: config.container,\n    boundary: config.boundary,\n    delay: config.delay,\n    offset: config.offset,\n    noFade: !config.animation,\n    id: config.id,\n    interactive: config.interactive,\n    disabled: config.disabled,\n    html: config.html\n  };\n  var oldData = el[BV_TOOLTIP].__bv_prev_data__;\n  el[BV_TOOLTIP].__bv_prev_data__ = data;\n\n  if (!looseEqual(data, oldData)) {\n    // We only update the instance if data has changed\n    var newData = {\n      target: el\n    };\n    keys(data).forEach(function (prop) {\n      // We only pass data properties that have changed\n      if (data[prop] !== oldData[prop]) {\n        // if title is a function, we execute it here\n        newData[prop] = prop === 'title' && isFunction(data[prop]) ? data[prop](el) : data[prop];\n      }\n    });\n    el[BV_TOOLTIP].updateData(newData);\n  }\n}; // Remove Tooltip on our element\n\n\nvar removeTooltip = function removeTooltip(el) {\n  if (el[BV_TOOLTIP]) {\n    el[BV_TOOLTIP].$destroy();\n    el[BV_TOOLTIP] = null;\n  }\n\n  delete el[BV_TOOLTIP];\n}; // Export our directive\n\n\nexport var VBTooltip = {\n  bind: function bind(el, bindings, vnode) {\n    applyTooltip(el, bindings, vnode);\n  },\n  // We use `componentUpdated` here instead of `update`, as the former\n  // waits until the containing component and children have finished updating\n  componentUpdated: function componentUpdated(el, bindings, vnode) {\n    // Performed in a `$nextTick()` to prevent render update loops\n    vnode.context.$nextTick(function () {\n      applyTooltip(el, bindings, vnode);\n    });\n  },\n  unbind: function unbind(el) {\n    removeTooltip(el);\n  }\n};","import { VBTooltip } from './tooltip';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBTooltipPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBTooltip: VBTooltip\n  }\n});\nexport { VBTooltipPlugin, VBTooltip };","import { BTooltip } from './tooltip';\nimport { VBTooltipPlugin } from '../../directives/tooltip';\nimport { pluginFactory } from '../../utils/plugins';\nvar TooltipPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTooltip: BTooltip\n  },\n  plugins: {\n    VBTooltipPlugin: VBTooltipPlugin\n  }\n});\nexport { TooltipPlugin, BTooltip };","import { pluginFactory } from '../utils/plugins'; // Component group plugins\n\nimport { AlertPlugin } from './alert';\nimport { AspectPlugin } from './aspect';\nimport { AvatarPlugin } from './avatar';\nimport { BadgePlugin } from './badge';\nimport { BreadcrumbPlugin } from './breadcrumb';\nimport { ButtonPlugin } from './button';\nimport { ButtonGroupPlugin } from './button-group';\nimport { ButtonToolbarPlugin } from './button-toolbar';\nimport { CalendarPlugin } from './calendar';\nimport { CardPlugin } from './card';\nimport { CarouselPlugin } from './carousel';\nimport { CollapsePlugin } from './collapse';\nimport { DropdownPlugin } from './dropdown';\nimport { EmbedPlugin } from './embed';\nimport { FormPlugin } from './form';\nimport { FormCheckboxPlugin } from './form-checkbox';\nimport { FormDatepickerPlugin } from './form-datepicker';\nimport { FormFilePlugin } from './form-file';\nimport { FormGroupPlugin } from './form-group';\nimport { FormInputPlugin } from './form-input';\nimport { FormRadioPlugin } from './form-radio';\nimport { FormSelectPlugin } from './form-select';\nimport { FormSpinbuttonPlugin } from './form-spinbutton';\nimport { FormTagsPlugin } from './form-tags';\nimport { FormTextareaPlugin } from './form-textarea';\nimport { FormTimepickerPlugin } from './form-timepicker';\nimport { ImagePlugin } from './image';\nimport { InputGroupPlugin } from './input-group';\nimport { JumbotronPlugin } from './jumbotron';\nimport { LayoutPlugin } from './layout';\nimport { LinkPlugin } from './link';\nimport { ListGroupPlugin } from './list-group';\nimport { MediaPlugin } from './media';\nimport { ModalPlugin } from './modal';\nimport { NavPlugin } from './nav';\nimport { NavbarPlugin } from './navbar';\nimport { OverlayPlugin } from './overlay';\nimport { PaginationPlugin } from './pagination';\nimport { PaginationNavPlugin } from './pagination-nav';\nimport { PopoverPlugin } from './popover';\nimport { ProgressPlugin } from './progress';\nimport { SpinnerPlugin } from './spinner'; // Table plugin includes TableLitePlugin and TableSimplePlugin\n\nimport { TablePlugin } from './table';\nimport { TabsPlugin } from './tabs';\nimport { TimePlugin } from './time';\nimport { ToastPlugin } from './toast';\nimport { TooltipPlugin } from './tooltip'; // Main plugin to install all component group plugins\n\nexport var componentsPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    AlertPlugin: AlertPlugin,\n    AspectPlugin: AspectPlugin,\n    AvatarPlugin: AvatarPlugin,\n    BadgePlugin: BadgePlugin,\n    BreadcrumbPlugin: BreadcrumbPlugin,\n    ButtonPlugin: ButtonPlugin,\n    ButtonGroupPlugin: ButtonGroupPlugin,\n    ButtonToolbarPlugin: ButtonToolbarPlugin,\n    CalendarPlugin: CalendarPlugin,\n    CardPlugin: CardPlugin,\n    CarouselPlugin: CarouselPlugin,\n    CollapsePlugin: CollapsePlugin,\n    DropdownPlugin: DropdownPlugin,\n    EmbedPlugin: EmbedPlugin,\n    FormPlugin: FormPlugin,\n    FormCheckboxPlugin: FormCheckboxPlugin,\n    FormDatepickerPlugin: FormDatepickerPlugin,\n    FormFilePlugin: FormFilePlugin,\n    FormGroupPlugin: FormGroupPlugin,\n    FormInputPlugin: FormInputPlugin,\n    FormRadioPlugin: FormRadioPlugin,\n    FormSelectPlugin: FormSelectPlugin,\n    FormSpinbuttonPlugin: FormSpinbuttonPlugin,\n    FormTagsPlugin: FormTagsPlugin,\n    FormTextareaPlugin: FormTextareaPlugin,\n    FormTimepickerPlugin: FormTimepickerPlugin,\n    ImagePlugin: ImagePlugin,\n    InputGroupPlugin: InputGroupPlugin,\n    JumbotronPlugin: JumbotronPlugin,\n    LayoutPlugin: LayoutPlugin,\n    LinkPlugin: LinkPlugin,\n    ListGroupPlugin: ListGroupPlugin,\n    MediaPlugin: MediaPlugin,\n    ModalPlugin: ModalPlugin,\n    NavPlugin: NavPlugin,\n    NavbarPlugin: NavbarPlugin,\n    OverlayPlugin: OverlayPlugin,\n    PaginationPlugin: PaginationPlugin,\n    PaginationNavPlugin: PaginationNavPlugin,\n    PopoverPlugin: PopoverPlugin,\n    ProgressPlugin: ProgressPlugin,\n    SpinnerPlugin: SpinnerPlugin,\n    TablePlugin: TablePlugin,\n    TabsPlugin: TabsPlugin,\n    TimePlugin: TimePlugin,\n    ToastPlugin: ToastPlugin,\n    TooltipPlugin: TooltipPlugin\n  }\n});","import { VBHover } from './hover';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBHoverPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBHover: VBHover\n  }\n});\nexport { VBHoverPlugin, VBHover };","import { VBModal } from './modal';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBModalPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBModal: VBModal\n  }\n});\nexport { VBModalPlugin, VBModal };","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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\n * ScrollSpy class definition\n */\nimport observeDom from '../../utils/observe-dom';\nimport { addClass, closest, getAttr, getBCR, hasClass, isElement, isVisible, matches, offset, position, removeClass, select, selectAll } from '../../utils/dom';\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOn, eventOff } from '../../utils/events';\nimport { isString, isUndefined } from '../../utils/inspect';\nimport { toString as objectToString } from '../../utils/object';\nimport { warn } from '../../utils/warn';\n/*\n * Constants / Defaults\n */\n\nvar NAME = 'v-b-scrollspy';\nvar ACTIVATE_EVENT = 'bv::scrollspy::activate';\nvar Default = {\n  element: 'body',\n  offset: 10,\n  method: 'auto',\n  throttle: 75\n};\nvar DefaultType = {\n  element: '(string|element|component)',\n  offset: 'number',\n  method: 'string',\n  throttle: 'number'\n};\nvar ClassName = {\n  DROPDOWN_ITEM: 'dropdown-item',\n  ACTIVE: 'active'\n};\nvar Selector = {\n  ACTIVE: '.active',\n  NAV_LIST_GROUP: '.nav, .list-group',\n  NAV_LINKS: '.nav-link',\n  NAV_ITEMS: '.nav-item',\n  LIST_ITEMS: '.list-group-item',\n  DROPDOWN: '.dropdown, .dropup',\n  DROPDOWN_ITEMS: '.dropdown-item',\n  DROPDOWN_TOGGLE: '.dropdown-toggle'\n};\nvar OffsetMethod = {\n  OFFSET: 'offset',\n  POSITION: 'position'\n}; // HREFs must end with a hash followed by at least one non-hash character.\n// HREFs in the links are assumed to point to non-external links.\n// Comparison to the current page base URL is not performed!\n\nvar HREF_REGEX = /^.*(#[^#]+)$/; // Transition Events\n\nvar TransitionEndEvents = ['webkitTransitionEnd', 'transitionend', 'otransitionend', 'oTransitionEnd'];\n/*\n * Utility Methods\n */\n// Better var type detection\n\nvar toType = function toType(obj)\n/* istanbul ignore next: not easy to test */\n{\n  return objectToString(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}; // Check config properties for expected types\n\n\nvar typeCheckConfig = function typeCheckConfig(componentName, config, configTypes)\n/* istanbul ignore next: not easy to test */\n{\n  for (var property in configTypes) {\n    if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n      var expectedTypes = configTypes[property];\n      var value = config[property];\n      var valueType = value && isElement(value) ? 'element' : toType(value); // handle Vue instances\n\n      valueType = value && value._isVue ? 'component' : valueType;\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        /* istanbul ignore next */\n        warn(\"\".concat(componentName, \": Option \\\"\").concat(property, \"\\\" provided type \\\"\").concat(valueType, \"\\\" but expected type \\\"\").concat(expectedTypes, \"\\\"\"));\n      }\n    }\n  }\n};\n/*\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n/* istanbul ignore next: not easy to test */\n\n\nvar ScrollSpy\n/* istanbul ignore next: not easy to test */\n= /*#__PURE__*/function () {\n  function ScrollSpy(element, config, $root) {\n    _classCallCheck(this, ScrollSpy);\n\n    // The element we activate links in\n    this.$el = element;\n    this.$scroller = null;\n    this.$selector = [Selector.NAV_LINKS, Selector.LIST_ITEMS, Selector.DROPDOWN_ITEMS].join(',');\n    this.$offsets = [];\n    this.$targets = [];\n    this.$activeTarget = null;\n    this.$scrollHeight = 0;\n    this.$resizeTimeout = null;\n    this.$obs_scroller = null;\n    this.$obs_targets = null;\n    this.$root = $root || null;\n    this.$config = null;\n    this.updateConfig(config);\n  }\n\n  _createClass(ScrollSpy, [{\n    key: \"updateConfig\",\n    value: function updateConfig(config, $root) {\n      if (this.$scroller) {\n        // Just in case out scroll element has changed\n        this.unlisten();\n        this.$scroller = null;\n      }\n\n      var cfg = _objectSpread({}, this.constructor.Default, {}, config);\n\n      if ($root) {\n        this.$root = $root;\n      }\n\n      typeCheckConfig(this.constructor.Name, cfg, this.constructor.DefaultType);\n      this.$config = cfg;\n\n      if (this.$root) {\n        var self = this;\n        this.$root.$nextTick(function () {\n          self.listen();\n        });\n      } else {\n        this.listen();\n      }\n    }\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      this.unlisten();\n      clearTimeout(this.$resizeTimeout);\n      this.$resizeTimeout = null;\n      this.$el = null;\n      this.$config = null;\n      this.$scroller = null;\n      this.$selector = null;\n      this.$offsets = null;\n      this.$targets = null;\n      this.$activeTarget = null;\n      this.$scrollHeight = null;\n    }\n  }, {\n    key: \"listen\",\n    value: function listen() {\n      var _this = this;\n\n      var scroller = this.getScroller();\n\n      if (scroller && scroller.tagName !== 'BODY') {\n        eventOn(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n      }\n\n      eventOn(window, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n      eventOn(window, 'resize', this, EVENT_OPTIONS_NO_CAPTURE);\n      eventOn(window, 'orientationchange', this, EVENT_OPTIONS_NO_CAPTURE);\n      TransitionEndEvents.forEach(function (evtName) {\n        eventOn(window, evtName, _this, EVENT_OPTIONS_NO_CAPTURE);\n      });\n      this.setObservers(true); // Schedule a refresh\n\n      this.handleEvent('refresh');\n    }\n  }, {\n    key: \"unlisten\",\n    value: function unlisten() {\n      var _this2 = this;\n\n      var scroller = this.getScroller();\n      this.setObservers(false);\n\n      if (scroller && scroller.tagName !== 'BODY') {\n        eventOff(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n      }\n\n      eventOff(window, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n      eventOff(window, 'resize', this, EVENT_OPTIONS_NO_CAPTURE);\n      eventOff(window, 'orientationchange', this, EVENT_OPTIONS_NO_CAPTURE);\n      TransitionEndEvents.forEach(function (evtName) {\n        eventOff(window, evtName, _this2, EVENT_OPTIONS_NO_CAPTURE);\n      });\n    }\n  }, {\n    key: \"setObservers\",\n    value: function setObservers(on) {\n      var _this3 = this;\n\n      // We observe both the scroller for content changes, and the target links\n      if (this.$obs_scroller) {\n        this.$obs_scroller.disconnect();\n        this.$obs_scroller = null;\n      }\n\n      if (this.$obs_targets) {\n        this.$obs_targets.disconnect();\n        this.$obs_targets = null;\n      }\n\n      if (on) {\n        this.$obs_targets = observeDom(this.$el, function () {\n          _this3.handleEvent('mutation');\n        }, {\n          subtree: true,\n          childList: true,\n          attributes: true,\n          attributeFilter: ['href']\n        });\n        this.$obs_scroller = observeDom(this.getScroller(), function () {\n          _this3.handleEvent('mutation');\n        }, {\n          subtree: true,\n          childList: true,\n          characterData: true,\n          attributes: true,\n          attributeFilter: ['id', 'style', 'class']\n        });\n      }\n    } // General event handler\n\n  }, {\n    key: \"handleEvent\",\n    value: function handleEvent(evt) {\n      var type = isString(evt) ? evt : evt.type;\n      var self = this;\n\n      var resizeThrottle = function resizeThrottle() {\n        if (!self.$resizeTimeout) {\n          self.$resizeTimeout = setTimeout(function () {\n            self.refresh();\n            self.process();\n            self.$resizeTimeout = null;\n          }, self.$config.throttle);\n        }\n      };\n\n      if (type === 'scroll') {\n        if (!this.$obs_scroller) {\n          // Just in case we are added to the DOM before the scroll target is\n          // We re-instantiate our listeners, just in case\n          this.listen();\n        }\n\n        this.process();\n      } else if (/(resize|orientationchange|mutation|refresh)/.test(type)) {\n        // Postpone these events by throttle time\n        resizeThrottle();\n      }\n    } // Refresh the list of target links on the element we are applied to\n\n  }, {\n    key: \"refresh\",\n    value: function refresh() {\n      var _this4 = this;\n\n      var scroller = this.getScroller();\n\n      if (!scroller) {\n        return;\n      }\n\n      var autoMethod = scroller !== scroller.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET;\n      var method = this.$config.method === 'auto' ? autoMethod : this.$config.method;\n      var methodFn = method === OffsetMethod.POSITION ? position : offset;\n      var offsetBase = method === OffsetMethod.POSITION ? this.getScrollTop() : 0;\n      this.$offsets = [];\n      this.$targets = [];\n      this.$scrollHeight = this.getScrollHeight(); // Find all the unique link HREFs that we will control\n\n      selectAll(this.$selector, this.$el) // Get HREF value\n      .map(function (link) {\n        return getAttr(link, 'href');\n      }) // Filter out HREFs that do not match our RegExp\n      .filter(function (href) {\n        return href && HREF_REGEX.test(href || '');\n      }) // Find all elements with ID that match HREF hash\n      .map(function (href) {\n        // Convert HREF into an ID (including # at beginning)\n        var id = href.replace(HREF_REGEX, '$1').trim();\n\n        if (!id) {\n          return null;\n        } // Find the element with the ID specified by id\n\n\n        var el = select(id, scroller);\n\n        if (el && isVisible(el)) {\n          return {\n            offset: parseInt(methodFn(el).top, 10) + offsetBase,\n            target: id\n          };\n        }\n\n        return null;\n      }).filter(Boolean) // Sort them by their offsets (smallest first)\n      .sort(function (a, b) {\n        return a.offset - b.offset;\n      }) // record only unique targets/offsets\n      .reduce(function (memo, item) {\n        if (!memo[item.target]) {\n          _this4.$offsets.push(item.offset);\n\n          _this4.$targets.push(item.target);\n\n          memo[item.target] = true;\n        }\n\n        return memo;\n      }, {}); // Return this for easy chaining\n\n      return this;\n    } // Handle activating/clearing\n\n  }, {\n    key: \"process\",\n    value: function process() {\n      var scrollTop = this.getScrollTop() + this.$config.offset;\n      var scrollHeight = this.getScrollHeight();\n      var maxScroll = this.$config.offset + scrollHeight - this.getOffsetHeight();\n\n      if (this.$scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this.$targets[this.$targets.length - 1];\n\n        if (this.$activeTarget !== target) {\n          this.activate(target);\n        }\n\n        return;\n      }\n\n      if (this.$activeTarget && scrollTop < this.$offsets[0] && this.$offsets[0] > 0) {\n        this.$activeTarget = null;\n        this.clear();\n        return;\n      }\n\n      for (var i = this.$offsets.length; i--;) {\n        var isActiveTarget = this.$activeTarget !== this.$targets[i] && scrollTop >= this.$offsets[i] && (isUndefined(this.$offsets[i + 1]) || scrollTop < this.$offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this.activate(this.$targets[i]);\n        }\n      }\n    }\n  }, {\n    key: \"getScroller\",\n    value: function getScroller() {\n      if (this.$scroller) {\n        return this.$scroller;\n      }\n\n      var scroller = this.$config.element;\n\n      if (!scroller) {\n        return null;\n      } else if (isElement(scroller.$el)) {\n        scroller = scroller.$el;\n      } else if (isString(scroller)) {\n        scroller = select(scroller);\n      }\n\n      if (!scroller) {\n        return null;\n      }\n\n      this.$scroller = scroller.tagName === 'BODY' ? window : scroller;\n      return this.$scroller;\n    }\n  }, {\n    key: \"getScrollTop\",\n    value: function getScrollTop() {\n      var scroller = this.getScroller();\n      return scroller === window ? scroller.pageYOffset : scroller.scrollTop;\n    }\n  }, {\n    key: \"getScrollHeight\",\n    value: function getScrollHeight() {\n      return this.getScroller().scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    }\n  }, {\n    key: \"getOffsetHeight\",\n    value: function getOffsetHeight() {\n      var scroller = this.getScroller();\n      return scroller === window ? window.innerHeight : getBCR(scroller).height;\n    }\n  }, {\n    key: \"activate\",\n    value: function activate(target) {\n      var _this5 = this;\n\n      this.$activeTarget = target;\n      this.clear(); // Grab the list of target links (<a href=\"{$target}\">)\n\n      var links = selectAll(this.$selector // Split out the base selectors\n      .split(',') // Map to a selector that matches links with HREF ending in the ID (including '#')\n      .map(function (selector) {\n        return \"\".concat(selector, \"[href$=\\\"\").concat(target, \"\\\"]\");\n      }) // Join back into a single selector string\n      .join(','), this.$el);\n      links.forEach(function (link) {\n        if (hasClass(link, ClassName.DROPDOWN_ITEM)) {\n          // This is a dropdown item, so find the .dropdown-toggle and set its state\n          var dropdown = closest(Selector.DROPDOWN, link);\n\n          if (dropdown) {\n            _this5.setActiveState(select(Selector.DROPDOWN_TOGGLE, dropdown), true);\n          } // Also set this link's state\n\n\n          _this5.setActiveState(link, true);\n        } else {\n          // Set triggered link as active\n          _this5.setActiveState(link, true);\n\n          if (matches(link.parentElement, Selector.NAV_ITEMS)) {\n            // Handle nav-link inside nav-item, and set nav-item active\n            _this5.setActiveState(link.parentElement, true);\n          } // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n\n          var el = link;\n\n          while (el) {\n            el = closest(Selector.NAV_LIST_GROUP, el);\n            var sibling = el ? el.previousElementSibling : null;\n\n            if (sibling && matches(sibling, \"\".concat(Selector.NAV_LINKS, \", \").concat(Selector.LIST_ITEMS))) {\n              _this5.setActiveState(sibling, true);\n            } // Handle special case where nav-link is inside a nav-item\n\n\n            if (sibling && matches(sibling, Selector.NAV_ITEMS)) {\n              _this5.setActiveState(select(Selector.NAV_LINKS, sibling), true); // Add active state to nav-item as well\n\n\n              _this5.setActiveState(sibling, true);\n            }\n          }\n        }\n      }); // Signal event to via $root, passing ID of activated target and reference to array of links\n\n      if (links && links.length > 0 && this.$root) {\n        this.$root.$emit(ACTIVATE_EVENT, target, links);\n      }\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      var _this6 = this;\n\n      selectAll(\"\".concat(this.$selector, \", \").concat(Selector.NAV_ITEMS), this.$el).filter(function (el) {\n        return hasClass(el, ClassName.ACTIVE);\n      }).forEach(function (el) {\n        return _this6.setActiveState(el, false);\n      });\n    }\n  }, {\n    key: \"setActiveState\",\n    value: function setActiveState(el, active) {\n      if (!el) {\n        return;\n      }\n\n      if (active) {\n        addClass(el, ClassName.ACTIVE);\n      } else {\n        removeClass(el, ClassName.ACTIVE);\n      }\n    }\n  }], [{\n    key: \"Name\",\n    get: function get() {\n      return NAME;\n    }\n  }, {\n    key: \"Default\",\n    get: function get() {\n      return Default;\n    }\n  }, {\n    key: \"DefaultType\",\n    get: function get() {\n      return DefaultType;\n    }\n  }]);\n\n  return ScrollSpy;\n}();\n\nexport default ScrollSpy;","import ScrollSpy from './scrollspy.class';\nimport { isBrowser } from '../../utils/env';\nimport { keys } from '../../utils/object';\nimport { isNumber, isObject, isString } from '../../utils/inspect'; // Key we use to store our instance\n\nvar BV_SCROLLSPY = '__BV_ScrollSpy__'; // Pre-compiled regular expressions\n\nvar onlyDigitsRE = /^\\d+$/;\nvar offsetRE = /^(auto|position|offset)$/; // Build a ScrollSpy config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\n/* istanbul ignore next: not easy to test */\n\nvar parseBindings = function parseBindings(bindings)\n/* istanbul ignore next: not easy to test */\n{\n  var config = {}; // If argument, assume element ID\n\n  if (bindings.arg) {\n    // Element ID specified as arg\n    // We must prepend '#' to become a CSS selector\n    config.element = \"#\".concat(bindings.arg);\n  } // Process modifiers\n\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    if (onlyDigitsRE.test(mod)) {\n      // Offset value\n      config.offset = parseInt(mod, 10);\n    } else if (offsetRE.test(mod)) {\n      // Offset method\n      config.method = mod;\n    }\n  }); // Process value\n\n  if (isString(bindings.value)) {\n    // Value is a CSS ID or selector\n    config.element = bindings.value;\n  } else if (isNumber(bindings.value)) {\n    // Value is offset\n    config.offset = Math.round(bindings.value);\n  } else if (isObject(bindings.value)) {\n    // Value is config object\n    // Filter the object based on our supported config options\n    keys(bindings.value).filter(function (k) {\n      return !!ScrollSpy.DefaultType[k];\n    }).forEach(function (k) {\n      config[k] = bindings.value[k];\n    });\n  }\n\n  return config;\n}; // Add or update ScrollSpy on our element\n\n\nvar applyScrollspy = function applyScrollspy(el, bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n  if (!isBrowser) {\n    /* istanbul ignore next */\n    return;\n  }\n\n  var config = parseBindings(bindings);\n\n  if (el[BV_SCROLLSPY]) {\n    el[BV_SCROLLSPY].updateConfig(config, vnode.context.$root);\n  } else {\n    el[BV_SCROLLSPY] = new ScrollSpy(el, config, vnode.context.$root);\n  }\n}; // Remove ScrollSpy on our element\n\n/* istanbul ignore next: not easy to test */\n\n\nvar removeScrollspy = function removeScrollspy(el)\n/* istanbul ignore next: not easy to test */\n{\n  if (el[BV_SCROLLSPY]) {\n    el[BV_SCROLLSPY].dispose();\n    el[BV_SCROLLSPY] = null;\n    delete el[BV_SCROLLSPY];\n  }\n};\n/*\n * Export our directive\n */\n\n\nexport var VBScrollspy = {\n  bind: function bind(el, bindings, vnode)\n  /* istanbul ignore next: not easy to test */\n  {\n    applyScrollspy(el, bindings, vnode);\n  },\n  inserted: function inserted(el, bindings, vnode)\n  /* istanbul ignore next: not easy to test */\n  {\n    applyScrollspy(el, bindings, vnode);\n  },\n  update: function update(el, bindings, vnode)\n  /* istanbul ignore next: not easy to test */\n  {\n    if (bindings.value !== bindings.oldValue) {\n      applyScrollspy(el, bindings, vnode);\n    }\n  },\n  componentUpdated: function componentUpdated(el, bindings, vnode)\n  /* istanbul ignore next: not easy to test */\n  {\n    if (bindings.value !== bindings.oldValue) {\n      applyScrollspy(el, bindings, vnode);\n    }\n  },\n  unbind: function unbind(el)\n  /* istanbul ignore next: not easy to test */\n  {\n    removeScrollspy(el);\n  }\n};","import { VBScrollspy } from './scrollspy';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBScrollspyPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBScrollspy: VBScrollspy\n  }\n});\nexport { VBScrollspyPlugin, VBScrollspy };","import { VBToggle } from './toggle';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBTogglePlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBToggle: VBToggle\n  }\n});\nexport { VBTogglePlugin, VBToggle };","import { VBVisible } from './visible';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBVisiblePlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBVisible: VBVisible\n  }\n});\nexport { VBVisiblePlugin, VBVisible };","import { pluginFactory } from '../utils/plugins';\nimport { VBHoverPlugin } from './hover';\nimport { VBModalPlugin } from './modal';\nimport { VBPopoverPlugin } from './popover';\nimport { VBScrollspyPlugin } from './scrollspy';\nimport { VBTogglePlugin } from './toggle';\nimport { VBTooltipPlugin } from './tooltip';\nimport { VBVisiblePlugin } from './visible'; // Main plugin for installing all directive plugins\n\nexport var directivesPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    VBHoverPlugin: VBHoverPlugin,\n    VBModalPlugin: VBModalPlugin,\n    VBPopoverPlugin: VBPopoverPlugin,\n    VBScrollspyPlugin: VBScrollspyPlugin,\n    VBTogglePlugin: VBTogglePlugin,\n    VBTooltipPlugin: VBTooltipPlugin,\n    VBVisiblePlugin: VBVisiblePlugin\n  }\n});","/*!\n * BootstrapVue 2.9.0\n *\n * @link https://bootstrap-vue.js.org\n * @source https://github.com/bootstrap-vue/bootstrap-vue\n * @copyright (c) 2016-2020 BootstrapVue\n * @license MIT\n * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE\n */\nimport { installFactory } from './utils/plugins';\nimport { componentsPlugin } from './components';\nimport { directivesPlugin } from './directives';\nimport { BVConfigPlugin } from './bv-config';\nvar NAME = 'BootstrapVue'; // --- BootstrapVue installer ---\n\nvar install = /*#__PURE__*/installFactory({\n  plugins: {\n    componentsPlugin: componentsPlugin,\n    directivesPlugin: directivesPlugin\n  }\n}); // --- BootstrapVue plugin ---\n\nvar BootstrapVue = /*#__PURE__*/{\n  install: install,\n  NAME: NAME\n}; // --- Named exports for BvConfigPlugin ---\n\nexport { // Installer exported in case the consumer does not import `default`\n// as the plugin in CommonJS build (or does not have interop enabled for CommonJS)\n// Both the following will work:\n//   BootstrapVue = require('bootstrap-vue')\n//   BootstrapVue = require('bootstrap-vue').default\n//   Vue.use(BootstrapVue)\ninstall, NAME // BootstrapVue config plugin\n, BVConfigPlugin // `BVConfigPlugin` has been documented as `BVConfig` as well,\n// so we add an alias to the shorter name for backwards compat\n, BVConfigPlugin as BVConfig // Main BootstrapVue plugin\n, BootstrapVue }; // --- Export named injection plugins ---\n// TODO:\n//   We should probably move injections into their own\n//   parent directory (i.e. `/src/injections`)\n\nexport { BVModalPlugin } from './components/modal/helpers/bv-modal';\nexport { BVToastPlugin } from './components/toast/helpers/bv-toast'; // Webpack 4 has optimization difficulties with re-export of re-exports,\n// so we import the components individually here for better tree shaking\n//\n// Webpack v5 fixes the optimizations with re-export of re-exports so this\n// can be reverted back to `export * from './table'` when Webpack v5 is released\n// See: https://github.com/webpack/webpack/pull/9203 (available in Webpack v5.0.0-alpha.15)\n// -- Export Icon components and IconPlugin/BootstrapVueIcons ---\n// export * from './icons'\n\nexport { IconsPlugin, BootstrapVueIcons } from './icons/plugin';\nexport { BIcon } from './icons/icon';\nexport { BIconstack } from './icons/iconstack'; // This re-export is only a single level deep, which\n// Webpack 4 (usually) handles correctly when tree shaking\n\nexport * from './icons/icons'; // --- Export all individual components and component group plugins as named exports ---\n// export * from './components/alert'\n\nexport { AlertPlugin } from './components/alert';\nexport { BAlert } from './components/alert/alert'; // export * from './components/aspect'\n\nexport { AspectPlugin } from './components/aspect';\nexport { BAspect } from './components/aspect/aspect'; // export * from './components/avatar'\n\nexport { AvatarPlugin } from './components/avatar';\nexport { BAvatar } from './components/avatar/avatar'; // export * from './components/badge'\n\nexport { BadgePlugin } from './components/badge';\nexport { BBadge } from './components/badge/badge'; // export * from './components/breadcrumb'\n\nexport { BreadcrumbPlugin } from './components/breadcrumb';\nexport { BBreadcrumb } from './components/breadcrumb/breadcrumb';\nexport { BBreadcrumbItem } from './components/breadcrumb/breadcrumb-item'; // export * from './components/button'\n\nexport { ButtonPlugin } from './components/button';\nexport { BButton } from './components/button/button';\nexport { BButtonClose } from './components/button/button-close'; // export * from './components/button-group'\n\nexport { ButtonGroupPlugin } from './components/button-group';\nexport { BButtonGroup } from './components/button-group/button-group'; // export * from './components/button-toolbar'\n\nexport { ButtonToolbarPlugin } from './components/button-toolbar';\nexport { BButtonToolbar } from './components/button-toolbar/button-toolbar'; // export * from './components/calendar'\n\nexport { CalendarPlugin } from './components/calendar';\nexport { BCalendar } from './components/calendar/calendar'; // export * from './components/card'\n\nexport { CardPlugin } from './components/card';\nexport { BCard } from './components/card/card';\nexport { BCardBody } from './components/card/card-body';\nexport { BCardFooter } from './components/card/card-footer';\nexport { BCardGroup } from './components/card/card-group';\nexport { BCardHeader } from './components/card/card-header';\nexport { BCardImg } from './components/card/card-img';\nexport { BCardImgLazy } from './components/card/card-img-lazy';\nexport { BCardSubTitle } from './components/card/card-sub-title';\nexport { BCardText } from './components/card/card-text';\nexport { BCardTitle } from './components/card/card-title'; // export * from './components/carousel'\n\nexport { CarouselPlugin } from './components/carousel';\nexport { BCarousel } from './components/carousel/carousel';\nexport { BCarouselSlide } from './components/carousel/carousel-slide'; // export * from './components/collapse'\n\nexport { CollapsePlugin } from './components/collapse';\nexport { BCollapse } from './components/collapse/collapse'; // export * from './components/dropdown'\n\nexport { DropdownPlugin } from './components/dropdown';\nexport { BDropdown } from './components/dropdown/dropdown';\nexport { BDropdownItem } from './components/dropdown/dropdown-item';\nexport { BDropdownItemButton } from './components/dropdown/dropdown-item-button';\nexport { BDropdownDivider } from './components/dropdown/dropdown-divider';\nexport { BDropdownForm } from './components/dropdown/dropdown-form';\nexport { BDropdownGroup } from './components/dropdown/dropdown-group';\nexport { BDropdownHeader } from './components/dropdown/dropdown-header';\nexport { BDropdownText } from './components/dropdown/dropdown-text'; // export * from './components/embed'\n\nexport { EmbedPlugin } from './components/embed';\nexport { BEmbed } from './components/embed/embed'; // export * from './components/form'\n\nexport { FormPlugin } from './components/form';\nexport { BForm } from './components/form/form';\nexport { BFormDatalist } from './components/form/form-datalist';\nexport { BFormText } from './components/form/form-text';\nexport { BFormInvalidFeedback } from './components/form/form-invalid-feedback';\nexport { BFormValidFeedback } from './components/form/form-valid-feedback'; // export * from './components/form-checkbox'\n\nexport { FormCheckboxPlugin } from './components/form-checkbox';\nexport { BFormCheckbox } from './components/form-checkbox/form-checkbox';\nexport { BFormCheckboxGroup } from './components/form-checkbox/form-checkbox-group'; // export * from './components/form-datepicker'\n\nexport { FormDatepickerPlugin } from './components/form-datepicker';\nexport { BFormDatepicker } from './components/form-datepicker/form-datepicker'; // export * from './components/form-file'\n\nexport { FormFilePlugin } from './components/form-file';\nexport { BFormFile } from './components/form-file/form-file'; // export * from './components/form-group'\n\nexport { FormGroupPlugin } from './components/form-group';\nexport { BFormGroup } from './components/form-group/form-group'; // export * from './components/form-input'\n\nexport { FormInputPlugin } from './components/form-input';\nexport { BFormInput } from './components/form-input/form-input'; // export * from './components/form-radio'\n\nexport { FormRadioPlugin } from './components/form-radio';\nexport { BFormRadio } from './components/form-radio/form-radio';\nexport { BFormRadioGroup } from './components/form-radio/form-radio-group'; // export * from './components/form-tags'\n\nexport { FormTagsPlugin } from './components/form-tags';\nexport { BFormTags } from './components/form-tags/form-tags';\nexport { BFormTag } from './components/form-tags/form-tag'; // export * from './components/form-select'\n\nexport { FormSelectPlugin } from './components/form-select';\nexport { BFormSelect } from './components/form-select/form-select';\nexport { BFormSelectOption } from './components/form-select/form-select-option';\nexport { BFormSelectOptionGroup } from './components/form-select/form-select-option-group'; // export * from './components/form-spinbutton'\n\nexport { FormSpinbuttonPlugin } from './components/form-spinbutton';\nexport { BFormSpinbutton } from './components/form-spinbutton/form-spinbutton'; // export * from './components/form-textarea'\n\nexport { FormTextareaPlugin } from './components/form-textarea';\nexport { BFormTextarea } from './components/form-textarea/form-textarea'; // export * from './components/form-timepicker'\n\nexport { FormTimepickerPlugin } from './components/form-timepicker';\nexport { BFormTimepicker } from './components/form-timepicker/form-timepicker'; // export * from './components/image'\n\nexport { ImagePlugin } from './components/image';\nexport { BImg } from './components/image/img';\nexport { BImgLazy } from './components/image/img-lazy'; // export * from './components/input-group'\n\nexport { InputGroupPlugin } from './components/input-group';\nexport { BInputGroup } from './components/input-group/input-group';\nexport { BInputGroupAddon } from './components/input-group/input-group-addon';\nexport { BInputGroupAppend } from './components/input-group/input-group-append';\nexport { BInputGroupPrepend } from './components/input-group/input-group-prepend';\nexport { BInputGroupText } from './components/input-group/input-group-text'; // export * from './components/jumbotron'\n\nexport { JumbotronPlugin } from './components/jumbotron';\nexport { BJumbotron } from './components/jumbotron/jumbotron'; // export * from './components/layout'\n\nexport { LayoutPlugin } from './components/layout';\nexport { BContainer } from './components/layout/container';\nexport { BRow } from './components/layout/row';\nexport { BCol } from './components/layout/col';\nexport { BFormRow } from './components/layout/form-row'; // export * from './components/link'\n\nexport { LinkPlugin } from './components/link';\nexport { BLink } from './components/link/link'; // export * from './components/list-group'\n\nexport { ListGroupPlugin } from './components/list-group';\nexport { BListGroup } from './components/list-group/list-group';\nexport { BListGroupItem } from './components/list-group/list-group-item'; // export * from './components/media'\n\nexport { MediaPlugin } from './components/media';\nexport { BMedia } from './components/media/media';\nexport { BMediaAside } from './components/media/media-aside';\nexport { BMediaBody } from './components/media/media-body'; // export * from './components/modal'\n\nexport { ModalPlugin } from './components/modal';\nexport { BModal } from './components/modal/modal'; // export * from './components/nav'\n\nexport { NavPlugin } from './components/nav';\nexport { BNav } from './components/nav/nav';\nexport { BNavForm } from './components/nav/nav-form';\nexport { BNavItem } from './components/nav/nav-item';\nexport { BNavItemDropdown } from './components/nav/nav-item-dropdown';\nexport { BNavText } from './components/nav/nav-text'; // export * from './components/navbar'\n\nexport { NavbarPlugin } from './components/navbar';\nexport { BNavbar } from './components/navbar/navbar';\nexport { BNavbarBrand } from './components/navbar/navbar-brand';\nexport { BNavbarNav } from './components/navbar/navbar-nav';\nexport { BNavbarToggle } from './components/navbar/navbar-toggle'; // export * from './components/overlay'\n\nexport { OverlayPlugin } from './components/overlay';\nexport { BOverlay } from './components/overlay/overlay'; // export * from './components/pagination'\n\nexport { PaginationPlugin } from './components/pagination';\nexport { BPagination } from './components/pagination/pagination'; // export * from './components/pagination-nav'\n\nexport { PaginationNavPlugin } from './components/pagination-nav';\nexport { BPaginationNav } from './components/pagination-nav/pagination-nav'; // export * from './components/popover'\n\nexport { PopoverPlugin } from './components/popover';\nexport { BPopover } from './components/popover/popover'; // export * from './components/progress'\n\nexport { ProgressPlugin } from './components/progress';\nexport { BProgress } from './components/progress/progress';\nexport { BProgressBar } from './components/progress/progress-bar'; // export * from './components/spinner'\n\nexport { SpinnerPlugin } from './components/spinner';\nexport { BSpinner } from './components/spinner/spinner'; // export * from './components/table'\n\nexport { TablePlugin, TableLitePlugin, TableSimplePlugin } from './components/table';\nexport { BTable } from './components/table/table';\nexport { BTableLite } from './components/table/table-lite';\nexport { BTableSimple } from './components/table/table-simple';\nexport { BTbody } from './components/table/tbody';\nexport { BThead } from './components/table/thead';\nexport { BTfoot } from './components/table/tfoot';\nexport { BTr } from './components/table/tr';\nexport { BTh } from './components/table/th';\nexport { BTd } from './components/table/td'; // export * from './components/tabs'\n\nexport { TabsPlugin } from './components/tabs';\nexport { BTabs } from './components/tabs/tabs';\nexport { BTab } from './components/tabs/tab'; // export * from './components/time'\n\nexport { TimePlugin } from './components/time';\nexport { BTime } from './components/time/time'; // export * from './components/toast'\n\nexport { ToastPlugin } from './components/toast';\nexport { BToast } from './components/toast/toast';\nexport { BToaster } from './components/toast/toaster'; // export * from './components/tooltip'\n\nexport { TooltipPlugin } from './components/tooltip';\nexport { BTooltip } from './components/tooltip/tooltip'; // --- Named exports of all directives (VB<Name>) and plugins (VB<Name>Plugin) ---\n// Webpack 4 has optimization difficulties with re-export of re-exports,\n// so we import the directives individually here for better tree shaking\n//\n// Webpack v5 fixes the optimizations with re-export of re-exports so this\n// can be reverted back to `export * from './scrollspy'` when Webpack v5 is released\n// https://github.com/webpack/webpack/pull/9203 (available in Webpack v5.0.0-alpha.15)\n// export * from './directives/hover'\n\nexport { VBHoverPlugin } from './directives/hover';\nexport { VBHover } from './directives/hover/hover'; // export * from './directives/modal'\n\nexport { VBModalPlugin } from './directives/modal';\nexport { VBModal } from './directives/modal/modal'; // export * from './directives/popover'\n\nexport { VBPopoverPlugin } from './directives/popover';\nexport { VBPopover } from './directives/popover/popover'; // export * from './directives/scrollspy'\n\nexport { VBScrollspyPlugin } from './directives/scrollspy';\nexport { VBScrollspy } from './directives/scrollspy/scrollspy'; // export * from './directives/toggle'\n\nexport { VBTogglePlugin } from './directives/toggle';\nexport { VBToggle } from './directives/toggle/toggle'; // export * from './directives/tooltip'\n\nexport { VBTooltipPlugin } from './directives/tooltip';\nexport { VBTooltip } from './directives/tooltip/tooltip'; // export * from './directives/tooltip'\n\nexport { VBVisiblePlugin } from './directives/visible';\nexport { VBVisible } from './directives/visible/visible'; // Default export is the BootstrapVue plugin\n\nexport default BootstrapVue;"],"sourceRoot":""}