StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
StackGenVis/frontend/node_modules/bootstrap-vue/dist/bootstrap-vue.min.js.map

1 lines
1.5 MiB

{"version":3,"sources":["../src/utils/array.js","../src/utils/plugins.js","../src/utils/object.js","../src/utils/env.js","../src/utils/safe-types.js","../src/utils/inspect.js","../src/utils/clone-deep.js","../src/utils/identity.js","../src/utils/get.js","../src/utils/warn.js","../src/utils/config-defaults.js","../src/utils/config-set.js","../src/utils/memoize.js","../src/utils/config.js","../src/utils/dom.js","../src/utils/number.js","../node_modules/vue-functional-data-merge/dist/lib.esm.js","../src/utils/bv-transition.js","../src/utils/normalize-slot.js","../src/mixins/normalize-slot.js","../src/components/button/button-close.js","../src/components/alert/alert.js","../src/components/alert/index.js","../src/utils/pluck-props.js","../src/utils/string.js","../src/utils/router.js","../src/components/link/link.js","../src/components/badge/badge.js","../src/components/badge/index.js","../src/utils/html.js","../src/components/breadcrumb/breadcrumb-link.js","../src/components/breadcrumb/breadcrumb-item.js","../src/components/breadcrumb/breadcrumb.js","../src/components/breadcrumb/index.js","../src/utils/key-codes.js","../src/components/button/button.js","../src/components/button/index.js","../src/components/button-group/button-group.js","../src/components/button-group/index.js","../src/components/button-toolbar/button-toolbar.js","../src/components/button-toolbar/index.js","../src/utils/loose-equal.js","../src/utils/date.js","../src/mixins/id.js","../src/icons/helpers/icon-base.js","../src/icons/helpers/make-icon.js","../src/icons/icons.js","../src/icons/iconstack.js","../src/components/calendar/calendar.js","../src/components/calendar/index.js","../src/utils/prefix-prop-name.js","../src/utils/unprefix-prop-name.js","../src/utils/copy-props.js","../src/mixins/card.js","../src/components/card/card-title.js","../src/components/card/card-sub-title.js","../src/components/card/card-body.js","../src/components/card/card-header.js","../src/components/card/card-footer.js","../src/components/card/card-img.js","../src/components/card/card.js","../src/directives/visible/visible.js","../src/components/image/img.js","../src/components/image/img-lazy.js","../src/components/card/card-img-lazy.js","../src/components/card/card-text.js","../src/components/card/card-group.js","../src/components/card/index.js","../src/utils/noop.js","../src/utils/observe-dom.js","../src/utils/events.js","../src/components/carousel/carousel.js","../src/components/carousel/carousel-slide.js","../src/components/carousel/index.js","../src/utils/bv-collapse.js","../src/mixins/listen-on-root.js","../src/components/collapse/collapse.js","../src/utils/target.js","../src/directives/toggle/toggle.js","../src/components/collapse/index.js","../node_modules/popper.js/dist/esm/popper.js","../src/utils/bv-event.class.js","../src/mixins/click-out.js","../src/mixins/focus-in.js","../src/mixins/dropdown.js","../src/components/dropdown/dropdown.js","../src/components/dropdown/dropdown-item.js","../src/components/dropdown/dropdown-item-button.js","../src/components/dropdown/dropdown-header.js","../src/components/dropdown/dropdown-divider.js","../src/components/form/form.js","../src/components/dropdown/dropdown-form.js","../src/components/dropdown/dropdown-text.js","../src/components/dropdown/dropdown-group.js","../src/components/dropdown/index.js","../src/components/embed/embed.js","../src/components/embed/index.js","../src/mixins/form-options.js","../src/components/form/form-datalist.js","../src/components/form/form-text.js","../src/components/form/form-invalid-feedback.js","../src/components/form/form-valid-feedback.js","../src/components/layout/form-row.js","../src/components/form/index.js","../src/utils/loose-index-of.js","../src/mixins/form.js","../src/mixins/form-radio-check.js","../src/mixins/form-size.js","../src/mixins/form-state.js","../src/components/form-checkbox/form-checkbox.js","../src/components/form-radio/form-radio.js","../src/mixins/form-radio-check-group.js","../src/components/form-checkbox/form-checkbox-group.js","../src/components/form-checkbox/index.js","../src/directives/hover/hover.js","../src/components/form-datepicker/form-datepicker.js","../src/components/form-datepicker/index.js","../src/mixins/form-custom.js","../src/components/form-file/form-file.js","../src/components/form-file/index.js","../src/utils/suffix-prop-name.js","../src/components/layout/col.js","../src/components/form-group/form-group.js","../src/components/form-group/index.js","../src/mixins/form-text.js","../src/mixins/form-selection.js","../src/mixins/form-validity.js","../src/components/form-input/form-input.js","../src/components/form-input/index.js","../src/components/form-radio/form-radio-group.js","../src/components/form-radio/index.js","../src/components/form-select/helpers/mixin-options.js","../src/components/form-select/form-select-option.js","../src/components/form-select/form-select-option-group.js","../src/components/form-select/form-select.js","../src/components/form-select/index.js","../src/components/form-spinbutton/form-spinbutton.js","../src/components/form-spinbutton/index.js","../src/components/form-tags/form-tag.js","../src/components/form-tags/form-tags.js","../src/components/form-tags/index.js","../src/components/form-textarea/form-textarea.js","../src/components/form-textarea/index.js","../src/components/image/index.js","../src/components/input-group/input-group-text.js","../src/components/input-group/input-group-addon.js","../src/components/input-group/input-group-prepend.js","../src/components/input-group/input-group-append.js","../src/components/input-group/input-group.js","../src/components/input-group/index.js","../src/components/layout/container.js","../src/components/jumbotron/jumbotron.js","../src/components/jumbotron/index.js","../src/components/layout/row.js","../src/components/layout/index.js","../src/components/link/index.js","../src/components/list-group/list-group.js","../src/components/list-group/list-group-item.js","../src/components/list-group/index.js","../src/components/media/media-body.js","../src/components/media/media-aside.js","../src/components/media/media.js","../src/components/media/index.js","../src/utils/transporter.js","../src/mixins/listen-on-document.js","../src/mixins/listen-on-window.js","../src/utils/get-scope-id.js","../src/mixins/scoped-style-attrs.js","../src/components/modal/helpers/modal-manager.js","../src/components/modal/helpers/bv-modal-event.class.js","../src/components/modal/modal.js","../src/directives/modal/modal.js","../src/components/modal/helpers/bv-modal.js","../src/components/modal/index.js","../src/components/nav/nav.js","../src/components/nav/nav-item.js","../src/components/nav/nav-text.js","../src/components/nav/nav-form.js","../src/components/nav/nav-item-dropdown.js","../src/components/nav/index.js","../src/components/navbar/navbar.js","../src/components/navbar/navbar-nav.js","../src/components/navbar/navbar-brand.js","../src/components/navbar/navbar-toggle.js","../src/components/navbar/index.js","../src/utils/range.js","../src/mixins/pagination.js","../src/components/pagination/pagination.js","../src/components/pagination/index.js","../src/components/pagination-nav/pagination-nav.js","../src/components/pagination-nav/index.js","../src/components/tooltip/helpers/bv-popper.js","../src/components/tooltip/helpers/bv-tooltip-template.js","../src/components/tooltip/helpers/bv-tooltip.js","../src/components/tooltip/tooltip.js","../src/components/popover/helpers/bv-popover-template.js","../src/components/popover/helpers/bv-popover.js","../src/components/popover/popover.js","../src/directives/popover/popover.js","../src/directives/popover/index.js","../src/components/popover/index.js","../src/components/progress/progress-bar.js","../src/components/progress/index.js","../src/components/progress/progress.js","../src/components/spinner/index.js","../src/components/spinner/spinner.js","../src/mixins/has-listener.js","../src/utils/startcase.js","../src/components/table/helpers/constants.js","../src/components/table/helpers/normalize-fields.js","../src/components/table/helpers/mixin-items.js","../src/components/table/helpers/mixin-stacked.js","../src/components/table/helpers/sanitize-row.js","../src/components/table/helpers/stringify-object-values.js","../src/components/table/helpers/mixin-filtering.js","../src/components/table/helpers/stringify-record-values.js","../src/utils/stable-sort.js","../src/components/table/helpers/mixin-sorting.js","../src/components/table/helpers/default-sort-compare.js","../src/components/table/helpers/mixin-pagination.js","../src/components/table/helpers/mixin-caption.js","../src/components/table/helpers/mixin-colgroup.js","../src/components/table/helpers/filter-event.js","../src/components/table/helpers/text-selection-active.js","../src/components/table/thead.js","../src/components/table/tfoot.js","../src/components/table/tr.js","../src/components/table/td.js","../src/components/table/th.js","../src/components/table/helpers/mixin-thead.js","../src/components/table/helpers/mixin-tfoot.js","../src/components/table/tbody.js","../src/components/table/helpers/mixin-tbody.js","../src/components/table/helpers/mixin-tbody-row.js","../src/components/table/helpers/mixin-empty.js","../src/components/table/helpers/mixin-top-row.js","../src/components/table/helpers/mixin-bottom-row.js","../src/components/table/helpers/mixin-busy.js","../src/components/table/helpers/mixin-selectable.js","../src/components/table/helpers/mixin-provider.js","../src/components/table/helpers/mixin-table-renderer.js","../src/components/table/table.js","../src/components/table/table-lite.js","../src/components/table/table-simple.js","../src/components/table/index.js","../src/components/tabs/tabs.js","../src/components/tabs/index.js","../src/components/tabs/tab.js","../node_modules/portal-vue/dist/portal-vue.esm.js","../src/components/toast/toaster.js","../src/components/toast/toast.js","../src/components/toast/helpers/bv-toast.js","../src/components/toast/index.js","../src/directives/tooltip/tooltip.js","../src/directives/tooltip/index.js","../src/components/index.js","../src/components/tooltip/index.js","../src/directives/hover/index.js","../src/directives/modal/index.js","../src/directives/scrollspy/scrollspy.class.js","../src/directives/scrollspy/scrollspy.js","../src/directives/index.js","../src/directives/scrollspy/index.js","../src/directives/toggle/index.js","../src/directives/visible/index.js","../src/icons/icon.js","../src/index.js","../src/browser.js"],"names":["checkMultipleVueWarned","MULTIPLE_VUE_WARNING","from","Array","apply","arguments","isArray","val","arrayIncludes","array","value","indexOf","concat","_len","length","args","_key","prototype","assign","Object","create","proto","optionalProps","defineProperties","obj","props","defineProperty","prop","descr","freeze","getOwnPropertyNames","keys","hasOwnProperty","call","isObject","_typeof","isPlainObject","toString","clone","_objectSpread2","omit","filter","key","reduce","result","_defineProperty","hasWindowSupport","window","hasDocumentSupport","document","hasNavigatorSupport","navigator","hasPromiseSupport","Promise","hasMutationObserverSupport","MutationObserver","WebKitMutationObserver","MozMutationObserver","isBrowser","userAgent","toLowerCase","isJSDOM","hasPassiveEventSupport","test","passiveEventSupported","options","passive","addEventListener","removeEventListener","err","hasTouchSupport","documentElement","maxTouchPoints","hasPointerEventSupport","Boolean","PointerEvent","MSPointerEvent","hasIntersectionObserverSupport","IntersectionObserverEntry","getNoWarn","fallback","undefined","env","process","getEnv","w","Element","_Object","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","_inherits","_wrapNativeSuper","HTMLElement","_Element","SVGElement","_Element2","File","_Object2","toType","isUndefined","isNull","isUndefinedOrNull","isFunction","isBoolean","isString","isNumber","isDate","Date","isEvent","Event","isFile","isRegExp","slice","toRawType","cloneDeep","defaultValue","_toConsumableArray","identity","x","RX_ARRAY_NOTATION","get","path","join","steps","String","replace","split","every","step","warn","message","source","console","warnNotClient","warnNoPromiseSupport","DEFAULTS","deepFreeze","forEach","breakpoints","formControls","size","BAlert","dismissLabel","variant","BBadge","BButton","BButtonClose","content","textVariant","ariaLabel","BCalendar","labelPrevYear","labelPrevMonth","labelCurrentMonth","labelNextMonth","labelNextYear","labelToday","labelSelected","labelNoDateSelected","labelCalendar","labelNav","labelHelp","BCardSubTitle","subTitleTextVariant","BCarousel","labelPrev","labelNext","labelGotoSlide","labelIndicators","BDropdown","toggleText","splitVariant","BFormDatepicker","labelTodayButton","labelResetButton","labelCloseButton","BFormFile","browseText","placeholder","dropPlaceholder","BFormSpinbutton","labelDecrement","labelIncrement","BFormTag","removeLabel","BFormTags","addButtonText","addButtonVariant","duplicateTagText","invalidTagText","tagRemoveLabel","tagRemovedLabel","tagVariant","BFormText","BImg","blankColor","BImgLazy","BInputGroup","BJumbotron","bgVariant","borderVariant","BListGroupItem","BModal","titleTag","headerBgVariant","headerBorderVariant","headerTextVariant","headerCloseVariant","bodyBgVariant","bodyTextVariant","footerBgVariant","footerBorderVariant","footerTextVariant","cancelTitle","cancelVariant","okTitle","okVariant","headerCloseContent","headerCloseLabel","BNavbar","BNavbarToggle","label","BPagination","BPaginationNav","BPopover","boundary","boundaryPadding","customClass","delay","BProgress","BProgressBar","BSpinner","BTable","selectedVariant","headVariant","footVariant","BToast","toaster","autoHideDelay","toastClass","headerClass","bodyClass","BToaster","ariaLive","ariaAtomic","role","BTooltip","NAME","BvConfig","$_config","$_cachedBreakpoints","defaults","_this","config","configKeys","cmpName","cmpConfig","some","b","setConfig","Vue","OurVue","checkMultipleVue","installFactory","_ref","components","directives","plugins","install","installed","registerComponents","registerDirectives","registerPlugins","pluginFactory","extend","plugin","use","registerComponent","name","def","component","registerDirective","directive","memoize","fn","cache","argsKey","JSON","stringify","VueProto","getConfigValue","getComponentConfig","getBreakpoints","_getBreakpointsCached","getBreakpointsUpCached","d","elProto","matchesEl","matches","msMatchesSelector","webkitMatchesSelector","closestEl","closest","sel","el","parentElement","parentNode","nodeType","Node","ELEMENT_NODE","requestAF","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","cb","setTimeout","MutationObs","isElement","isVisible","contains","body","style","display","bcr","getBCR","height","width","isDisabled","disabled","hasAttr","hasClass","reflow","offsetHeight","selectAll","selector","root","arrayFrom","querySelectorAll","select","querySelector","includeRoot","parent","child","getById","id","getElementById","addClass","className","classList","add","removeClass","remove","setAttr","attr","setAttribute","removeAttr","removeAttribute","getAttr","getAttribute","hasAttribute","getBoundingClientRect","getCS","getComputedStyle","getSel","getSelection","offset","_offset","top","left","getClientRects","win","ownerDocument","defaultView","pageYOffset","pageXOffset","position","parentOffset","elStyles","doc","offsetParent","offsetParentStyles","parseFloat","borderTopWidth","borderLeftWidth","marginTop","marginLeft","toInteger","parseInt","toFloat","toFixed","precision","e","t","r","s","a","toUpperCase","c","o","n","i","l","trim","y","p","f","NO_FADE_PROPS","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","FADE_PROPS","BVTransition","functional","noFade","type","default","appear","mode","transProps","render","h","children","data","appearClass","appearActiveClass","appearToClass","mergeData","css","hasNormalizedSlot","names","$scopedSlots","$slots","normalizeSlot","slot","scope","normalizeSlotMixin","methods","vNodes","slots","scopedSlots","componentData","staticClass","class","attrs","aria-label","on","click","evt","stopPropagation","preventDefault","domProps","innerHTML","parseCountDown","show","parseShow","isNumericLike","isNaN","AlertPlugin","mixins","model","event","dismissible","Number","fade","countDownTimerId","countDown","localShow","watch","newVal","clearTimer","$emit","$nextTick","created","mounted","beforeDestroy","dismiss","clearInterval","$alert","$dismissBtn","_uid","alert-dismissible","aria-live","aria-atomic","pluckProps","keysToPluck","objToPluck","transformFn","memo","RX_TRIM_LEFT","RX_REGEXP_REPLACE","RX_UN_KEBAB","RX_HYPHENATE","kebabCase","str","pascalCase","_","charAt","upperFirst","escapeRegExp","spaces","lowerCase","commaRE","encodeReserveRE","plusRE","queryStartRE","encodeReserveReplacer","charCodeAt","encode","encodeURIComponent","decode","decodeURIComponent","stringifyQueryObj","query","map","results","val2","push","parseQuery","parsed","param","parts","shift","isRouterLink","tag","computeHref","_ref3","href","to","toFallback","hash","propsFactory","rel","target","active","append","activeClass","exact","exactActiveClass","routerTag","noPrefetch","BLink","inheritAttrs","computed","computedTag","thisOrParent","$router","$nuxt","computeTag","computedRel","_ref2","computeRel","computedHref","computedProps","$props","onClick","_arguments","evtIsEvent","suppliedHandler","$listeners","stopImmediatePropagation","currentTarget","__vue__","handler","$root","focus","$el","blur","$attrs","tabindex","aria-disabled","linkProps","linkPropsFactory","pill","isBLink","badge-pill","BadgePlugin","stripTagsRegex","stripTags","text","htmlOrText","textContent","html","ariaCurrent","BBreadcrumbLink","suppliedProps","aria-current","BBreadcrumbItem","items","BreadcrumbPlugin","BBreadcrumb","childNodes","activeDefined","item","idx","KEY_CODES","SPACE","ENTER","ESC","LEFT","UP","RIGHT","DOWN","PAGEUP","PAGEDOWN","HOME","END","TAB","SHIFT","CTRL","BACKSPACE","ALT","PAUSE","BREAK","INSERT","INS","DELETE","btnProps","block","squared","pressed","linkPropKeys","tagIs","handleFocus","isLink","isToggle","isButton","isNonStandardTag","computeClass","computeLinkProps","computeAttrs","button","link","toggle","nonStandardTag","hashLink","aria-pressed","autocomplete","listeners","keydown","keyCode","KeyCodes","focusin","focusout","ButtonPlugin","BBtn","BBtnClose","vertical","ariaRole","BButtonGroup","btn-group","btn-group-vertical","ButtonGroupPlugin","BBtnGroup","ITEM_SELECTOR","BButtonToolbar","justify","keyNav","getItems","onFocusin","focusFirst","stop","onKeydown","shiftKey","focusPrev","focusLast","focusNext","setItemFocus","index","reverse","tabIndex","justify-content-between","ButtonToolbarPlugin","BBtnToolbar","compareArrays","equal","looseEqual","aValidType","bValidType","getTime","aHasKey","bHasKey","RX_DATE","createDate","_construct","parseYMD","date","_date$split$map2","_slicedToArray","year","month","day","getFullYear","getMonth","getDate","formatYMD","createDateFormatter","locale","Intl","DateTimeFormat","format","datesEqual","date1","date2","firstDateOfMonth","setDate","lastDateOfMonth","setMonth","oneMonthAgo","oneMonthAhead","oneYearAgo","oneYearAhead","idMixin","localId_","safeId","suffix","commonIconProps","fontScale","scale","rotate","flipH","flipV","shiftH","shiftV","baseAttrs","viewBox","focusable","alt","BVIconBase","stacked","Math","max","hasScale","hasTransforms","hasShift","transforms","isStacked","hasContent","$inner","transform","fontSize","xmlns","fill","makeIcon","iconName","iconNameClass","svgContent","BIconBlank","BIconCalendar","BIconCalendarFill","BIconChevronLeft","BIconCircleFill","BIconDash","BIconPlus","BIconstack","RTL_LANGS","valueAsDate","readonly","min","dateDisabledFn","Function","startWeekday","direction","todayVariant","noHighlightToday","dateInfoFn","hideHeader","hidden","ariaControls","roleDescription","selected","selectedYMD","activeYMD","getToday","gridHasFocus","isLive","selectedDate","activeDate","computedMin","computedMax","computedWeekStarts","computedLocale","locales","calendar","fmt","resolvedOptions","resolveLocale","calendarLocale","calendarYear","calendarMonth","calendarFirstDay","calendarDaysInMonth","computedVariant","computedTodayVariant","isRTL","locale1","locale2","dir","context","selectedFormatted","formatDateString","activeFormatted","dateDisabled","rtl","dateOutOfRange","rangeFn","disabledFn","ymd","weekday","formatYearMonth","formatWeekdayName","formatWeekdayNameShort","formatDay","prevYearDisabled","prevMonthDisabled","thisMonthDisabled","nextMonthDisabled","nextYearDisabled","matrix","firstDay","daysInMonth","startIndex","getDay","weekOffset","currentDay","week","j","dayYMD","dayDisabled","dateInfo","isThisMonth","info","calendarHeadings","oldVal","old","newYMD","oldYMD","setLive","_this2","activated","deactivated","$refs","grid","_unused","_unused2","_this3","constrainDate","emitSelected","_this4","setGridFocusFlag","onKeydownWrapper","altKey","checkDate","onKeydownGrid","onClickDay","clickedDate","gotoPrevYear","gotoPrevMonth","gotoCurrentMonth","gotoNextMonth","gotoNextYear","_this5","todayYMD","highlightToday","idWidget","idValue","idNav","idGrid","idGridCaption","idGridHelp","idActive","$header","text-muted","for","data-selected","title","labelSelectedDate","$prevYearIcon","$prevMonthIcon","$thisMonthIcon","$nextMonthIcon","$nextYearIcon","makeNavBtn","btnDisabled","shortcut","aria-keyshortcuts","aria-hidden","$nav","aria-controls","$gridCaption","$gridWeekDays","$gridBody","$cells","dIndex","_class","isSelected","isActive","isToday","idCell","$btn","data-date","aria-selected","pointerEvents","$gridHelp","$grid","ref","data-month","aria-roledescription","aria-labelledby","aria-describedby","aria-activedescendant","$slot","$widget","lang","CalendarPlugin","prefixPropName","prefix","unprefixPropName","copyProps","copied","cardMixin","BCardTitle","subTitle","subTitleTag","bind","titleProps","subTitleProps","overlay","BCardBody","cardTitle","cardSubTitle","cardContent","bodyTag","card-img-overlay","bodyBorderVariant","header","headerHtml","BCardHeader","headerTag","footer","footerHtml","footerClass","BCardFooter","footerTag","src","required","bottom","start","end","right","BCardImg","baseClass","cardImgProps","imgProps","imgSrc","bodyProps","headerProps","footerProps","align","noBody","BCard","imgFirst","imgLast","img","unPrefixPropName","imgBottom","flex-row","imgLeft","imgStart","flex-row-reverse","imgRight","imgEnd","OBSERVER_PROP_NAME","onlyDgitsRE","VisibilityObserver","vnode","callback","margin","once","observer","visible","doneOnce","createObserver","IntersectionObserver","rootMargin","threshold","observe","entries","entry","isIntersecting","intersectionRatio","disconnect","destroy","modifiers","mod","_prevModifiers","VBVisible","componentUpdated","oldValue","unbind","BLANK_TEMPLATE","srcset","sizes","fluid","fluidGrow","rounded","thumbnail","center","blank","color","makeBlankImgSrc","img-thumbnail","img-fluid","w-100","blankSrc","blankWidth","blankHeight","bVisible","isShown","computedSrc","computedBlank","computedWidth","computedHeight","computedSrcset","computedSizes","updateShowProp","doShow","_modifiers","imgLazyProps","textTag","deck","columns","CardPlugin","BCardImgLazy","lazyProps","BCardText","BCardGroup","noop","observeDom","obs","mutations","changed","mutation","TEXT_NODE","addedNodes","removedNodes","childList","subtree","EVENT_OPTIONS_PASSIVE","EVENT_OPTIONS_NO_CAPTURE","capture","parseEventOptions","eventOn","evtName","eventOff","eventOnOff","method","DIRECTION","next","dirClass","overlayClass","prev","PointerType","TOUCH","PEN","TransitionEndEvents","WebkitTransition","MozTransition","OTransition","transition","provide","bvCarousel","interval","indicators","controls","noAnimation","noWrap","noTouch","noHoverPause","imgWidth","imgHeight","background","isSliding","transitionEndEvent","slides","isPaused","touchStartX","touchDeltaX","numSlides","setSlide","pause","doSlide","_intervalId","_animationTimeout","_touchTimeout","getTransitionEndEvent","updateSlides","inner","attributes","attributeFilter","clearTimeout","slide","visibilityState","floor","$once","setInterval","restart","activeElement","isCycling","calcDirection","currentSlide","nextSlide","called","onceTransEnd","curIndex","nextIndex","handleClick","handleSwipe","absDeltaX","abs","touchStart","pointerType","clientX","touches","touchMove","touchEnd","prevHandler","nextHandler","rawName","expression","aria-owns","mouseenter","mouseleave","tagName","carousel-fade","pointer-event","aria-busy","imgAlt","imgBlank","imgBlankColor","contentVisibleUp","contentTag","caption","captionHtml","captionTag","textHtml","CarouselPlugin","BCarouselSlide","inject","contentClasses","noDrag","dragstart","contentChildren","TRANSITION_PROPS","TRANSITION_HANDLERS","enter","scrollHeight","afterEnter","leave","afterLeave","BVCollapse","listenOnRootMixin","listenOnRoot","$on","$off","listenOnRootOnce","emitOnRoot","_this$$root","BCollapse","isNav","accordion","transitioning","classObject","navbar-collapse","collapse","emitState","handleToggleEvt","handleAccordionEvt","setWindowEvents","handleResize","emitSync","updated","onEnter","onAfterEnter","onLeave","onAfterLeave","checkDisplayBlock","restore","isBlock","clickHandler","openedId","close","allListenTypes","hover","BVBoundListeners","getTargets","binding","targets","bindTargets","listenTypes","listener","elm","boundListeners","unbindTargets","BV_TOGGLE","resetProp","handleTargets","handleUpdate","VBToggle","state","CollapsePlugin","timeoutDuration","longerTimeoutBrowsers","debounce","resolve","then","scheduled","functionToCheck","getStyleComputedProperty","element","property","getParentNode","nodeName","host","getScrollParent","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","instance","Constructor","TypeError","createClass","descriptor","enumerable","configurable","writable","protoProps","staticProps","_extends","getClientRect","offsets","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","sort","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","marginRight","getOppositePlacement","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","runModifiers","ends","findIndex","cur","match","enabled","update","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","setupEventListeners","updateBound","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","isNumeric","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","toValue","index2","Defaults","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","len","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","x-placement","applyStyle","onLoad","modifierOptions","Popper","jquery","Utils","global","PopperUtils","BvEvent","eventInit","constructor","cancelable","nativeEvent","relatedTarget","vueTarget","componentId","defaultPrevented","clickOutMixin","listenForClickOut","newValue","clickOutElement","clickOutEventName","_clickOutHandler","beforeCreate","isClickOut","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","ROOT_DROPDOWN_SHOWN","ROOT_DROPDOWN_HIDDEN","Selector","FORM_CHILD","AttachmentMap","dropdownMixin","bvDropdown","bvNavbar","dropup","dropright","dropleft","noFlip","popperOpts","visibleChangePrevented","inNavbar","toggler","directionClass","bvEvt","menu","emitEvent","focusToggler","showMenu","hideMenu","$_popper","whileOpenListen","destroyPopper","createPopper","focusMenu","getPopperConfig","updatePopper","popperConfig","isOpen","rootCloseListener","vm","refocus","_evt","onMousedown","onEsc","onSplitClick","hideHandler","up","focusItem","menuClass","toggleTag","toggleClass","noCaret","splitHref","splitTo","splitClass","splitButtonType","validator","lazy","dropdownClasses","d-flex","position-static","menuClasses","dropdown-menu-right","toggleClasses","dropdown-toggle-split","dropdown-toggle-no-caret","buttonContent","aria-haspopup","aria-expanded","mousedown","BDropdownItem","closeDropdown","BDropdownItemButton","BDropdownHeader","BDropdownDivider","aria-orientation","inline","novalidate","validated","BForm","form-inline","was-validated","BDropdownForm","formProps","formClass","BDropdownText","headerVariant","headerClasses","ariaDescribedby","BDropdownGroup","headerId","adb","ariaDescribedBy","DropdownPlugin","BDd","BDdItem","BDropdownItemBtn","BDdItemButton","BDdItemBtn","BDdHeader","BDdDivider","BDdForm","BDdText","BDdGroup","aspect","EmbedPlugin","BEmbed","formOptionsMixin","valueField","textField","htmlField","disabledField","formOptions","option","normalizeOption","$options","BFormDatalist","form-text","tooltip","forceShow","BFormInvalidFeedback","invalid-feedback","invalid-tooltip","d-block","BFormValidFeedback","valid-feedback","valid-tooltip","BFormRow","FormPlugin","BDatalist","BFormFeedback","looseIndexOf","formMixin","form","autofocus","handleAutofocus","formRadioCheckMixin","checked","plain","buttonVariant","ariaLabelledby","localChecked","isGroup","bvGroup","hasFocus","computedLocalChecked","set","isBtnMode","buttons","isPlain","isCustom","isSwitch","isRadio","switches","switch","isInline","getName","groupName","getForm","getState","computedState","getButtonVariant","buttonClasses","isChecked","input","defaultSlot","change","handleChange","form-check-input","custom-control-input","is-valid","is-invalid","aria-required","form-check-label","custom-control-label","form-check","form-check-inline","custom-control","custom-control-inline","custom-checkbox","isCheck","custom-switch","custom-radio","formSizeMixin","sizeFormClass","sizeBtnClass","formStateMixin","stateClass","BFormCheckbox","uncheckedValue","indeterminate","setIndeterminate","_ref$target","isArr","BFormRadio","formRadioCheckGroupMixin","ariaInvalid","groupClasses","computedAriaInvalid","inputs","uid","isRadioGroup","aria-invalid","BFormCheckboxGroup","bvCheckGroup","FormCheckboxPlugin","BCheckbox","BCheck","BCheckboxGroup","BCheckGroup","PROP","updateListeners","_ref$value","hasListener","handlerChanged","createListener","VBHover","getConfigFallback","propsMixin","resetValue","noCloseOnSelect","todayButton","todayButtonVariant","resetButton","resetButtonVariant","closeButton","closeButtonVariant","dark","BHover","localYMD","localLocale","formatedValue","isHovered","calendarYM","calendarProps","computedResetValue","_unused3","setAndClose","onSelected","onInput","onContext","ctx","formattedValue","onTodayButton","onResetButton","onCloseButton","setFocus","handleHover","hovered","_class2","idButton","idLabel","idMenu","idWrapper","$button","!focus","!blur","$input","$controls","justify-content-end","$calendar","$menu","bg-dark","text-light","aria-modal","$hidden","aria-readonly","FormDatepickerPlugin","BDatepicker","formCustomMixin","custom","accept","multiple","directory","noTraverse","noDrop","fileNameFormatter","selectedFile","dragging","selectLabel","files","file","reset","focusHandler","onFileChange","dataTransfer","setFiles","queue","webkitGetAsEntry","traverseFileTree","all","filesArr","filesArray","onReset","onDragover","dropEffect","onDragleave","onDrop","$path","isDirectory","createReader","readEntries","form-control-file","custom-file-input","webkitdirectory","data-browse","dragover","dragleave","drop","FormFilePlugin","BFile","suffixPropName","RX_COL_CLASS","strNum","computeBreakpointClass","breakpoint","breakpointPropMap","generateProps","breakpointCol","propMap","breakpointOffset","breakpointOrder","col","cols","alignSelf","BCol","_classList$push","hasColClasses","renderInvalidFeedback","invalidFeedback","invalidFeedbackId","feedbackAriaLive","renderValidFeedback","validFeedback","validFeedbackId","renderHelpText","description","descriptionId","makePropName","BFormGroup","BREAKPOINTS","bpLabelColProps","bpLabelAlignProps","labelFor","labelSize","labelSrOnly","labelClass","labelColProps","propVal","bColPropName","labelAlignClasses","classes","isHorizontal","labelId","hasInvalidFeedback","hasValidFeedback","describedByIds","setInputDescribedBy","legendClick","ids","isFieldset","isLegend","labelTag","renderLabel","FormGroupPlugin","BFormFieldset","formTextMixin","plaintext","formatter","lazyFormatter","number","localValue","vModelValue","computedClass","custom-range","form-control-plaintext","form-control","computedDebounce","hasFormatter","stringifyValue","clearDebounce","$_inputDebounceTimer","formatValue","force","modifyValue","updateValue","doUpdate","composing","onChange","onBlur","formSelectionMixin","selectionStart","selectionEnd","selectionDirection","_this$$refs$input","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","formValidityMixin","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","TYPES","BFormInput","noWheel","list","localType","setWheelStopper","onWheelFocus","onWheelBlur","stopWheel","FormInputPlugin","BInput","BFormRadioGroup","bvRadioGroup","FormRadioPlugin","BRadio","BRadioGroup","optionsMixin","labelField","optionsField","BFormSelectOption","BFormSelectOptionGroup","BFormSelect","selectSize","computedSelectSize","inputClass","selectedVal","_value","FormSelectPlugin","BSelect","BSelectOption","BSelectOptionGroup","defaultNumber","defaultInteger","wrap","formatterFn","repeatDelay","repeatInterval","repeatThreshold","repeatStepMultiplier","computedStep","computedDelay","computedInterval","computedThreshold","computedStepMultiplier","computedPrecision","computedMultiplier","pow","valueAsFixed","NumberFormat","defaultFormatter","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","clearRepeat","$_autoDelayTimer","$_autoRepeatTimer","$_keyIsDown","spinner","emitChange","stepValue","multiplier","onFocusBlur","stepUp","stepDown","ctrlKey","metaKey","resetTimers","handleStepRepeat","onKeyup","stepper","setMouseup","count","onMouseup","spinId","isReadonly","hasValue","makeButton","IconCmp","keyRef","$icon","py-0","touchstart","$increment","$decrement","$spin","align-self-center","align-items-center","py-1","px-1","mx-1","border-top","border-bottom","border-left","border-right","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","keyup","FormSpinbuttonPlugin","BSpinbutton","onDelete","tagId","tagLabelId","$remove","$tag","RX_SPACES","cleanTags","tags","processEventValue","inputId","inputType","inputAttrs","tagClass","tagPills","tagValidator","separator","removeOnDelete","addOnChange","noAddOnEnter","noOuterFocus","newTag","removedTags","tagsState","valid","invalid","duplicate","computedInputId","computedInputType","computedInputAttrs","computedInputHandlers","onInputInput","onInputChange","onInputKeydown","computedSeparator","computedSeparatorRegExp","RegExp","computedJoiner","joiner","disableAddButton","splitTags","validateTag","duplicateTags","hasDuplicateTags","invalidTags","hasInvalidTags","addTag","parseTags","getInput","invalidAndDuplicates","removeTag","separatorRe","onFocusout","defaultRender","inputHandlers","isInvalid","isDuplicate","$createElement","$tags","duplicateFeedbackId","outline","minWidth","invisible","tagListId","$field","$ul","$feedback","$invalid","$duplicate","_this6","$content","$output","aria-relevant","$removed","FormTagsPlugin","BTags","BTag","BFormTextarea","b-visible","rows","maxRows","noResize","noAutoShrink","heightInPx","resize","computedRows","computedMinRows","computedMaxRows","setHeight","visibleCallback","computeHeight","$isServer","lineHeight","border","borderBottomWidth","paddingTop","paddingBottom","minHeight","oldHeight","contentRows","ceil","640","FormTextareaPlugin","BTextarea","ImagePlugin","BInputGroupText","commonProps","isText","BInputGroupAddon","input-group-append","input-group-prepend","BInputGroupPrepend","BInputGroupAppend","prepend","prependHtml","appendHtml","InputGroupPlugin","BContainer","container","container-fluid","containerFluid","headerLevel","lead","leadHtml","leadTag","JumbotronPlugin","jumbotron-fluid","COMMON_ALIGNMENT","computeRowColsClass","computeRowColsBreakpoint","rowColsPropList","rowColsProps","noGutters","alignV","alignH","alignContent","LayoutPlugin","BRow","no-gutters","LinkPlugin","flush","horizontal","BListGroup","list-group-flush","list-group-horizontal","actionTags","action","ListGroupPlugin","isAction","itemProps","BMediaBody","verticalAlign","BMediaAside","rightAlign","MediaPlugin","BMedia","$aside","$default","BTransporterTargetSingle","abstract","nodes","updatedNodes","destroyed","BTransporterSingle","immediate","unmountTarget","mountTarget","_bv_defaultFn","_bv_target","beforeMount","updateTarget","getContainer","createElement","appendChild","propsData","defaultFn","$destroy","listenOnDocumentMixin","listenDocument","listenOnDocument","listenOffDocument","listenOnWindowMixin","listenWindow","listenOnWindow","listenOffWindow","getScopeId","_scopeId","scopedStyleAttrsMixin","scopedStyleAttrs","scopeId","$parent","modalManager","modals","baseZIndex","scrollbarWidth","isBodyOverflowing","modalCount","modalsAreOpen","newCount","oldCount","getScrollbarWidth","checkScrollbar","setScrollbar","resetScrollbar","updateModals","registerModal","modal","unregisterModal","splice","_isBeingDestroyed","_isDestroyed","resetModal","getBaseZIndex","div","zIndex","isTop","_getBCR","_paddingChangedForModal","_marginChangedForModal","actualPadding","paddingRight","calculatedPadding","actualMargin","calculatedMargin","BvModalEvent","_assertThisInitialized","trigger","_get","OBSERVER_CONFIG","characterData","TABABLE_SELECTOR","attemptFocus","centered","scrollable","buttonSize","noStacking","noCloseOnBackdrop","noCloseOnEsc","noEnforceFocus","ignoreEnforceFocusSelector","titleHtml","titleClass","titleSrOnly","modalClass","dialogClass","contentClass","hideFooter","hideHeaderClose","hideBackdrop","okOnly","okDisabled","cancelDisabled","returnFocus","cancelTitleHtml","okTitleHtml","busy","static","autoFocusButton","isHidden","isTransitioning","isShow","isOpening","isClosing","ignoreBackdropClick","isModalOverflowing","return_focus","modalClasses","modalStyles","sbWidth","paddingLeft","dialogClasses","titleClasses","sr-only","bodyClasses","footerClasses","_ref4","modalOuterStyle","slotScope","ok","onOk","cancel","onCancel","onClose","computeIgnoreEnforceFocusSelector","_observer","showHandler","toggleHandler","modalListener","updateModel","buildEvent","getActiveElement","showEvt","hideEvt","triggerEl","getTabables","checkModalOverflow","onBeforeEnter","setResizeEvent","setEnforceFocus","onBeforeLeave","returnFocusTo","bvModalEvt","onDialogMousedown","onceModalMouseup","onClickOut","tabables","_this$$refs","bottomTrap","topTrap","preventScroll","autoFocus","makeModal","modalHeader","modalFooter","cancelButton","cancelHtml","okHtml","modalContent","tabTrapTop","tabTrapBottom","modalDialog","beforeEnter","beforeLeave","backdrop","PROPERTY","getTarget","_ref$modifiers","arg","getTriggerElement","setRole","oldProp","VBModal","inserted","BASE_PROPS","modalProps","defaultResolver","propsToSlots","msgBoxContent","filterOptions","ModalPlugin","BVModalPlugin","BMsgBox","extends","handleDestroy","self","$route","$watch","asyncMsgBox","resolver","msgBox","reject","resolved","Error","$mount","makeMsgBox","BvModal","_vm","_root","_createClass","_this$_root","_this$_root2","_len2","_key2","mixin","justified","tabs","pills","small","cardHeader","BNav","nav-tabs","nav-pills","card-header-tabs","card-header-pills","flex-column","nav-fill","nav-justified","BNavItem","linkAttrs","linkClasses","BNavText","BFormProps","BNavForm","_ref$listeners","$form","BDropdownProps","BNavItemDropdown","NavPlugin","BNavItemDd","BNavDropdown","BNavDd","toggleable","fixed","sticky","print","breakpointClass","xs","d-print","sticky-top","BNavProps","BNavbarNav","BNavbarBrand","toggleState","handleStateEvt","NavbarPlugin","BNavToggle","sanitizeLimit","limit","sanitizeCurrentPage","numberOfPages","page","onSpaceKey","paginationMixin","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","startNumber","lastPageNumber","pageList","_this$paginationParam","pages","makePageArray","handleKeyNav","getButtons","btn","setBtnFocus","focusCurrent","_this7","pageNumbers","_this$paginationParam2","isActivePage","pageNum","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","btnContent","flex-fill","makeEllipsis","isLast","makePageButton","aria-checked","aria-posinset","aria-setsize","makePage","$firstPageBtn","$lastPageBtn","$pagination","perPage","totalRows","sanitizePerPage","sanitizeTotalRows","PaginationPlugin","pageSizeNumberOfPages","num","baseUrl","useRouter","linkGen","pageGen","noPageDetect","PaginationNavPlugin","computedValue","setNumberOfPages","guessCurrentPage","getPageInfo","makeLink","resolveLink","_link2","pathname","resolveRoute","route","guess","currRoute","loc","location","currLink","AUTO","TOP","BOTTOM","TOPLEFT","TOPRIGHT","RIGHTTOP","RIGHTBOTTOM","BOTTOMLEFT","BOTTOMRIGHT","LEFTTOP","LEFTBOTTOM","OffsetMap","BVPopper","fallbackPlacement","arrowPadding","attachment","getAttachment","templateType","getOffset","popperPlacementChange","popperCreate","popperUpdate","popperDestroy","arrowOffset","renderTemplate","BVTooltipTemplate","interactive","templateClasses","noninteractive","templateAttributes","templateListeners","$title","templateData","triggers","BVTooltip","activeTrigger","computedId","computedTriggers","isWithActiveTrigger","computedTemplateData","newTriggers","oldTriggers","unListen","listen","handleTemplateUpdate","disable","enable","$_tip","$_hoverTimeout","$_hoverState","$_visibleInterval","$_enabled","$_noop","getScopId","forceHide","setWhileOpenListeners","clearHoverTimeout","clearVisibilityInterval","destroyTemplate","getTemplate","updateData","titleUpdated","fixTitle","createTemplateAndShow","Template","$tip","getPlacementTarget","getBoundary","onTemplateShow","onTemplateShown","onTemplateHide","onTemplateHidden","handleEvent","hideTemplate","clearActiveTriggers","localPlacementTarget","removeAriaDescribedby","restoreTitle","getTemplateElement","dropdownOpen","addAriaDescribedby","tip","prevHoverState","getTargetId","isInModal","isDropdown","desc","setRootListener","doHide","doDisable","doEnable","setModalListener","setDropdownListener","visibleCheck","setOnTouchStartListener","_this8","_this9","evtTarget","_this10","_this11","localTitle","localContent","templateTitleContent","$_bv_toolpop","updateContent","doOpen","doClose","Component","getComponent","$toolpop","onShow","onShown","onHide","onHidden","onDisabled","onEnabled","setTitle","setContent","BVPopoverTemplate","titleDomProps","contentDomProps","BVPopover","BV_POPOVER","validTriggers","manual","htmlRE","noFadeRE","placementRE","boundaryRE","delayRE","delayShowRE","delayHideRE","offsetRE","variantRE","spacesRE","applyPopover","bindings","animation","selectedTriggers","parseBindings","__bv_prev_data__","oldData","newData","VBPopoverPlugin","VBPopover","removePopover","PopoverPlugin","bvProgress","labelHtml","striped","animated","showProgress","showValue","progressBarClasses","computedStriped","computedAnimated","progressBarStyles","computedProgress","computedShowProgress","computedShowValue","ProgressPlugin","progressHeight","SpinnerPlugin","hasListenerMixin","$events","_events","RX_UNDERSCORE","RX_LOWER_UPPER","RX_START_SPACE_WORD","startCase","$1","$2","IGNORED_FIELD_KEYS","_rowVariant","_cellVariants","_showDetails","EVENT_FILTER","normalizeFields","origFields","fields","field","processField","sample","k","itemsMixin","primaryKey","localItems","computedFields","computedFieldsObj","computedItems","paginatedItems","sortedItems","filteredItems","localFilter","sortBy","localSortBy","sortDesc","localSortDesc","apiUrl","newItems","getFieldFormatter","stackedMixin","isStackedAlways","stackedTableClasses","b-table-stacked","sanitizeRow","row","ignoreFields","includeFields","fieldsObj","filterByFormatted","stringifyObjectValues","DEBOUNCE_DEPRECATED_MSG","filteringMixin","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","stableSort","compareFn","sortingMixin","sortDirection","sortCompare","sortCompareOptions","numeric","sortCompareLocale","sortNullLast","noSortReset","labelSortAsc","labelSortDesc","labelSortClear","noLocalSorting","noFooterSorting","sortIconLeft","localSorting","noProviderSorting","isSortable","sortable","sortOptions","usage","sortLocale","nullLast","sortByFormatted","localeOpts","aa","bb","localeCompare","defaultSortCompare","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortTheadThClasses","b-table-sort-icon-left","sortTheadThAttrs","aria-sort","sortTheadThLabel","labelSorting","paginationMixin$1","localPaging","noProviderPaging","captionMixin","captionId","renderCaption","$captionSlot","$caption","colgroupMixin","renderColgroup","$colgroup","TABLE_TAG_NAMES","filterEvent","textSelectionActive","containsNode","BThead","bvTableRowGroup","bvTable","isThead","isDark","isResponsive","isStickyHeader","stickyHeader","hasStickyHeader","tableVariant","theadClasses","theadAttrs","BTfoot","isTfoot","tfootClasses","tfootAttrs","BTr","bvTableTr","inTbody","isTbody","inThead","inTfoot","isRowDark","trClasses","trAttrs","digitsRx","parseSpan","spanValidator","colspan","rowspan","stackedHeading","stickyColumn","BTd","isStackedCell","isStickyColumn","rowVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","data-label","BTh","theadMixin","headRowVariant","theadClass","theadTrClass","fieldClasses","thClass","headClicked","stopIfBusy","renderThead","selectAllRows","isSelectable","clearSelected","makeCell","colIndex","headerTitle","hasHeadClickListener","handlers","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","aria-colindex","getThValues","thAttr","slotNames","column","srLabel","$trs","trProps","footRowVariant","tfootTrClass","tfootClass","tfootMixin","footClone","renderTFootCustom","renderTfoot","tbodyTransitionProps","tbodyTransitionHandlers","BTbody","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","tbodyMixin","tbodyTrClass","tbodyTrAttr","detailsTdClass","getTdValues","tdValue","defValue","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","$set","rowHovered","tbodyRowEvtStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","rowIndex","formatted","cellTag","isRowHeader","cellVariant","tdClass","tdAttr","unformatted","toggleDetails","detailsShowing","supportsSelectableRows","rowSelected","isRowSelected","selectRow","unselectRow","slotName","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","tableStriped","rowShowDetails","hasRowClickHandler","hasSelectableRowClick","$rows","detailsId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableRowClasses","selectableAttrs","selectableRowAttrs","userTrClasses","userTrAttrs","refInFor","data-pk","aria-details","aria-rowindex","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","tbodyClass","getTbodyTrs","refs","tbody","trs","itemRows","tr","getTbodyTrIndex","onTbodyRowKeydown","onTBodyRowClicked","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTbody","$busy","renderBusy","defaultSlotName","fullName","lowerName","renderTopRow","renderEmpty","renderBottomRow","auxclick","contextmenu","dblclick","emptyMixin","showEmpty","emptyText","emptyHtml","emptyFilteredText","emptyFilteredHtml","$empty","computedBusy","topRowMixin","bottomRowMixin","busyMixin","localBusy","selectableMixin","selectable","selectMode","noSelectOnClick","selectedRows","selectedLastRow","selectableHasSelection","selectableIsMultiSelect","selectableTableClasses","b-table-selectable","selectableTableAttrs","aria-multiselectable","setSelectionHandlers","selectedLastClicked","b-table-row-selected","selectionHandler","providerMixin","providerTriggerContext","_providerUpdate","refresh","_providerSetLocal","catch","tableRendererMixin","bordered","borderless","outlined","responsive","noBorderCollapse","captionTop","tableClass","wrapperClasses","wrapperStyles","maxHeight","tableClasses","isTableSimple","table-striped","table-hover","table-dark","table-bordered","table-borderless","table-sm","b-table-fixed","b-table-caption-top","b-table-no-border-collapse","tableAttrs","ariaAttrs","aria-colcount","aria-rowcount","$table","BTableLite","BTableSimple","TablePlugin","TableLitePlugin","TableSimplePlugin","navProps","notDisabled","tab","BTabButtonHelper","bvTabs","posInSet","setSize","noKeyNav","handleEvt","localActive","titleLinkClass","activeNavItemClass","titleItemClass","TabsPlugin","BTabs","card","noNavStyle","navClass","navWrapperClass","activeTabClass","tabIdx","currentTab","registeredTabs","isMounted","localNavClass","activateTab","previousTab","nextTab","updateTabs","setObserver","_bvObserver","registerTab","unregisterTab","tabsContainer","getTabs","$children","_isTab","getButtonForTab","updateButton","$forceUpdate","tabEvt","deactivateTab","focusButton","emitTabClick","clickTab","firstTab","currentIndex","lastTab","activeTab","fallbackTab","controlledBy","first","last","nav","card-header","card-footer","col-auto","empty","card-body","BTab","buttonId","tabClasses","computedNoFade","computedLazy","activate","deactivate","Symbol","iterator","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","inBrowser","pick","acc","VuePlugin","transports","sources","wormhole","trackInstances","open","transport","passengers","_transport$order","Infinity","newTransport","$_getTransportIndex","newTransports","registerTarget","unregisterTarget","$delete","registerSource","unregisterSource","hasTarget","hasSource","hasContentFor","_id","Portal","slim","slotProps","random","sendUpdate","clear","closer","normalizeSlots","normalizeOwnChildren","slotContent","Tag","v-portal","PortalTarget","firstRender","ownTransports","temp","newPassengers","combinePassengers","noWrapper","vue-portal-target","_id$1","portalProps","targetProps","bail","mountTo","targetSlim","targetSlotProps","targetTag","portalTarget","mountEl","_props","error","DefaultTransition","doRender","dead","staticName","Wormhole","$toaster","b-dead-toaster","$target","isStatus","appendToast","noAutoHide","noCloseButton","solid","isHiding","timer","dismissStarted","resumeDismiss","bToastClasses","b-toast-solid","b-toast-append","b-toast-prepend","computedDuration","computedToaster","transitionHandlers","ensureToaster","clearDismissTimer","now","setHoverHandler","startDismissTimer","onPause","onUnPause","passed","onLinkClick","hiddenEvt","makeToast","$headerContent","$body","toastProps","toastContent","ToastPlugin","BVToastPlugin","BToastPop","toast","BvToast","BV_TOOLTIP","noninteractiveRE","applyTooltip","VBTooltipPlugin","VBTooltip","removeTooltip","componentsPlugin","TooltipPlugin","VBHoverPlugin","VBModalPlugin","Default","throttle","DefaultType","ClassName","ACTIVE","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","HREF_REGEX","objectToString","ScrollSpy","$scroller","$selector","$offsets","$targets","$activeTarget","$scrollHeight","$resizeTimeout","$obs_scroller","$obs_targets","$config","updateConfig","unlisten","cfg","componentName","configTypes","expectedTypes","valueType","_isVue","typeCheckConfig","Name","scroller","getScroller","setObservers","autoMethod","methodFn","offsetBase","getScrollTop","getScrollHeight","maxScroll","getOffsetHeight","links","dropdown","setActiveState","sibling","previousElementSibling","BV_SCROLLSPY","onlyDigitsRE","applyScrollspy","directivesPlugin","VBScrollspyPlugin","VBScrollspy","dispose","removeScrollspy","VBTogglePlugin","VBVisiblePlugin","RX_ICON_PREFIX","BootstrapVue","icon"],"mappings":"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","sourcesContent":["// --- Static ---\n\nexport const from = (...args) => Array.from(...args)\nexport const isArray = val => Array.isArray(val)\n\n// --- Instance ---\n\nexport const arrayIncludes = (array, value) => array.indexOf(value) !== -1\nexport const concat = (...args) => Array.prototype.concat.apply([], args)\n","import OurVue from './vue'\nimport { setConfig } from './config-set'\nimport { hasWindowSupport, isJSDOM } from './env'\nimport { warn } from './warn'\n\n/**\n * Checks if there are multiple instances of Vue, and warns (once) about possible issues.\n * @param {object} Vue\n */\nexport const checkMultipleVue = (() => {\n let checkMultipleVueWarned = false\n\n const MULTIPLE_VUE_WARNING = [\n 'Multiple instances of Vue detected!',\n 'You may need to set up an alias for Vue in your bundler config.',\n 'See: https://bootstrap-vue.js.org/docs#using-module-bundlers'\n ].join('\\n')\n\n return Vue => {\n /* istanbul ignore next */\n if (!checkMultipleVueWarned && OurVue !== Vue && !isJSDOM) {\n warn(MULTIPLE_VUE_WARNING)\n }\n checkMultipleVueWarned = true\n }\n})()\n\n/**\n * Plugin install factory function.\n * @param {object} { components, directives }\n * @returns {function} plugin install function\n */\nexport const installFactory = ({ components, directives, plugins } = {}) => {\n const install = (Vue, config = {}) => {\n if (install.installed) {\n /* istanbul ignore next */\n return\n }\n install.installed = true\n checkMultipleVue(Vue)\n setConfig(config, Vue)\n registerComponents(Vue, components)\n registerDirectives(Vue, directives)\n registerPlugins(Vue, plugins)\n }\n\n install.installed = false\n\n return install\n}\n\n/**\n * Plugin install factory function (no plugin config option).\n * @param {object} { components, directives }\n * @returns {function} plugin install function\n */\nexport const installFactoryNoConfig = ({ components, directives, plugins } = {}) => {\n const install = Vue => {\n if (install.installed) {\n /* istanbul ignore next */\n return\n }\n install.installed = true\n checkMultipleVue(Vue)\n registerComponents(Vue, components)\n registerDirectives(Vue, directives)\n registerPlugins(Vue, plugins)\n }\n\n install.installed = false\n\n return install\n}\n\n/**\n * Plugin object factory function.\n * @param {object} { components, directives, plugins }\n * @returns {object} plugin install object\n */\nexport const pluginFactory = (options = {}, extend = {}) => ({\n ...extend,\n install: installFactory(options)\n})\n\n/**\n * Plugin object factory function (no config option).\n * @param {object} { components, directives, plugins }\n * @returns {object} plugin install object\n */\nexport const pluginFactoryNoConfig = (options = {}, extend = {}) => ({\n ...extend,\n install: installFactoryNoConfig(options)\n})\n\n/**\n * Load a group of plugins.\n * @param {object} Vue\n * @param {object} Plugin definitions\n */\nexport const registerPlugins = (Vue, plugins = {}) => {\n for (const plugin in plugins) {\n if (plugin && plugins[plugin]) {\n Vue.use(plugins[plugin])\n }\n }\n}\n\n/**\n * Load a component.\n * @param {object} Vue\n * @param {string} Component name\n * @param {object} Component definition\n */\nexport const registerComponent = (Vue, name, def) => {\n if (Vue && name && def) {\n Vue.component(name, def)\n }\n}\n\n/**\n * Load a group of components.\n * @param {object} Vue\n * @param {object} Object of component definitions\n */\nexport const registerComponents = (Vue, components = {}) => {\n for (const component in components) {\n registerComponent(Vue, component, components[component])\n }\n}\n\n/**\n * Load a directive.\n * @param {object} Vue\n * @param {string} Directive name\n * @param {object} Directive definition\n */\nexport const registerDirective = (Vue, name, def) => {\n if (Vue && name && def) {\n // Ensure that any leading V is removed from the\n // name, as Vue adds it automatically\n Vue.directive(name.replace(/^VB/, 'B'), def)\n }\n}\n\n/**\n * Load a group of directives.\n * @param {object} Vue\n * @param {object} Object of directive definitions\n */\nexport const registerDirectives = (Vue, directives = {}) => {\n for (const directive in directives) {\n registerDirective(Vue, directive, directives[directive])\n }\n}\n\n/**\n * Install plugin if window.Vue available\n * @param {object} Plugin definition\n */\nexport const vueUse = VuePlugin => {\n /* istanbul ignore next */\n if (hasWindowSupport && window.Vue) {\n window.Vue.use(VuePlugin)\n }\n /* istanbul ignore next */\n if (hasWindowSupport && VuePlugin.NAME) {\n window[VuePlugin.NAME] = VuePlugin\n }\n}\n","import { isArray } from './array'\n\n// --- Static ---\n\nexport const assign = (...args) => Object.assign(...args)\nexport const create = (proto, optionalProps) => Object.create(proto, optionalProps)\nexport const defineProperties = (obj, props) => Object.defineProperties(obj, props)\nexport const defineProperty = (obj, prop, descr) => Object.defineProperty(obj, prop, descr)\nexport const freeze = obj => Object.freeze(obj)\nexport const getOwnPropertyNames = obj => Object.getOwnPropertyNames(obj)\nexport const getOwnPropertyDescriptor = (obj, prop) => Object.getOwnPropertyDescriptor(obj, prop)\nexport const getOwnPropertySymbols = obj => Object.getOwnPropertySymbols(obj)\nexport const getPrototypeOf = obj => Object.getPrototypeOf(obj)\nexport const is = (value1, value2) => Object.is(value1, value2)\nexport const isFrozen = obj => Object.isFrozen(obj)\nexport const keys = obj => Object.keys(obj)\n\n// --- \"Instance\" ---\n\nexport const hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)\nexport const toString = obj => Object.prototype.toString.call(obj)\n\n// --- Utilities ---\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n * Note object could be a complex type like array, date, etc.\n */\nexport const isObject = obj => obj !== null && typeof obj === 'object'\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nexport const isPlainObject = obj => Object.prototype.toString.call(obj) === '[object Object]'\n\n/**\n * Shallow copy an object. If the passed in object\n * is null or undefined, returns an empty object\n */\nexport const clone = obj => ({ ...obj })\n\n/**\n * Return a shallow copy of object with\n * the specified properties omitted\n * @link https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc\n */\nexport const omit = (obj, props) =>\n keys(obj)\n .filter(key => props.indexOf(key) === -1)\n .reduce((result, key) => ({ ...result, [key]: obj[key] }), {})\n\n/**\n * Convenience method to create a read-only descriptor\n */\nexport const readonlyDescriptor = () => ({ enumerable: true, configurable: false, writable: false })\n\n/**\n * Deep-freezes and object, making it immutable / read-only.\n * Returns the same object passed-in, but frozen.\n * Freezes inner object/array/values first.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n * Note: this method will not work for property values using Symbol() as a key\n */\nexport const deepFreeze = obj => {\n // Retrieve the property names defined on object/array\n // Note: `keys` will ignore properties that are keyed by a `Symbol()`\n const props = keys(obj)\n // Iterate over each prop and recursively freeze it\n props.forEach(prop => {\n const value = obj[prop]\n // If value is a plain object or array, we deepFreeze it\n obj[prop] = value && (isPlainObject(value) || isArray(value)) ? deepFreeze(value) : value\n })\n return freeze(obj)\n}\n","/**\n * Utilities to get information about the current environment\n */\n\n// --- Constants ---\n\nexport const hasWindowSupport = typeof window !== 'undefined'\nexport const hasDocumentSupport = typeof document !== 'undefined'\nexport const hasNavigatorSupport = typeof navigator !== 'undefined'\nexport const hasPromiseSupport = typeof Promise !== 'undefined'\nexport const hasMutationObserverSupport =\n typeof MutationObserver !== 'undefined' ||\n typeof WebKitMutationObserver !== 'undefined' ||\n typeof MozMutationObserver !== 'undefined'\n\nexport const isBrowser = hasWindowSupport && hasDocumentSupport && hasNavigatorSupport\n\n// Browser type sniffing\nexport const userAgent = isBrowser ? window.navigator.userAgent.toLowerCase() : ''\n\nexport const isJSDOM = userAgent.indexOf('jsdom') > 0\nexport const isIE = /msie|trident/.test(userAgent)\n\n// Determine if the browser supports the option passive for events\nexport const hasPassiveEventSupport = (() => {\n let passiveEventSupported = false\n if (isBrowser) {\n try {\n const options = {\n get passive() {\n // This function will be called when the browser\n // attempts to access the passive property.\n /* istanbul ignore next: will never be called in JSDOM */\n passiveEventSupported = true\n }\n }\n window.addEventListener('test', options, options)\n window.removeEventListener('test', options, options)\n } catch (err) {\n /* istanbul ignore next: will never be called in JSDOM */\n passiveEventSupported = false\n }\n }\n return passiveEventSupported\n})()\n\nexport const hasTouchSupport =\n isBrowser && ('ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0)\n\nexport const hasPointerEventSupport =\n isBrowser && Boolean(window.PointerEvent || window.MSPointerEvent)\n\nexport const hasIntersectionObserverSupport =\n isBrowser &&\n 'IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n // Edge 15 and UC Browser lack support for `isIntersecting`\n // but we an use intersectionRatio > 0 instead\n // 'isIntersecting' in window.IntersectionObserverEntry.prototype &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype\n\n// --- Getters ---\n\nexport const getEnv = (key, fallback = null) => {\n const env = typeof process !== 'undefined' && process ? process.env || {} : {}\n if (!key) {\n /* istanbul ignore next */\n return env\n }\n return env[key] || fallback\n}\n\nexport const getNoWarn = () => getEnv('BOOTSTRAP_VUE_NO_WARN')\n","/**\n * SSR safe types\n */\n\nimport { hasWindowSupport } from './env'\n\nconst w = hasWindowSupport ? window : {}\n\nexport const Element = hasWindowSupport ? w.Element : class Element extends Object {}\n\nexport const HTMLElement = hasWindowSupport ? w.HTMLElement : class HTMLElement extends Element {}\n\nexport const SVGElement = hasWindowSupport ? w.SVGElement : class SVGElement extends Element {}\n\nexport const File = hasWindowSupport ? w.File : class File extends Object {}\n","import { isArray } from './array'\nimport { isObject, isPlainObject } from './object'\nimport { File } from './safe-types'\n\n// --- Convenience inspection utilities ---\n\nexport const toType = val => typeof val\n\nexport const toRawType = val => Object.prototype.toString.call(val).slice(8, -1)\n\nexport const toRawTypeLC = val => toRawType(val).toLowerCase()\n\nexport const isUndefined = val => val === undefined\n\nexport const isNull = val => val === null\n\nexport const isEmptyString = val => val === ''\n\nexport const isUndefinedOrNull = val => isUndefined(val) || isNull(val)\n\nexport const isUndefinedOrNullOrEmpty = val => isUndefinedOrNull(val) || isEmptyString(val)\n\nexport const isFunction = val => toType(val) === 'function'\n\nexport const isBoolean = val => toType(val) === 'boolean'\n\nexport const isString = val => toType(val) === 'string'\n\nexport const isNumber = val => toType(val) === 'number'\n\nexport const isPrimitive = val => isBoolean(val) || isString(val) || isNumber(val)\n\nexport const isDate = val => val instanceof Date\n\nexport const isEvent = val => val instanceof Event\n\nexport const isFile = val => val instanceof File\n\nexport const isRegExp = val => toRawType(val) === 'RegExp'\n\nexport const isPromise = val =>\n !isUndefinedOrNull(val) && isFunction(val.then) && isFunction(val.catch)\n\n// Extra convenience named re-exports\nexport { isArray, isObject, isPlainObject }\n","import { isArray, isPlainObject } from './inspect'\nimport { keys } from './object'\n\nexport const cloneDeep = (obj, defaultValue = obj) => {\n if (isArray(obj)) {\n return obj.reduce((result, val) => [...result, cloneDeep(val, val)], [])\n }\n if (isPlainObject(obj)) {\n return keys(obj).reduce(\n (result, key) => ({ ...result, [key]: cloneDeep(obj[key], obj[key]) }),\n {}\n )\n }\n return defaultValue\n}\n\nexport default cloneDeep\n","const identity = x => x\n\nexport default identity\n","import identity from './identity'\nimport { isArray, isObject } from './inspect'\n\nconst RX_ARRAY_NOTATION = /\\[(\\d+)]/g\n\n/**\n * Get property defined by dot/array notation in string.\n *\n * @link https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf#gistcomment-1935901\n *\n * @param {Object} obj\n * @param {string|Array} path\n * @param {*} defaultValue (optional)\n * @return {*}\n */\nconst get = (obj, path, defaultValue = null) => {\n // Handle array of path values\n path = isArray(path) ? path.join('.') : path\n\n // If no path or no object passed\n if (!path || !isObject(obj)) {\n return defaultValue\n }\n\n // Handle edge case where user has dot(s) in top-level item field key\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2762\n // Switched to `in` operator vs `hasOwnProperty` to handle obj.prototype getters\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3463\n if (path in obj) {\n return obj[path]\n }\n\n // Handle string array notation (numeric indices only)\n path = String(path).replace(RX_ARRAY_NOTATION, '.$1')\n\n const steps = path.split('.').filter(identity)\n\n // Handle case where someone passes a string of only dots\n if (steps.length === 0) {\n return defaultValue\n }\n\n // Traverse path in object to find result\n // We use `!=` vs `!==` to test for both `null` and `undefined`\n // Switched to `in` operator vs `hasOwnProperty` to handle obj.prototype getters\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3463\n return steps.every(step => isObject(obj) && step in obj && (obj = obj[step]) != null)\n ? obj\n : defaultValue\n}\n\nexport default get\n","import { isBrowser, hasPromiseSupport, hasMutationObserverSupport, getNoWarn } from './env'\n\n/**\n * Log a warning message to the console with BootstrapVue formatting\n * @param {string} message\n */\nexport const warn = (message, source = null) => /* istanbul ignore next */ {\n if (!getNoWarn()) {\n console.warn(`[BootstrapVue warn]: ${source ? `${source} - ` : ''}${message}`)\n }\n}\n\n/**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\nexport const warnNotClient = source => {\n /* istanbul ignore else */\n if (isBrowser) {\n return false\n } else {\n warn(`${source}: Can not be called during SSR.`)\n return true\n }\n}\n\n/**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\nexport const warnNoPromiseSupport = source => {\n /* istanbul ignore else */\n if (hasPromiseSupport) {\n return false\n } else {\n warn(`${source}: Requires Promise support.`)\n return true\n }\n}\n\n/**\n * Warn when no MutationObserver support is given\n * @param {string} source\n * @returns {boolean} warned\n */\nexport const warnNoMutationObserverSupport = source => {\n /* istanbul ignore else */\n if (hasMutationObserverSupport) {\n return false\n } else {\n warn(`${source}: Requires MutationObserver support.`)\n return true\n }\n}\n","import { deepFreeze } from './object'\n\n// --- General BootstrapVue configuration ---\n\n// NOTES\n//\n// The global config SHALL NOT be used to set defaults for Boolean props, as the props\n// would loose their semantic meaning, and force people writing 3rd party components to\n// explicity set a true or false value using the v-bind syntax on boolean props\n//\n// Supported config values (depending on the prop's supported type(s)):\n// `String`, `Array`, `Object`, `null` or `undefined`\n\n// BREAKPOINT DEFINITIONS\n//\n// Some components (`<b-col>` and `<b-form-group>`) generate props based on breakpoints,\n// and this occurs when the component is first loaded (evaluated), which may happen\n// before the config is created/modified\n//\n// To get around this we make these components' props async (lazy evaluation)\n// The component definition is only called/executed when the first access to the\n// component is used (and cached on subsequent uses)\n\n// PROP DEFAULTS\n//\n// For default values on props, we use the default value factory function approach so\n// that the default values are pulled in at each component instantiation\n//\n// props: {\n// variant: {\n// type: String,\n// default: () => getConfigComponent('BAlert', 'variant')\n// }\n// }\n//\n// We also provide a cached getter for breakpoints, which are \"frozen\" on first access\n\n// prettier-ignore\nexport default deepFreeze({\n // Breakpoints\n breakpoints: ['xs', 'sm', 'md', 'lg', 'xl'],\n\n // Form controls\n formControls: {\n size: null\n },\n\n // Component specific defaults are keyed by the component\n // name (PascalCase) and prop name (camelCase)\n BAlert: {\n dismissLabel: 'Close',\n variant: 'info'\n },\n BBadge: {\n variant: 'secondary'\n },\n BButton: {\n size: null,\n variant: 'secondary'\n },\n BButtonClose: {\n content: '&times;',\n // `textVariant` is `null` to inherit the current text color\n textVariant: null,\n ariaLabel: 'Close'\n },\n BCalendar: {\n // BFormDate will choose these first if not provided in BFormDate section\n labelPrevYear: 'Previous year',\n labelPrevMonth: 'Previous month',\n labelCurrentMonth: 'Current month',\n labelNextMonth: 'Next month',\n labelNextYear: 'Next year',\n labelToday: 'Today',\n labelSelected: 'Selected date',\n labelNoDateSelected: 'No date selected',\n labelCalendar: 'Calendar',\n labelNav: 'Calendar navigation',\n labelHelp: 'Use cursor keys to navigate calendar dates'\n },\n BCardSubTitle: {\n // `<b-card>` and `<b-card-body>` also inherit this prop\n subTitleTextVariant: 'muted'\n },\n BCarousel: {\n labelPrev: 'Previous Slide',\n labelNext: 'Next Slide',\n labelGotoSlide: 'Goto Slide',\n labelIndicators: 'Select a slide to display'\n },\n BDropdown: {\n toggleText: 'Toggle Dropdown',\n size: null,\n variant: 'secondary',\n splitVariant: null\n },\n BFormDatepicker: {\n // BFormDatepicker will choose from BCalendar first if not provided in BFormDatepicker section\n labelPrevYear: null,\n labelPrevMonth: null,\n labelCurrentMonth: null,\n labelNextMonth: null,\n labelNextYear: null,\n labelToday: null,\n labelSelected: null,\n labelNoDateSelected: null,\n labelCalendar: null,\n labelNav: null,\n labelHelp: null,\n // These props are specific to BFormDatepicker\n labelTodayButton: 'Select today',\n labelResetButton: 'Reset',\n labelCloseButton: 'Close'\n },\n BFormFile: {\n browseText: 'Browse',\n // Chrome default file prompt\n placeholder: 'No file chosen',\n dropPlaceholder: 'Drop files here'\n },\n BFormSpinbutton: {\n labelDecrement: 'Decrement',\n labelIncrement: 'Increment'\n },\n BFormTag: {\n removeLabel: 'Remove tag',\n variant: 'secondary'\n },\n BFormTags: {\n addButtonText: 'Add',\n addButtonVariant: 'outline-secondary',\n duplicateTagText: 'Duplicate tag(s)',\n invalidTagText: 'Invalid tag(s)',\n placeholder: 'Add tag...',\n tagRemoveLabel: 'Remove tag',\n tagRemovedLabel: 'Tag removed',\n tagVariant: 'secondary'\n },\n BFormText: {\n textVariant: 'muted'\n },\n BImg: {\n blankColor: 'transparent'\n },\n BImgLazy: {\n blankColor: 'transparent'\n },\n BInputGroup: {\n size: null\n },\n BJumbotron: {\n bgVariant: null,\n borderVariant: null,\n textVariant: null\n },\n BListGroupItem: {\n variant: null\n },\n BModal: {\n titleTag: 'h5',\n size: 'md',\n headerBgVariant: null,\n headerBorderVariant: null,\n headerTextVariant: null,\n headerCloseVariant: null,\n bodyBgVariant: null,\n bodyTextVariant: null,\n footerBgVariant: null,\n footerBorderVariant: null,\n footerTextVariant: null,\n cancelTitle: 'Cancel',\n cancelVariant: 'secondary',\n okTitle: 'OK',\n okVariant: 'primary',\n headerCloseContent: '&times;',\n headerCloseLabel: 'Close'\n },\n BNavbar: {\n variant: null\n },\n BNavbarToggle: {\n label: 'Toggle navigation'\n },\n BPagination: {\n size: null\n },\n BPaginationNav: {\n size: null\n },\n BPopover: {\n boundary: 'scrollParent',\n boundaryPadding: 5,\n customClass: null,\n delay: 50,\n variant: null\n },\n BProgress: {\n variant: null\n },\n BProgressBar: {\n variant: null\n },\n BSpinner: {\n variant: null\n },\n BTable: {\n selectedVariant: 'active',\n headVariant: null,\n footVariant: null\n },\n BToast: {\n toaster: 'b-toaster-top-right',\n autoHideDelay: 5000,\n variant: null,\n toastClass: null,\n headerClass: null,\n bodyClass: null\n },\n BToaster: {\n ariaLive: null,\n ariaAtomic: null,\n role: null\n },\n BTooltip: {\n boundary: 'scrollParent',\n boundaryPadding: 5,\n customClass: null,\n delay: 50,\n variant: null\n }\n})\n","import OurVue from './vue'\nimport cloneDeep from './clone-deep'\nimport get from './get'\nimport { isArray, isPlainObject, isString, isUndefined } from './inspect'\nimport { getOwnPropertyNames, hasOwnProperty } from './object'\nimport { warn } from './warn'\nimport DEFAULTS from './config-defaults'\n\n// --- Constants ---\n\nconst NAME = 'BvConfig'\nconst PROP_NAME = '$bvConfig'\n\n// Config manager class\nclass BvConfig {\n constructor() {\n // TODO: pre-populate with default config values (needs updated tests)\n // this.$_config = cloneDeep(DEFAULTS)\n this.$_config = {}\n this.$_cachedBreakpoints = null\n }\n\n static get Defaults() /* istanbul ignore next */ {\n return DEFAULTS\n }\n\n get defaults() /* istanbul ignore next */ {\n return DEFAULTS\n }\n\n // Returns the defaults\n getDefaults() /* istanbul ignore next */ {\n return this.defaults\n }\n\n // Method to merge in user config parameters\n setConfig(config = {}) {\n if (!isPlainObject(config)) {\n /* istanbul ignore next */\n return\n }\n const configKeys = getOwnPropertyNames(config)\n configKeys.forEach(cmpName => {\n /* istanbul ignore next */\n if (!hasOwnProperty(DEFAULTS, cmpName)) {\n warn(`Unknown config property \"${cmpName}\"`, NAME)\n return\n }\n const cmpConfig = config[cmpName]\n if (cmpName === 'breakpoints') {\n // Special case for breakpoints\n const breakpoints = config.breakpoints\n /* istanbul ignore if */\n if (\n !isArray(breakpoints) ||\n breakpoints.length < 2 ||\n breakpoints.some(b => !isString(b) || b.length === 0)\n ) {\n warn('\"breakpoints\" must be an array of at least 2 breakpoint names', NAME)\n } else {\n this.$_config.breakpoints = cloneDeep(breakpoints)\n }\n } else if (isPlainObject(cmpConfig)) {\n // Component prop defaults\n const props = getOwnPropertyNames(cmpConfig)\n props.forEach(prop => {\n /* istanbul ignore if */\n if (!hasOwnProperty(DEFAULTS[cmpName], prop)) {\n warn(`Unknown config property \"${cmpName}.${prop}\"`, NAME)\n } else {\n // TODO: If we pre-populate the config with defaults, we can skip this line\n this.$_config[cmpName] = this.$_config[cmpName] || {}\n if (!isUndefined(cmpConfig[prop])) {\n this.$_config[cmpName][prop] = cloneDeep(cmpConfig[prop])\n }\n }\n })\n }\n })\n }\n\n // Clear the config. For testing purposes only\n resetConfig() {\n this.$_config = {}\n }\n\n // Returns a deep copy of the user config\n getConfig() {\n return cloneDeep(this.$_config)\n }\n\n getConfigValue(key) {\n // First we try the user config, and if key not found we fall back to default value\n // NOTE: If we deep clone DEFAULTS into config, then we can skip the fallback for get\n return cloneDeep(get(this.$_config, key, get(DEFAULTS, key)))\n }\n}\n\n// Method for applying a global config\nexport const setConfig = (config = {}, Vue = OurVue) => {\n // Ensure we have a $bvConfig Object on the Vue prototype.\n // We set on Vue and OurVue just in case consumer has not set an alias of `vue`.\n Vue.prototype[PROP_NAME] = OurVue.prototype[PROP_NAME] =\n Vue.prototype[PROP_NAME] || OurVue.prototype[PROP_NAME] || new BvConfig()\n // Apply the config values\n Vue.prototype[PROP_NAME].setConfig(config)\n}\n\n// Method for resetting the user config. Exported for testing purposes only.\nexport const resetConfig = () => {\n if (OurVue.prototype[PROP_NAME] && OurVue.prototype[PROP_NAME].resetConfig) {\n OurVue.prototype[PROP_NAME].resetConfig()\n }\n}\n","import { create } from './object'\n\nconst memoize = fn => {\n const cache = create(null)\n\n return (...args) => {\n const argsKey = JSON.stringify(args)\n return (cache[argsKey] = cache[argsKey] || fn.apply(null, args))\n }\n}\n\nexport default memoize\n","import Vue from './vue'\nimport cloneDeep from './clone-deep'\nimport get from './get'\nimport memoize from './memoize'\nimport DEFAULTS from './config-defaults'\n\n// --- Constants ---\n\nconst PROP_NAME = '$bvConfig'\nconst VueProto = Vue.prototype\n\n// --- Getter methods ---\n// All methods return a deep clone (immutable) copy of the config\n// value, to prevent mutation of the user config object.\n\n// Get the current user config. For testing purposes only\nexport const getConfig = () => {\n return VueProto[PROP_NAME] ? VueProto[PROP_NAME].getConfig() : {}\n}\n\n// Method to grab a config value based on a dotted/array notation key\nexport const getConfigValue = key => {\n return VueProto[PROP_NAME]\n ? VueProto[PROP_NAME].getConfigValue(key)\n : cloneDeep(get(DEFAULTS, key))\n}\n\n// Method to grab a config value for a particular component\nexport const getComponentConfig = (cmpName, key = null) => {\n // Return the particular config value for key for if specified,\n // otherwise we return the full config (or an empty object if not found)\n return key ? getConfigValue(`${cmpName}.${key}`) : getConfigValue(cmpName) || {}\n}\n\n// Convenience method for getting all breakpoint names\nexport const getBreakpoints = () => {\n return getConfigValue('breakpoints')\n}\n\n// Private function for caching / locking-in breakpoint names\nconst _getBreakpointsCached = memoize(() => {\n return getBreakpoints()\n})\n\n// Convenience method for getting all breakpoint names.\n// Caches the results after first access.\nexport const getBreakpointsCached = () => {\n return cloneDeep(_getBreakpointsCached())\n}\n\n// Convenience method for getting breakpoints with\n// the smallest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\nexport const getBreakpointsUp = () => {\n const breakpoints = getBreakpoints()\n breakpoints[0] = ''\n return breakpoints\n}\n\n// Convenience method for getting breakpoints with\n// the smallest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n// Caches the results after first access.\nexport const getBreakpointsUpCached = memoize(() => {\n const breakpoints = getBreakpointsCached()\n breakpoints[0] = ''\n return breakpoints\n})\n\n// Convenience method for getting breakpoints with\n// the largest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\nexport const getBreakpointsDown = () => {\n const breakpoints = getBreakpoints()\n breakpoints[breakpoints.length - 1] = ''\n return breakpoints\n}\n\n// Convenience method for getting breakpoints with\n// the largest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n// Caches the results after first access.\n/* istanbul ignore next: we don't use this method anywhere, yet */\nexport const getBreakpointsDownCached = () => /* istanbul ignore next */ {\n const breakpoints = getBreakpointsCached()\n breakpoints[breakpoints.length - 1] = ''\n return breakpoints\n}\n","import { from as arrayFrom } from './array'\nimport { hasWindowSupport, hasDocumentSupport } from './env'\nimport { isFunction, isNull } from '../utils/inspect'\n\n// --- Constants ---\n\nconst w = hasWindowSupport ? window : {}\nconst d = hasDocumentSupport ? document : {}\nconst elProto = typeof Element !== 'undefined' ? Element.prototype : {}\n\n// --- Normalization utils ---\n\n// See: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n/* istanbul ignore next */\nexport const matchesEl =\n elProto.matches || elProto.msMatchesSelector || elProto.webkitMatchesSelector\n\n// See: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n/* istanbul ignore next */\nexport const closestEl =\n elProto.closest ||\n function(sel) /* istanbul ignore next */ {\n let el = this\n do {\n // Use our \"patched\" matches function\n if (matches(el, sel)) {\n return el\n }\n el = el.parentElement || el.parentNode\n } while (!isNull(el) && el.nodeType === Node.ELEMENT_NODE)\n return null\n }\n\n// `requestAnimationFrame()` convenience method\nexport const requestAF =\n w.requestAnimationFrame ||\n w.webkitRequestAnimationFrame ||\n w.mozRequestAnimationFrame ||\n w.msRequestAnimationFrame ||\n w.oRequestAnimationFrame ||\n // Fallback, but not a true polyfill\n // Only needed for Opera Mini\n /* istanbul ignore next */\n (cb => setTimeout(cb, 16))\n\nexport const MutationObs =\n w.MutationObserver || w.WebKitMutationObserver || w.MozMutationObserver || null\n\n// --- Utils ---\n\n// Remove a node from DOM\nexport const removeNode = el => el && el.parentNode && el.parentNode.removeChild(el)\n\n// Determine if an element is an HTML element\nexport const isElement = el => !!(el && el.nodeType === Node.ELEMENT_NODE)\n\n// Determine if an HTML element is visible - Faster than CSS check\nexport const isVisible = el => {\n if (!isElement(el) || !el.parentNode || !contains(d.body, el)) {\n // Note this can fail for shadow dom elements since they\n // are not a direct descendant of document.body\n return false\n }\n if (el.style.display === 'none') {\n // We do this check to help with vue-test-utils when using v-show\n /* istanbul ignore next */\n return false\n }\n // All browsers support getBoundingClientRect(), except JSDOM as it returns all 0's for values :(\n // So any tests that need isVisible will fail in JSDOM\n // Except when we override the getBCR prototype in some tests\n const bcr = getBCR(el)\n return !!(bcr && bcr.height > 0 && bcr.width > 0)\n}\n\n// Determine if an element is disabled\nexport const isDisabled = el =>\n !isElement(el) || el.disabled || hasAttr(el, 'disabled') || hasClass(el, 'disabled')\n\n// Cause/wait-for an element to reflow its content (adjusting its height/width)\nexport const reflow = el => {\n // Requesting an elements offsetHight will trigger a reflow of the element content\n /* istanbul ignore next: reflow doesn't happen in JSDOM */\n return isElement(el) && el.offsetHeight\n}\n\n// Select all elements matching selector. Returns `[]` if none found\nexport const selectAll = (selector, root) =>\n arrayFrom((isElement(root) ? root : d).querySelectorAll(selector))\n\n// Select a single element, returns `null` if not found\nexport const select = (selector, root) =>\n (isElement(root) ? root : d).querySelector(selector) || null\n\n// Determine if an element matches a selector\nexport const matches = (el, selector) => (isElement(el) ? matchesEl.call(el, selector) : false)\n\n// Finds closest element matching selector. Returns `null` if not found\nexport const closest = (selector, root, includeRoot = false) => {\n if (!isElement(root)) {\n return null\n }\n const el = closestEl.call(root, selector)\n\n // Native closest behaviour when `includeRoot` is truthy,\n // else emulate jQuery closest and return `null` if match is\n // the passed in root element when `includeRoot` is falsey\n return includeRoot ? el : el === root ? null : el\n}\n\n// Returns true if the parent element contains the child element\nexport const contains = (parent, child) =>\n parent && isFunction(parent.contains) ? parent.contains(child) : false\n\n// Get an element given an ID\nexport const getById = id => d.getElementById(/^#/.test(id) ? id.slice(1) : id) || null\n\n// Add a class to an element\nexport const addClass = (el, className) => {\n // We are checking for `el.classList` existence here since IE 11\n // returns `undefined` for some elements (e.g. SVG elements)\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713\n if (className && isElement(el) && el.classList) {\n el.classList.add(className)\n }\n}\n\n// Remove a class from an element\nexport const removeClass = (el, className) => {\n // We are checking for `el.classList` existence here since IE 11\n // returns `undefined` for some elements (e.g. SVG elements)\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713\n if (className && isElement(el) && el.classList) {\n el.classList.remove(className)\n }\n}\n\n// Test if an element has a class\nexport const hasClass = (el, className) => {\n // We are checking for `el.classList` existence here since IE 11\n // returns `undefined` for some elements (e.g. SVG elements)\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713\n if (className && isElement(el) && el.classList) {\n return el.classList.contains(className)\n }\n return false\n}\n\n// Set an attribute on an element\nexport const setAttr = (el, attr, val) => {\n if (attr && isElement(el)) {\n el.setAttribute(attr, val)\n }\n}\n\n// Remove an attribute from an element\nexport const removeAttr = (el, attr) => {\n if (attr && isElement(el)) {\n el.removeAttribute(attr)\n }\n}\n\n// Get an attribute value from an element\n// Returns `null` if not found\nexport const getAttr = (el, attr) => (attr && isElement(el) ? el.getAttribute(attr) : null)\n\n// Determine if an attribute exists on an element\n// Returns `true` or `false`, or `null` if element not found\nexport const hasAttr = (el, attr) => (attr && isElement(el) ? el.hasAttribute(attr) : null)\n\n// Return the Bounding Client Rect of an element\n// Returns `null` if not an element\n/* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */\nexport const getBCR = el => (isElement(el) ? el.getBoundingClientRect() : null)\n\n// Get computed style object for an element\n/* istanbul ignore next: getComputedStyle() doesn't work in JSDOM */\nexport const getCS = el => (hasWindowSupport && isElement(el) ? w.getComputedStyle(el) : {})\n\n// Returns a `Selection` object representing the range of text selected\n// Returns `null` if no window support is given\n/* istanbul ignore next: getSelection() doesn't work in JSDOM */\nexport const getSel = () => (hasWindowSupport && w.getSelection ? w.getSelection() : null)\n\n// Return an element's offset with respect to document element\n// https://j11y.io/jquery/#v=git&fn=jQuery.fn.offset\nexport const offset = el => /* istanbul ignore next: getBoundingClientRect(), getClientRects() doesn't work in JSDOM */ {\n const _offset = { top: 0, left: 0 }\n if (!isElement(el) || el.getClientRects().length === 0) {\n return _offset\n }\n const bcr = getBCR(el)\n if (bcr) {\n const win = el.ownerDocument.defaultView\n _offset.top = bcr.top + win.pageYOffset\n _offset.left = bcr.left + win.pageXOffset\n }\n return _offset\n}\n\n// Return an element's offset with respect to to its offsetParent\n// https://j11y.io/jquery/#v=git&fn=jQuery.fn.position\nexport const position = el => /* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */ {\n let _offset = { top: 0, left: 0 }\n if (!isElement(el)) {\n return _offset\n }\n let parentOffset = { top: 0, left: 0 }\n const elStyles = getCS(el)\n if (elStyles.position === 'fixed') {\n _offset = getBCR(el) || _offset\n } else {\n _offset = offset(el)\n const doc = el.ownerDocument\n let offsetParent = el.offsetParent || doc.documentElement\n while (\n offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n getCS(offsetParent).position === 'static'\n ) {\n offsetParent = offsetParent.parentNode\n }\n if (offsetParent && offsetParent !== el && offsetParent.nodeType === Node.ELEMENT_NODE) {\n parentOffset = offset(offsetParent)\n const offsetParentStyles = getCS(offsetParent)\n parentOffset.top += parseFloat(offsetParentStyles.borderTopWidth)\n parentOffset.left += parseFloat(offsetParentStyles.borderLeftWidth)\n }\n }\n return {\n top: _offset.top - parentOffset.top - parseFloat(elStyles.marginTop),\n left: _offset.left - parentOffset.left - parseFloat(elStyles.marginLeft)\n }\n}\n","// Number utilities\n\n// Converts a value (string, number, etc) to an integer number\n// Assumes radix base 10\n// Returns NaN if the value cannot be converted\nexport const toInteger = val => parseInt(val, 10)\n\n// Converts a value (string, number, etc) to a number\n// Returns NaN if the value cannot be converted\nexport const toFloat = val => parseFloat(val)\n\n// Converts a value (string, number, etc) to a string\n// representation with 'precision' digits after the decimal\n// Returns the string 'NaN' if the value cannot be converted\nexport const toFixed = (val, precision) => toFloat(val).toFixed(toInteger(precision) || 0)\n","var e=function(){return(e=Object.assign||function(e){for(var t,r=1,s=arguments.length;r<s;r++)for(var a in t=arguments[r])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},t={kebab:/-(\\w)/g,styleProp:/:(.*)/,styleList:/;(?![^(]*\\))/g};function r(e,t){return t?t.toUpperCase():\"\"}function s(e){for(var s,a={},c=0,o=e.split(t.styleList);c<o.length;c++){var n=o[c].split(t.styleProp),i=n[0],l=n[1];(i=i.trim())&&(\"string\"==typeof l&&(l=l.trim()),a[(s=i,s.replace(t.kebab,r))]=l)}return a}function a(){for(var t,r,a={},c=arguments.length;c--;)for(var o=0,n=Object.keys(arguments[c]);o<n.length;o++)switch(t=n[o]){case\"class\":case\"style\":case\"directives\":if(Array.isArray(a[t])||(a[t]=[]),\"style\"===t){var i=void 0;i=Array.isArray(arguments[c].style)?arguments[c].style:[arguments[c].style];for(var l=0;l<i.length;l++){var y=i[l];\"string\"==typeof y&&(i[l]=s(y))}arguments[c].style=i}a[t]=a[t].concat(arguments[c][t]);break;case\"staticClass\":if(!arguments[c][t])break;void 0===a[t]&&(a[t]=\"\"),a[t]&&(a[t]+=\" \"),a[t]+=arguments[c][t].trim();break;case\"on\":case\"nativeOn\":a[t]||(a[t]={});for(var p=0,f=Object.keys(arguments[c][t]||{});p<f.length;p++)r=f[p],a[t][r]?a[t][r]=[].concat(a[t][r],arguments[c][t][r]):a[t][r]=arguments[c][t][r];break;case\"attrs\":case\"props\":case\"domProps\":case\"scopedSlots\":case\"staticStyle\":case\"hook\":case\"transition\":a[t]||(a[t]={}),a[t]=e({},arguments[c][t],a[t]);break;case\"slot\":case\"key\":case\"ref\":case\"tag\":case\"show\":case\"keepAlive\":default:a[t]||(a[t]=arguments[c][t])}return a}export{a as mergeData};\n//# sourceMappingURL=lib.esm.js.map\n","// Generic Bootstrap v4 fade (no-fade) transition component\n//\n// Assumes that `show` class is not required when\n// the transition has finished the enter transition\n// (show and fade classes are only applied during transition)\n\nimport Vue from './vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { isPlainObject } from './inspect'\n\nconst NO_FADE_PROPS = {\n name: '',\n enterClass: '',\n enterActiveClass: '',\n enterToClass: 'show',\n leaveClass: 'show',\n leaveActiveClass: '',\n leaveToClass: ''\n}\n\nconst FADE_PROPS = {\n ...NO_FADE_PROPS,\n enterActiveClass: 'fade',\n leaveActiveClass: 'fade'\n}\n\n// @vue/component\nexport const BVTransition = /*#__PURE__*/ Vue.extend({\n name: 'BVTransition',\n functional: true,\n props: {\n noFade: {\n // Only applicable to the built in transition\n // Has no effect if `trans-props` provided\n type: Boolean,\n default: false\n },\n appear: {\n // Has no effect if `trans-props` provided\n type: Boolean,\n default: false\n },\n mode: {\n // Can be overridden by user supplied trans-props\n type: String\n // default: undefined\n },\n // For user supplied transitions (if needed)\n transProps: {\n type: Object,\n default: null\n }\n },\n render(h, { children, data, props }) {\n let transProps = props.transProps\n if (!isPlainObject(transProps)) {\n transProps = props.noFade ? NO_FADE_PROPS : FADE_PROPS\n if (props.appear) {\n // Default the appear classes to equal the enter classes\n transProps = {\n ...transProps,\n appear: true,\n appearClass: transProps.enterClass,\n appearActiveClass: transProps.enterActiveClass,\n appearToClass: transProps.enterToClass\n }\n }\n }\n transProps = {\n mode: props.mode,\n ...transProps,\n // We always need `css` true\n css: true\n }\n return h(\n 'transition',\n // Any transition event listeners will get merged here\n mergeData(data, { props: transProps }),\n children\n )\n }\n})\n\nexport default BVTransition\n","import identity from './identity'\nimport { concat } from './array'\nimport { isFunction } from './inspect'\n\n// Note for functional components:\n// In functional components, `slots` is a function so it must be called\n// first before passing to the below methods. `scopedSlots` is always an\n// object and may be undefined (for Vue < 2.6.x)\n\n/**\n * Returns true if either scoped or unscoped named slot exists\n *\n * @param {String, Array} name or name[]\n * @param {Object} scopedSlots\n * @param {Object} slots\n * @returns {Array|undefined} VNodes\n */\nconst hasNormalizedSlot = (names, $scopedSlots = {}, $slots = {}) => {\n // Ensure names is an array\n names = concat(names).filter(identity)\n // Returns true if the either a $scopedSlot or $slot exists with the specified name\n return names.some(name => $scopedSlots[name] || $slots[name])\n}\n\n/**\n * Returns VNodes for named slot either scoped or unscoped\n *\n * @param {String, Array} name or name[]\n * @param {String} scope\n * @param {Object} scopedSlots\n * @param {Object} slots\n * @returns {Array|undefined} VNodes\n */\nconst normalizeSlot = (names, scope = {}, $scopedSlots = {}, $slots = {}) => {\n // Ensure names is an array\n names = concat(names).filter(identity)\n let slot\n for (let i = 0; i < names.length && !slot; i++) {\n const name = names[i]\n slot = $scopedSlots[name] || $slots[name]\n }\n // Note: in Vue 2.6.x, all named slots are also scoped slots\n return isFunction(slot) ? slot(scope) : slot\n}\n\n// Named exports\nexport { hasNormalizedSlot, normalizeSlot }\n\n// Default export (backwards compatibility)\nexport default normalizeSlot\n","import { hasNormalizedSlot, normalizeSlot } from '../utils/normalize-slot'\nimport { concat } from '../utils/array'\n\nexport default {\n methods: {\n hasNormalizedSlot(names) {\n // Returns true if the either a $scopedSlot or $slot exists with the specified name\n // `names` can be a string name or an array of names\n return hasNormalizedSlot(names, this.$scopedSlots, this.$slots)\n },\n normalizeSlot(names, scope = {}) {\n // Returns an array of rendered VNodes if slot found.\n // Returns undefined if not found.\n // `names` can be a string name or an array of names\n const vNodes = normalizeSlot(names, scope, this.$scopedSlots, this.$slots)\n return vNodes ? concat(vNodes) : vNodes\n }\n }\n}\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { getComponentConfig } from '../../utils/config'\nimport { isEvent } from '../../utils/inspect'\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot'\n\nconst NAME = 'BButtonClose'\n\nconst props = {\n content: {\n type: String,\n default: () => getComponentConfig(NAME, 'content')\n },\n disabled: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: () => getComponentConfig(NAME, 'ariaLabel')\n },\n textVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'textVariant')\n }\n}\n\n// @vue/component\nexport const BButtonClose = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, slots, scopedSlots }) {\n const $slots = slots()\n const $scopedSlots = scopedSlots || {}\n\n const componentData = {\n staticClass: 'close',\n class: {\n [`text-${props.textVariant}`]: props.textVariant\n },\n attrs: {\n type: 'button',\n disabled: props.disabled,\n 'aria-label': props.ariaLabel ? String(props.ariaLabel) : null\n },\n on: {\n click(evt) {\n // Ensure click on button HTML content is also disabled\n /* istanbul ignore if: bug in JSDOM still emits click on inner element */\n if (props.disabled && isEvent(evt)) {\n evt.stopPropagation()\n evt.preventDefault()\n }\n }\n }\n }\n // Careful not to override the default slot with innerHTML\n if (!hasNormalizedSlot('default', $scopedSlots, $slots)) {\n componentData.domProps = { innerHTML: props.content }\n }\n return h(\n 'button',\n mergeData(data, componentData),\n normalizeSlot('default', {}, $scopedSlots, $slots)\n )\n }\n})\n","import 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'\n\nconst NAME = 'BAlert'\n\n// Convert `show` value to a number\nconst parseCountDown = show => {\n if (show === '' || isBoolean(show)) {\n return 0\n }\n show = toInteger(show)\n return show > 0 ? show : 0\n}\n\n// Convert `show` value to a boolean\nconst parseShow = show => {\n if (show === '' || show === true) {\n return true\n }\n if (toInteger(show) < 1) {\n // Boolean will always return false for the above comparison\n return false\n }\n return !!show\n}\n\n// Is a value number like (i.e. a number or a number as string)\nconst isNumericLike = value => !isNaN(toInteger(value))\n\n// @vue/component\nexport const 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: () => getComponentConfig(NAME, 'variant')\n },\n dismissible: {\n type: Boolean,\n default: false\n },\n dismissLabel: {\n type: String,\n default: () => getComponentConfig(NAME, 'dismissLabel')\n },\n show: {\n type: [Boolean, Number, String],\n default: false\n },\n fade: {\n type: Boolean,\n default: false\n }\n },\n 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(newVal) {\n this.countDown = parseCountDown(newVal)\n this.localShow = parseShow(newVal)\n },\n countDown(newVal) {\n this.clearTimer()\n if (isNumericLike(this.show)) {\n // Ignore if this.show transitions to a boolean value.\n this.$emit('dismiss-count-down', newVal)\n if (this.show !== newVal) {\n // Update the v-model if needed\n this.$emit('input', newVal)\n }\n if (newVal > 0) {\n this.localShow = true\n this.countDownTimerId = setTimeout(() => {\n this.countDown--\n }, 1000)\n } else {\n // Slightly delay the hide to allow any UI updates\n this.$nextTick(() => {\n requestAF(() => {\n this.localShow = false\n })\n })\n }\n }\n },\n 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 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() {\n this.countDown = parseCountDown(this.show)\n this.localShow = parseShow(this.show)\n },\n mounted() {\n this.countDown = parseCountDown(this.show)\n this.localShow = parseShow(this.show)\n },\n beforeDestroy() {\n this.clearTimer()\n },\n methods: {\n dismiss() {\n this.clearTimer()\n this.countDown = 0\n this.localShow = false\n },\n clearTimer() {\n if (this.countDownTimerId) {\n clearInterval(this.countDownTimerId)\n this.countDownTimerId = null\n }\n }\n },\n render(h) {\n let $alert // undefined\n if (this.localShow) {\n let $dismissBtn = h()\n if (this.dismissible) {\n // Add dismiss button\n $dismissBtn = h(\n BButtonClose,\n { attrs: { 'aria-label': this.dismissLabel }, on: { click: this.dismiss } },\n [this.normalizeSlot('dismiss')]\n )\n }\n $alert = h(\n 'div',\n {\n key: this._uid,\n staticClass: 'alert',\n class: {\n 'alert-dismissible': this.dismissible,\n [`alert-${this.variant}`]: this.variant\n },\n attrs: { role: 'alert', 'aria-live': 'polite', 'aria-atomic': true }\n },\n [$dismissBtn, this.normalizeSlot('default')]\n )\n $alert = [$alert]\n }\n return h(BVTransition, { props: { noFade: !this.fade } }, $alert)\n }\n})\n","import { BAlert } from './alert'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst AlertPlugin = /*#__PURE__*/ pluginFactory({\n components: { BAlert }\n})\n\nexport { AlertPlugin, BAlert }\n","import identity from './identity'\nimport { isArray } from './inspect'\nimport { keys } from './object'\n\n/**\n * Given an array of properties or an object of property keys,\n * plucks all the values off the target object, returning a new object\n * that has props that reference the original prop values\n *\n * @param {{}|string[]} keysToPluck\n * @param {{}} objToPluck\n * @param {Function} transformFn\n * @return {{}}\n */\nconst pluckProps = (keysToPluck, objToPluck, transformFn = identity) =>\n (isArray(keysToPluck) ? keysToPluck.slice() : keys(keysToPluck)).reduce((memo, prop) => {\n memo[transformFn(prop)] = objToPluck[prop]\n return memo\n }, {})\n\nexport default pluckProps\n","// String utilities\nimport { isArray, isPlainObject, isString, isUndefinedOrNull } from './inspect'\n\n// --- Constants ---\n\nconst RX_TRIM_LEFT = /^\\s+/\nconst RX_TRIM_RIGHT = /\\s+$/\nconst RX_REGEXP_REPLACE = /[-/\\\\^$*+?.()|[\\]{}]/g\nconst RX_UN_KEBAB = /-(\\w)/g\nconst RX_HYPHENATE = /\\B([A-Z])/g\n\n// --- Utilities ---\n\n// Converts PascalCase or camelCase to kebab-case\nexport const kebabCase = str => {\n return str.replace(RX_HYPHENATE, '-$1').toLowerCase()\n}\n\n// Converts a kebab-case or camelCase string to PascalCase\nexport const pascalCase = str => {\n str = kebabCase(str).replace(RX_UN_KEBAB, (_, c) => (c ? c.toUpperCase() : ''))\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\n// Lowercases the first letter of a string and returns a new string\nexport const lowerFirst = str => {\n str = isString(str) ? str.trim() : String(str)\n return str.charAt(0).toLowerCase() + str.slice(1)\n}\n\n// Uppercases the first letter of a string and returns a new string\nexport const upperFirst = str => {\n str = isString(str) ? str.trim() : String(str)\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\n// Escape characters to be used in building a regular expression\nexport const escapeRegExp = str => str.replace(RX_REGEXP_REPLACE, '\\\\$&')\n\n// Convert a value to a string that can be rendered\n// `undefined`/`null` will be converted to `''`\n// Plain objects and arrays will be JSON stringified\nexport const toString = (val, spaces = 2) => {\n return isUndefinedOrNull(val)\n ? ''\n : isArray(val) || (isPlainObject(val) && val.toString === Object.prototype.toString)\n ? JSON.stringify(val, null, spaces)\n : String(val)\n}\n\n// Remove leading white space from a string\nexport const trimLeft = str => toString(str).replace(RX_TRIM_LEFT, '')\n\n// Remove Trailing white space from a string\nexport const trimRight = str => toString(str).replace(RX_TRIM_RIGHT, '')\n\n// Remove leading and trailing white space from a string\nexport const trim = str => toString(str).trim()\n\n// Lower case a string\nexport const lowerCase = str => toString(str).toLowerCase()\n\n// Upper case a string\nexport const upperCase = str => toString(str).toUpperCase()\n","import { isArray, isNull, isPlainObject, isString, isUndefined } from './inspect'\nimport { keys } from './object'\nimport { toString } from './string'\n\nconst ANCHOR_TAG = 'a'\n\n// Precompile RegExp\nconst commaRE = /%2C/g\nconst encodeReserveRE = /[!'()*]/g\nconst plusRE = /\\+/g\nconst queryStartRE = /^(\\?|#|&)/\n\n// Method to replace reserved chars\nconst encodeReserveReplacer = c => '%' + c.charCodeAt(0).toString(16)\n\n// Fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nconst encode = str =>\n encodeURIComponent(toString(str))\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ',')\n\nconst decode = decodeURIComponent\n\n// Stringifies an object of query parameters\n// See: https://github.com/vuejs/vue-router/blob/dev/src/util/query.js\nexport const stringifyQueryObj = obj => {\n if (!isPlainObject(obj)) {\n return ''\n }\n\n const query = keys(obj)\n .map(key => {\n const val = obj[key]\n if (isUndefined(val)) {\n return ''\n } else if (isNull(val)) {\n return encode(key)\n } else if (isArray(val)) {\n return val\n .reduce((results, val2) => {\n if (isNull(val2)) {\n results.push(encode(key))\n } else if (!isUndefined(val2)) {\n // Faster than string interpolation\n results.push(encode(key) + '=' + encode(val2))\n }\n return results\n }, [])\n .join('&')\n }\n // Faster than string interpolation\n return encode(key) + '=' + encode(val)\n })\n /* must check for length, as we only want to filter empty strings, not things that look falsey! */\n .filter(x => x.length > 0)\n .join('&')\n\n return query ? `?${query}` : ''\n}\n\nexport const parseQuery = query => {\n const parsed = {}\n query = toString(query)\n .trim()\n .replace(queryStartRE, '')\n\n if (!query) {\n return parsed\n }\n\n query.split('&').forEach(param => {\n const parts = param.replace(plusRE, ' ').split('=')\n const key = decode(parts.shift())\n const val = parts.length > 0 ? decode(parts.join('=')) : null\n\n if (isUndefined(parsed[key])) {\n parsed[key] = val\n } else if (isArray(parsed[key])) {\n parsed[key].push(val)\n } else {\n parsed[key] = [parsed[key], val]\n }\n })\n\n return parsed\n}\n\nexport const isRouterLink = tag => toString(tag).toLowerCase() !== ANCHOR_TAG\n\nexport const computeTag = ({ to, disabled } = {}, thisOrParent) => {\n return thisOrParent.$router && to && !disabled\n ? thisOrParent.$nuxt\n ? 'nuxt-link'\n : 'router-link'\n : ANCHOR_TAG\n}\n\nexport const computeRel = ({ target, rel } = {}) => {\n if (target === '_blank' && isNull(rel)) {\n return 'noopener'\n }\n return rel || null\n}\n\nexport const computeHref = (\n { href, to } = {},\n tag = ANCHOR_TAG,\n fallback = '#',\n toFallback = '/'\n) => {\n // We've already checked the $router in computeTag(), so isRouterLink() indicates a live router.\n // When deferring to Vue Router's router-link, don't use the href attribute at all.\n // We return null, and then remove href from the attributes passed to router-link\n if (isRouterLink(tag)) {\n return null\n }\n\n // Return `href` when explicitly provided\n if (href) {\n return href\n }\n\n // Reconstruct `href` when `to` used, but no router\n if (to) {\n // Fallback to `to` prop (if `to` is a string)\n if (isString(to)) {\n return to || toFallback\n }\n // Fallback to `to.path + to.query + to.hash` prop (if `to` is an object)\n if (isPlainObject(to) && (to.path || to.query || to.hash)) {\n const path = toString(to.path)\n const query = stringifyQueryObj(to.query)\n let hash = toString(to.hash)\n hash = !hash || hash.charAt(0) === '#' ? hash : `#${hash}`\n return `${path}${query}${hash}` || toFallback\n }\n }\n\n // If nothing is provided return the fallback\n return fallback\n}\n","import Vue from '../../utils/vue'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport { concat } from '../../utils/array'\nimport { isEvent, isFunction, isUndefined } from '../../utils/inspect'\nimport { computeHref, computeRel, computeTag, isRouterLink } from '../../utils/router'\n\n/**\n * The Link component is used in many other BV components.\n * As such, sharing its props makes supporting all its features easier.\n * However, some components need to modify the defaults for their own purpose.\n * Prefer sharing a fresh copy of the props to ensure mutations\n * do not affect other component references to the props.\n *\n * https://github.com/vuejs/vue-router/blob/dev/src/components/link.js\n * @return {{}}\n */\nexport const propsFactory = () => ({\n href: {\n type: String,\n default: null\n },\n rel: {\n type: String,\n default: null\n },\n target: {\n type: String,\n default: '_self'\n },\n active: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n // router-link specific props\n to: {\n type: [String, Object],\n default: null\n },\n append: {\n type: Boolean,\n default: false\n },\n replace: {\n type: Boolean,\n default: false\n },\n event: {\n type: [String, Array],\n default: 'click'\n },\n activeClass: {\n type: String\n // default: undefined\n },\n exact: {\n type: Boolean,\n default: false\n },\n exactActiveClass: {\n type: String\n // default: undefined\n },\n routerTag: {\n type: String,\n default: 'a'\n },\n // nuxt-link specific prop(s)\n noPrefetch: {\n type: Boolean,\n default: false\n }\n})\n\nexport const props = propsFactory()\n\n// @vue/component\nexport const BLink = /*#__PURE__*/ Vue.extend({\n name: 'BLink',\n mixins: [normalizeSlotMixin],\n inheritAttrs: false,\n props: propsFactory(),\n computed: {\n computedTag() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return computeTag({ to: this.to, disabled: this.disabled }, this)\n },\n isRouterLink() {\n return isRouterLink(this.computedTag)\n },\n computedRel() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return computeRel({ target: this.target, rel: this.rel })\n },\n computedHref() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return computeHref({ to: this.to, href: this.href }, this.computedTag)\n },\n computedProps() {\n return this.isRouterLink ? { ...this.$props, tag: this.routerTag } : {}\n }\n },\n methods: {\n onClick(evt) {\n const evtIsEvent = isEvent(evt)\n const isRouterLink = this.isRouterLink\n const suppliedHandler = this.$listeners.click\n if (evtIsEvent && this.disabled) {\n // Stop event from bubbling up\n evt.stopPropagation()\n // Kill the event loop attached to this specific `EventTarget`\n // Needed to prevent `vue-router` for doing its thing\n evt.stopImmediatePropagation()\n } else {\n /* istanbul ignore next: difficult to test, but we know it works */\n if (isRouterLink && evt.currentTarget.__vue__) {\n // Router links do not emit instance `click` events, so we\n // add in an `$emit('click', evt)` on its Vue instance\n evt.currentTarget.__vue__.$emit('click', evt)\n }\n // Call the suppliedHandler(s), if any provided\n concat(suppliedHandler)\n .filter(h => isFunction(h))\n .forEach(handler => {\n handler(...arguments)\n })\n // Emit the global `$root` click event\n this.$root.$emit('clicked::link', evt)\n }\n // Stop scroll-to-top behavior or navigation on\n // regular links when href is just '#'\n if (evtIsEvent && (this.disabled || (!isRouterLink && this.computedHref === '#'))) {\n evt.preventDefault()\n }\n },\n focus() {\n if (this.$el && this.$el.focus) {\n this.$el.focus()\n }\n },\n blur() {\n if (this.$el && this.$el.blur) {\n this.$el.blur()\n }\n }\n },\n render(h) {\n const tag = this.computedTag\n const rel = this.computedRel\n const href = this.computedHref\n const isRouterLink = this.isRouterLink\n\n const componentData = {\n class: { active: this.active, disabled: this.disabled },\n attrs: {\n ...this.$attrs,\n rel,\n target: this.target,\n tabindex: this.disabled\n ? '-1'\n : isUndefined(this.$attrs.tabindex)\n ? null\n : this.$attrs.tabindex,\n 'aria-disabled': this.disabled ? 'true' : null\n },\n props: this.computedProps\n }\n // Add the event handlers. We must use `nativeOn` for\n // `<router-link>`/`<nuxt-link>` instead of `on`\n componentData[isRouterLink ? 'nativeOn' : 'on'] = {\n // Transfer all listeners (native) to the root element\n ...this.$listeners,\n // We want to overwrite any click handler since our callback\n // will invoke the user supplied handler(s) if `!this.disabled`\n click: this.onClick\n }\n\n // If href attribute exists on <router-link> (even undefined or null) it fails working on\n // SSR, so we explicitly add it here if needed (i.e. if computedHref() is truthy)\n if (href) {\n componentData.attrs.href = href\n } else {\n // Ensure the prop HREF does not exist for router links\n delete componentData.props.href\n }\n\n return h(tag, componentData, this.normalizeSlot('default'))\n }\n})\n","import 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'\n\nconst NAME = 'BBadge'\n\nconst linkProps = linkPropsFactory()\ndelete linkProps.href.default\ndelete linkProps.to.default\n\nexport const props = {\n ...linkProps,\n tag: {\n type: String,\n default: 'span'\n },\n variant: {\n type: String,\n default: () => getComponentConfig(NAME, 'variant')\n },\n pill: {\n type: Boolean,\n default: false\n }\n}\n\n// @vue/component\nexport const BBadge = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, children }) {\n const isBLink = props.href || props.to\n const tag = isBLink ? BLink : props.tag\n\n const componentData = {\n staticClass: 'badge',\n class: [\n props.variant ? `badge-${props.variant}` : 'badge-secondary',\n {\n 'badge-pill': props.pill,\n active: props.active,\n disabled: props.disabled\n }\n ],\n props: isBLink ? pluckProps(linkProps, props) : {}\n }\n\n return h(tag, mergeData(data, componentData), children)\n }\n})\n","import { BBadge } from './badge'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst BadgePlugin = /*#__PURE__*/ pluginFactory({\n components: { BBadge }\n})\n\nexport { BadgePlugin, BBadge }\n","const stripTagsRegex = /(<([^>]+)>)/gi\n\n// Removes any thing that looks like an HTML tag from the supplied string\nexport const stripTags = (text = '') => String(text).replace(stripTagsRegex, '')\n\n// Generate a domProps object for either innerHTML, textContent or nothing\nexport const htmlOrText = (innerHTML, textContent) => {\n return innerHTML ? { innerHTML } : textContent ? { textContent } : {}\n}\n","import 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'\n\nexport const props = {\n ...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}\n\n// @vue/component\nexport const BBreadcrumbLink = /*#__PURE__*/ Vue.extend({\n name: 'BBreadcrumbLink',\n functional: true,\n props,\n render(h, { props: suppliedProps, data, children }) {\n const tag = suppliedProps.active ? 'span' : BLink\n\n const componentData = { props: pluckProps(props, suppliedProps) }\n if (suppliedProps.active) {\n componentData.attrs = { 'aria-current': suppliedProps.ariaCurrent }\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})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { BBreadcrumbLink, props } from './breadcrumb-link'\n\n// @vue/component\nexport const BBreadcrumbItem = /*#__PURE__*/ Vue.extend({\n name: 'BBreadcrumbItem',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n 'li',\n mergeData(data, {\n staticClass: 'breadcrumb-item',\n class: { active: props.active }\n }),\n [h(BBreadcrumbLink, { props }, children)]\n )\n }\n})\n","import 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'\n\nexport const props = {\n items: {\n type: Array,\n default: null\n }\n}\n\n// @vue/component\nexport const BBreadcrumb = /*#__PURE__*/ Vue.extend({\n name: 'BBreadcrumb',\n functional: true,\n props,\n render(h, { props, data, children }) {\n let childNodes = children\n // Build child nodes from items if given.\n if (isArray(props.items)) {\n let activeDefined = false\n childNodes = props.items.map((item, idx) => {\n if (!isObject(item)) {\n item = { text: toString(item) }\n }\n // Copy the value here so we can normalize it.\n let active = item.active\n if (active) {\n activeDefined = true\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, { props: { ...item, active } })\n })\n }\n\n return h('ol', mergeData(data, { staticClass: 'breadcrumb' }), childNodes)\n }\n})\n","import { BBreadcrumb } from './breadcrumb'\nimport { BBreadcrumbItem } from './breadcrumb-item'\nimport { BBreadcrumbLink } from './breadcrumb-link'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst BreadcrumbPlugin = /*#__PURE__*/ pluginFactory({\n components: { BBreadcrumb, BBreadcrumbItem, BBreadcrumbLink }\n})\n\nexport { BreadcrumbPlugin, BBreadcrumb, BBreadcrumbItem, BBreadcrumbLink }\n","/*\n * Key Codes (events)\n */\nimport { freeze } from './object'\n\nconst KEY_CODES = freeze({\n SPACE: 32,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n PAGEUP: 33,\n PAGEDOWN: 34,\n HOME: 36,\n END: 35,\n TAB: 9,\n SHIFT: 16,\n CTRL: 17,\n BACKSPACE: 8,\n ALT: 18,\n PAUSE: 19,\n BREAK: 19,\n INSERT: 45,\n INS: 45,\n DELETE: 46\n})\n\nexport default KEY_CODES\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport KeyCodes from '../../utils/key-codes'\nimport pluckProps from '../../utils/pluck-props'\nimport { concat } from '../../utils/array'\nimport { getComponentConfig } from '../../utils/config'\nimport { addClass, removeClass } from '../../utils/dom'\nimport { isBoolean, isEvent, isFunction } from '../../utils/inspect'\nimport { keys } from '../../utils/object'\nimport { toString } from '../../utils/string'\nimport { BLink, propsFactory as linkPropsFactory } from '../link/link'\n\n// --- Constants --\n\nconst NAME = 'BButton'\n\nconst btnProps = {\n block: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: () => getComponentConfig(NAME, 'size')\n },\n variant: {\n type: String,\n default: () => getComponentConfig(NAME, 'variant')\n },\n type: {\n type: String,\n default: 'button'\n },\n tag: {\n type: String,\n default: 'button'\n },\n pill: {\n type: Boolean,\n default: false\n },\n squared: {\n type: Boolean,\n default: false\n },\n pressed: {\n // Tri-state: `true`, `false` or `null`\n // => On, off, not a toggle\n type: Boolean,\n default: null\n }\n}\n\nconst linkProps = linkPropsFactory()\ndelete linkProps.href.default\ndelete linkProps.to.default\nconst linkPropKeys = keys(linkProps)\n\nexport const props = { ...linkProps, ...btnProps }\n\n// --- Helper methods ---\n\n// Returns `true` if a tag's name equals `name`\nconst tagIs = (tag, name) => toString(tag).toLowerCase() === toString(name).toLowerCase()\n\n// Focus handler for toggle buttons\n// Needs class of 'focus' when focused\nconst handleFocus = evt => {\n if (evt.type === 'focusin') {\n addClass(evt.target, 'focus')\n } else if (evt.type === 'focusout') {\n removeClass(evt.target, 'focus')\n }\n}\n\n// Is the requested button a link?\n// If tag prop is set to `a`, we use a <b-link> to get proper disabled handling\nconst isLink = props => props.href || props.to || tagIs(props.tag, 'a')\n\n// Is the button to be a toggle button?\nconst isToggle = props => isBoolean(props.pressed)\n\n// Is the button \"really\" a button?\nconst isButton = props => !(isLink(props) || (props.tag && !tagIs(props.tag, 'button')))\n\n// Is the requested tag not a button or link?\nconst isNonStandardTag = props => !isLink(props) && !isButton(props)\n\n// Compute required classes (non static classes)\nconst computeClass = props => [\n `btn-${props.variant || getComponentConfig(NAME, 'variant')}`,\n {\n [`btn-${props.size}`]: props.size,\n 'btn-block': props.block,\n 'rounded-pill': props.pill,\n 'rounded-0': props.squared && !props.pill,\n disabled: props.disabled,\n active: props.pressed\n }\n]\n\n// Compute the link props to pass to b-link (if required)\nconst computeLinkProps = props => (isLink(props) ? pluckProps(linkPropKeys, props) : null)\n\n// Compute the attributes for a button\nconst computeAttrs = (props, data) => {\n const button = isButton(props)\n const link = isLink(props)\n const toggle = isToggle(props)\n const nonStandardTag = isNonStandardTag(props)\n const hashLink = link && props.href === '#'\n const role = data.attrs && data.attrs.role ? data.attrs.role : null\n let tabindex = data.attrs ? data.attrs.tabindex : null\n if (nonStandardTag || hashLink) {\n tabindex = '0'\n }\n return {\n // Type only used for \"real\" buttons\n type: button && !link ? props.type : null,\n // Disabled only set on \"real\" buttons\n disabled: button ? props.disabled : null,\n // We add a role of button when the tag is not a link or button for ARIA\n // Don't bork any role provided in `data.attrs` when `isLink` or `isButton`\n // Except when link has `href` of `#`\n role: nonStandardTag || hashLink ? 'button' : role,\n // We set the `aria-disabled` state for non-standard tags\n 'aria-disabled': nonStandardTag ? String(props.disabled) : null,\n // For toggles, we need to set the pressed state for ARIA\n 'aria-pressed': toggle ? String(props.pressed) : null,\n // `autocomplete=\"off\"` is needed in toggle mode to prevent some browsers\n // from remembering the previous setting when using the back button\n autocomplete: toggle ? 'off' : null,\n // `tabindex` is used when the component is not a button\n // Links are tabbable, but don't allow disabled, while non buttons or links\n // are not tabbable, so we mimic that functionality by disabling tabbing\n // when disabled, and adding a `tabindex=\"0\"` to non buttons or non links\n tabindex: props.disabled && !button ? '-1' : tabindex\n }\n}\n\n// @vue/component\nexport const BButton = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, listeners, children }) {\n const toggle = isToggle(props)\n const link = isLink(props)\n const nonStandardTag = isNonStandardTag(props)\n const hashLink = link && props.href === '#'\n const on = {\n keydown(evt) {\n // When the link is a `href=\"#\"` or a non-standard tag (has `role=\"button\"`),\n // we add a keydown handlers for SPACE/ENTER\n /* istanbul ignore next */\n if (props.disabled || !(nonStandardTag || hashLink)) {\n return\n }\n const { keyCode } = evt\n // Add SPACE handler for `href=\"#\"` and ENTER handler for non-standard tags\n if (keyCode === KeyCodes.SPACE || (keyCode === KeyCodes.ENTER && nonStandardTag)) {\n const target = evt.currentTarget || evt.target\n evt.preventDefault()\n target.click()\n }\n },\n click(evt) {\n /* istanbul ignore if: blink/button disabled should handle this */\n if (props.disabled && isEvent(evt)) {\n evt.stopPropagation()\n evt.preventDefault()\n } else if (toggle && listeners && listeners['update:pressed']) {\n // Send `.sync` updates to any \"pressed\" prop (if `.sync` listeners)\n // `concat()` will normalize the value to an array without\n // double wrapping an array value in an array\n concat(listeners['update:pressed']).forEach(fn => {\n if (isFunction(fn)) {\n fn(!props.pressed)\n }\n })\n }\n }\n }\n\n if (toggle) {\n on.focusin = handleFocus\n on.focusout = handleFocus\n }\n\n const componentData = {\n staticClass: 'btn',\n class: computeClass(props),\n props: computeLinkProps(props),\n attrs: computeAttrs(props, data),\n on\n }\n\n return h(link ? BLink : props.tag, mergeData(data, componentData), children)\n }\n})\n","import { BButton } from './button'\nimport { BButtonClose } from './button-close'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst ButtonPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BButton,\n BBtn: BButton,\n BButtonClose,\n BBtnClose: BButtonClose\n }\n})\n\nexport { ButtonPlugin, BButton, BButtonClose }\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { getComponentConfig } from '../../utils/config'\n\nconst NAME = 'BButtonGroup'\n\nexport const props = {\n vertical: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: () => getComponentConfig('BButton', 'size')\n },\n tag: {\n type: String,\n default: 'div'\n },\n ariaRole: {\n type: String,\n default: 'group'\n }\n}\n\n// @vue/component\nexport const BButtonGroup = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n mergeData(data, {\n class: {\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical,\n [`btn-group-${props.size}`]: props.size\n },\n attrs: { role: props.ariaRole }\n }),\n children\n )\n }\n})\n","import { BButtonGroup } from './button-group'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst ButtonGroupPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BButtonGroup,\n BBtnGroup: BButtonGroup\n }\n})\n\nexport { ButtonGroupPlugin, BButtonGroup }\n","import Vue from '../../utils/vue'\nimport { isVisible, selectAll } from '../../utils/dom'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport KeyCodes from '../../utils/key-codes'\n\nconst ITEM_SELECTOR = [\n '.btn:not(.disabled):not([disabled]):not(.dropdown-item)',\n '.form-control:not(.disabled):not([disabled])',\n 'select:not(.disabled):not([disabled])',\n 'input[type=\"checkbox\"]:not(.disabled)',\n 'input[type=\"radio\"]:not(.disabled)'\n].join(',')\n\n// @vue/component\nexport const 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() {\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(evt) {\n if (evt.target === this.$el) {\n evt.preventDefault()\n evt.stopPropagation()\n this.focusFirst(evt)\n }\n },\n stop(evt) {\n evt.preventDefault()\n evt.stopPropagation()\n },\n onKeydown(evt) {\n if (!this.keyNav) {\n /* istanbul ignore next: should never happen */\n return\n }\n const key = evt.keyCode\n const shift = evt.shiftKey\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(item) {\n item && item.focus && item.focus()\n },\n focusFirst() {\n const items = this.getItems()\n this.setItemFocus(items[0])\n },\n focusPrev(evt) {\n let items = this.getItems()\n const index = items.indexOf(evt.target)\n if (index > -1) {\n items = items.slice(0, index).reverse()\n this.setItemFocus(items[0])\n }\n },\n focusNext(evt) {\n let items = this.getItems()\n const index = items.indexOf(evt.target)\n if (index > -1) {\n items = items.slice(index + 1)\n this.setItemFocus(items[0])\n }\n },\n focusLast() {\n const items = this.getItems().reverse()\n this.setItemFocus(items[0])\n },\n getItems() {\n const items = selectAll(ITEM_SELECTOR, this.$el)\n items.forEach(item => {\n // Ensure tabfocus is -1 on any new elements\n item.tabIndex = -1\n })\n return items.filter(el => isVisible(el))\n }\n },\n render(h) {\n return h(\n 'div',\n {\n staticClass: 'btn-toolbar',\n class: { 'justify-content-between': this.justify },\n attrs: {\n role: 'toolbar',\n tabindex: this.keyNav ? '0' : null\n },\n on: this.keyNav\n ? {\n focusin: this.onFocusin,\n keydown: this.onKeydown\n }\n : {}\n },\n [this.normalizeSlot('default')]\n )\n }\n})\n","import { BButtonToolbar } from './button-toolbar'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst ButtonToolbarPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BButtonToolbar,\n BBtnToolbar: BButtonToolbar\n }\n})\n\nexport { ButtonToolbarPlugin, BButtonToolbar }\n","import { keys } from './object'\nimport { isArray, isDate, isObject } from './inspect'\n\n// Assumes both a and b are arrays!\n// Handles when arrays are \"sparse\" (array.every(...) doesn't handle sparse)\nconst compareArrays = (a, b) => {\n if (a.length !== b.length) {\n return false\n }\n let equal = true\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i])\n }\n return equal\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n * Returns boolean true or false\n */\nconst looseEqual = (a, b) => {\n if (a === b) {\n return true\n }\n let aValidType = isDate(a)\n let bValidType = isDate(b)\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false\n }\n aValidType = isArray(a)\n bValidType = isArray(b)\n if (aValidType || bValidType) {\n return aValidType && bValidType ? compareArrays(a, b) : false\n }\n aValidType = isObject(a)\n bValidType = isObject(b)\n if (aValidType || bValidType) {\n /* istanbul ignore if: this if will probably never be called */\n if (!aValidType || !bValidType) {\n return false\n }\n const aKeysCount = keys(a).length\n const bKeysCount = keys(b).length\n if (aKeysCount !== bKeysCount) {\n return false\n }\n for (const key in a) {\n // eslint-disable-next-line no-prototype-builtins\n const aHasKey = a.hasOwnProperty(key)\n // eslint-disable-next-line no-prototype-builtins\n const bHasKey = b.hasOwnProperty(key)\n if ((aHasKey && !bHasKey) || (!aHasKey && bHasKey) || !looseEqual(a[key], b[key])) {\n return false\n }\n }\n }\n return String(a) === String(b)\n}\n\nexport default looseEqual\n","// Date utility functions\nimport identity from './identity'\nimport { concat } from './array'\nimport { isDate, isString } from './inspect'\nimport { toInteger } from './number'\n\n// --- Constants ---\n\nconst RX_DATE = /^\\d+-\\d+-\\d+$/\n\n// --- Date utility methods ---\n\n// Create or clone a date (`new Date(...)` shortcut)\nexport const createDate = (...args) => new Date(...args)\n\n// Parse a date sting, or Date object, into a Date object (with no time information)\nexport const parseYMD = date => {\n if (isString(date) && RX_DATE.test(date.trim())) {\n const [year, month, day] = date.split('-').map(toInteger)\n return createDate(year, month - 1, day)\n } else if (isDate(date)) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate())\n }\n return null\n}\n\n// Format a date object as `YYYY-MM-DD` format\nexport const formatYMD = date => {\n date = parseYMD(date)\n if (!date) {\n return null\n }\n const year = date.getFullYear()\n const month = `0${date.getMonth() + 1}`.slice(-2)\n const day = `0${date.getDate()}`.slice(-2)\n return `${year}-${month}-${day}`\n}\n\n// Given a locale (or locales), resolve the browser available locale\nexport const resolveLocale = (locales, calendar = 'gregory') => /* istanbul ignore next */ {\n locales = concat(locales).filter(identity)\n const fmt = new Intl.DateTimeFormat(locales, { calendar: calendar })\n return fmt.resolvedOptions().locale\n}\n\n// Create a `Intl.DateTimeFormat` formatter function\nexport const createDateFormatter = (locale, options) => /* istanbul ignore next */ {\n const dtf = new Intl.DateTimeFormat(locale, options)\n return dtf.format\n}\n\n// Determine if two dates are the same date (ignoring time portion)\nexport const datesEqual = (date1, date2) => {\n // Returns true of the date portion of two date objects are equal\n // We don't compare the time portion\n return formatYMD(date1) === formatYMD(date2)\n}\n\n// --- Date \"math\" utility methods (for BCalendar component mainly) ---\n\nexport const firstDateOfMonth = date => {\n date = createDate(date)\n date.setDate(1)\n return date\n}\n\nexport const lastDateOfMonth = date => {\n date = createDate(date)\n date.setMonth(date.getMonth() + 1)\n date.setDate(0)\n return date\n}\n\nexport const oneMonthAgo = date => {\n date = createDate(date)\n const month = date.getMonth()\n date.setMonth(month - 1)\n if (date.getMonth() === month) {\n date.setDate(0)\n }\n return date\n}\n\nexport const oneMonthAhead = date => {\n date = createDate(date)\n const month = date.getMonth()\n date.setMonth(month + 1)\n if (date.getMonth() === (month + 2) % 12) {\n date.setDate(0)\n }\n return date\n}\n\nexport const oneYearAgo = date => {\n date = createDate(date)\n const month = date.getMonth()\n date.setMonth(month - 12)\n if (date.getMonth() !== month) {\n date.setDate(0)\n }\n return date\n}\n\nexport const oneYearAhead = date => {\n date = createDate(date)\n const month = date.getMonth()\n date.setMonth(month + 12)\n if (date.getMonth() !== month) {\n date.setDate(0)\n }\n return date\n}\n","/*\n * SSR Safe Client Side ID attribute generation\n * id's can only be generated client side, after mount.\n * this._uid is not synched between server and client.\n */\n\n// @vue/component\nexport default {\n props: {\n id: {\n type: String,\n default: null\n }\n },\n data() {\n return {\n localId_: null\n }\n },\n computed: {\n safeId() {\n // Computed property that returns a dynamic function for creating the ID.\n // Reacts to changes in both .id and .localId_ And regens a new function\n const id = this.id || this.localId_\n\n // We return a function that accepts an optional suffix string\n // So this computed prop looks and works like a method!!!\n // But benefits from Vue's Computed prop caching\n const fn = suffix => {\n if (!id) {\n return null\n }\n suffix = String(suffix || '').replace(/\\s+/g, '_')\n return suffix ? id + '_' + suffix : id\n }\n return fn\n }\n },\n mounted() {\n // mounted only occurs client side\n this.$nextTick(() => {\n // Update dom with auto ID after dom loaded to prevent\n // SSR hydration errors.\n this.localId_ = `__BVID__${this._uid}`\n })\n }\n}\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport identity from '../../utils/identity'\nimport { isUndefinedOrNull } from '../../utils/inspect'\nimport { toFloat } from '../../utils/number'\n\n// Common icon props (should be cloned/spread before using)\nexport const commonIconProps = {\n variant: {\n type: String,\n default: null\n },\n fontScale: {\n type: [Number, String],\n default: 1\n },\n scale: {\n type: [Number, String],\n default: 1\n },\n rotate: {\n type: [Number, String],\n default: 0\n },\n flipH: {\n type: Boolean,\n default: false\n },\n flipV: {\n type: Boolean,\n default: false\n },\n shiftH: {\n type: [Number, String],\n default: 0\n },\n shiftV: {\n type: [Number, String],\n default: 0\n }\n}\n\n// Base attributes needed on all icons\nconst baseAttrs = {\n width: '1em',\n height: '1em',\n viewBox: '0 0 20 20',\n focusable: 'false',\n role: 'img',\n alt: 'icon'\n}\n\n// Shared private base component to reduce bundle/runtime size\n// @vue/component\nexport const BVIconBase = /*#__PURE__*/ Vue.extend({\n name: 'BVIconBase',\n functional: true,\n props: {\n content: {\n type: String\n },\n stacked: {\n type: Boolean,\n default: false\n },\n ...commonIconProps\n },\n render(h, { data, props, children }) {\n const fontScale = Math.max(toFloat(props.fontScale) || 1, 0) || 1\n const scale = Math.max(toFloat(props.scale) || 1, 0) || 1\n const rotate = toFloat(props.rotate) || 0\n const shiftH = toFloat(props.shiftH) || 0\n const shiftV = toFloat(props.shiftV) || 0\n const flipH = props.flipH\n const flipV = props.flipV\n // Compute the transforms\n // Note that order is important as SVG transforms are applied in order from\n // left to right and we want flipping/scale to occur before rotation\n // Note shifting is applied separately\n // Assumes that the viewbox is `0 0 20 20` (`10 10` is the center)\n const hasScale = flipH || flipV || scale !== 1\n const hasTransforms = hasScale || rotate\n const hasShift = shiftH || shiftV\n const transforms = [\n hasTransforms ? 'translate(10 10)' : null,\n hasScale ? `scale(${(flipH ? -1 : 1) * scale} ${(flipV ? -1 : 1) * scale})` : null,\n rotate ? `rotate(${rotate})` : null,\n hasTransforms ? 'translate(-10 -10)' : null\n ].filter(identity)\n\n // Handling stacked icons\n const isStacked = props.stacked\n const hasContent = !isUndefinedOrNull(props.content)\n\n // We wrap the content in a `<g>` for handling the transforms (except shift)\n let $inner = h(\n 'g',\n {\n attrs: { transform: transforms.join(' ') || null },\n domProps: hasContent ? { innerHTML: props.content || '' } : {}\n },\n children\n )\n\n // If needed, we wrap in an additional `<g>` in order to handle the shifting\n if (hasShift) {\n $inner = h(\n 'g',\n { attrs: { transform: `translate(${(20 * shiftH) / 16} ${(-20 * shiftV) / 16})` } },\n [$inner]\n )\n }\n\n return h(\n 'svg',\n mergeData(\n {\n staticClass: 'b-icon bi',\n class: { [`text-${props.variant}`]: !!props.variant },\n attrs: baseAttrs,\n style: isStacked ? {} : { fontSize: fontScale === 1 ? null : `${fontScale * 100}%` }\n },\n // Merge in user supplied data\n data,\n // If icon is stacked, null out some attrs\n isStacked ? { attrs: { width: null, height: null, role: null, alt: null } } : {},\n // These cannot be overridden by users\n {\n attrs: {\n xmlns: isStacked ? null : 'http://www.w3.org/2000/svg',\n fill: 'currentColor'\n }\n }\n ),\n [$inner]\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { kebabCase, pascalCase, trim } from '../../utils/string'\nimport { commonIconProps, BVIconBase } from './icon-base'\n\n/**\n * Icon component generator function\n *\n * @param {string} icon name (minus the leading `BIcon`)\n * @param {string} raw `innerHTML` for SVG\n * @return {VueComponent}\n */\nexport const makeIcon = (name, content) => {\n // For performance reason we pre-compute some values, so that\n // they are not computed on each render of the icon component\n const iconName = `BIcon${pascalCase(name)}`\n const iconNameClass = `bi-${kebabCase(name)}`\n const svgContent = trim(content || '')\n // Return the icon component definition\n return /*#__PURE__*/ Vue.extend({\n name: iconName,\n functional: true,\n props: {\n ...commonIconProps,\n stacked: {\n type: Boolean,\n default: false\n }\n },\n render(h, { data, props }) {\n return h(\n BVIconBase,\n mergeData(data, { staticClass: iconNameClass, props: { ...props, content: svgContent } })\n )\n }\n })\n}\n","// --- BEGIN AUTO-GENERATED FILE ---\n//\n// @IconsVersion: 1.0.0-alpha2\n// @Generated: 2020-02-18T22:15:15.803Z\n//\n// This file is generated on each build. Do not edit this file!\n\n/*!\n * BootstrapVue Icons, generated from Bootstrap Icons 1.0.0-alpha2\n *\n * @link https://icons.getbootstrap.com/\n * @license MIT\n * https://github.com/twbs/icons/blob/master/LICENSE.md\n */\n\nimport { makeIcon } from './helpers/make-icon'\n\n// --- BootstrapVue custom icons ---\n\nexport const BIconBlank = /*#__PURE__*/ makeIcon('Blank', '')\n\n// --- Bootstrap Icons ---\n\nexport const BIconAlarm = /*#__PURE__*/ makeIcon(\n 'Alarm',\n '<path fill-rule=\"evenodd\" d=\"M10 17a6 6 0 100-12 6 6 0 000 12zm0 1a7 7 0 100-14 7 7 0 000 14z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 6.5a.5.5 0 01.5.5v4a.5.5 0 01-.053.224l-1.5 3a.5.5 0 11-.894-.448L9.5 10.882V7a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path d=\"M2.86 7.387A2.5 2.5 0 116.387 3.86 8.035 8.035 0 002.86 7.387zM13.613 3.86a2.5 2.5 0 113.527 3.527 8.035 8.035 0 00-3.527-3.527z\"/><path fill-rule=\"evenodd\" d=\"M13.646 16.146a.5.5 0 01.708 0l1 1a.5.5 0 01-.708.708l-1-1a.5.5 0 010-.708zm-7.292 0a.5.5 0 00-.708 0l-1 1a.5.5 0 00.708.708l1-1a.5.5 0 000-.708zM7.5 2.5A.5.5 0 018 2h4a.5.5 0 010 1H8a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/><path d=\"M9 3h2v2H9V3z\"/>'\n)\n\nexport const BIconAlarmFill = /*#__PURE__*/ makeIcon(\n 'AlarmFill',\n '<path fill-rule=\"evenodd\" d=\"M7.5 2.5A.5.5 0 018 2h4a.5.5 0 010 1h-1v1.07a7.002 7.002 0 013.537 12.26l.817.816a.5.5 0 01-.708.708l-.924-.925A6.967 6.967 0 0110 18a6.967 6.967 0 01-3.722-1.07l-.924.924a.5.5 0 01-.708-.708l.817-.816A7.002 7.002 0 019 4.07V3H8a.5.5 0 01-.5-.5zM2.86 7.387A2.5 2.5 0 116.387 3.86 8.035 8.035 0 002.86 7.387zM15.5 3c-.753 0-1.429.333-1.887.86a8.035 8.035 0 013.527 3.527A2.5 2.5 0 0015.5 3zm-5 4a.5.5 0 00-1 0v3.882l-1.447 2.894a.5.5 0 10.894.448l1.5-3A.5.5 0 0010.5 11V7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconAlertCircle = /*#__PURE__*/ makeIcon(\n 'AlertCircle',\n '<path fill-rule=\"evenodd\" d=\"M10 17a7 7 0 100-14 7 7 0 000 14zm0 1a8 8 0 100-16 8 8 0 000 16z\" clip-rule=\"evenodd\"/><path d=\"M9.002 13a1 1 0 112 0 1 1 0 01-2 0zM9.1 6.995a.905.905 0 111.8 0l-.35 3.507a.553.553 0 01-1.1 0L9.1 6.995z\"/>'\n)\n\nexport const BIconAlertCircleFill = /*#__PURE__*/ makeIcon(\n 'AlertCircleFill',\n '<path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8.998 3a1 1 0 112 0 1 1 0 01-2 0zM10 6a.905.905 0 00-.9.995l.35 3.507a.553.553 0 001.1 0l.35-3.507A.905.905 0 0010 6z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconAlertOctagon = /*#__PURE__*/ makeIcon(\n 'AlertOctagon',\n '<path fill-rule=\"evenodd\" d=\"M6.54 2.146A.5.5 0 016.893 2h6.214a.5.5 0 01.353.146l4.394 4.394a.5.5 0 01.146.353v6.214a.5.5 0 01-.146.353l-4.394 4.394a.5.5 0 01-.353.146H6.893a.5.5 0 01-.353-.146L2.146 13.46A.5.5 0 012 13.107V6.893a.5.5 0 01.146-.353L6.54 2.146zM7.1 3L3 7.1v5.8L7.1 17h5.8l4.1-4.1V7.1L12.9 3H7.1z\" clip-rule=\"evenodd\"/><rect width=\"2\" height=\"2\" x=\"9.002\" y=\"12\" rx=\"1\"/><path d=\"M9.1 6.995a.905.905 0 111.8 0l-.35 3.507a.553.553 0 01-1.1 0L9.1 6.995z\"/>'\n)\n\nexport const BIconAlertOctagonFill = /*#__PURE__*/ makeIcon(\n 'AlertOctagonFill',\n '<path fill-rule=\"evenodd\" d=\"M13.107 2a.5.5 0 01.353.146l4.394 4.394a.5.5 0 01.146.353v6.214a.5.5 0 01-.146.353l-4.394 4.394a.5.5 0 01-.353.146H6.893a.5.5 0 01-.353-.146L2.146 13.46A.5.5 0 012 13.107V6.893a.5.5 0 01.146-.353L6.54 2.146A.5.5 0 016.893 2h6.214zM9.002 13a1 1 0 112 0 1 1 0 01-2 0zM10 6a.905.905 0 00-.9.995l.35 3.507a.553.553 0 001.1 0l.35-3.507A.905.905 0 0010 6z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconAlertSquare = /*#__PURE__*/ makeIcon(\n 'AlertSquare',\n '<path fill-rule=\"evenodd\" d=\"M16 3H4a1 1 0 00-1 1v12a1 1 0 001 1h12a1 1 0 001-1V4a1 1 0 00-1-1zM4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><rect width=\"2\" height=\"2\" x=\"9.002\" y=\"12\" rx=\"1\"/><path d=\"M9.1 6.995a.905.905 0 111.8 0l-.35 3.507a.553.553 0 01-1.1 0L9.1 6.995z\"/>'\n)\n\nexport const BIconAlertSquareFill = /*#__PURE__*/ makeIcon(\n 'AlertSquareFill',\n '<path fill-rule=\"evenodd\" d=\"M2 4a2 2 0 012-2h12a2 2 0 012 2v12a2 2 0 01-2 2H4a2 2 0 01-2-2V4zm7.002 9a1 1 0 112 0 1 1 0 01-2 0zM10 6a.905.905 0 00-.9.995l.35 3.507a.553.553 0 001.1 0l.35-3.507A.905.905 0 0010 6z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconAlertTriangle = /*#__PURE__*/ makeIcon(\n 'AlertTriangle',\n '<path fill-rule=\"evenodd\" d=\"M9.938 4.016a.146.146 0 00-.054.057L3.027 15.74a.176.176 0 00-.002.183c.016.03.037.05.054.06.015.01.034.017.066.017h13.713a.12.12 0 00.066-.017.163.163 0 00.055-.06.176.176 0 00-.003-.183L10.12 4.073a.146.146 0 00-.054-.057.13.13 0 00-.063-.016.13.13 0 00-.064.016zm1.043-.45a1.13 1.13 0 00-1.96 0L2.166 15.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L10.982 3.566z\" clip-rule=\"evenodd\"/><rect width=\"2\" height=\"2\" x=\"9.002\" y=\"13\" rx=\"1\"/><path d=\"M9.1 7.995a.905.905 0 111.8 0l-.35 3.507a.553.553 0 01-1.1 0L9.1 7.995z\"/>'\n)\n\nexport const BIconAlertTriangleFill = /*#__PURE__*/ makeIcon(\n 'AlertTriangleFill',\n '<path fill-rule=\"evenodd\" d=\"M9.022 3.566a1.13 1.13 0 011.96 0l6.857 11.667c.457.778-.092 1.767-.98 1.767H3.144c-.889 0-1.437-.99-.98-1.767L9.022 3.566zM9.002 14a1 1 0 112 0 1 1 0 01-2 0zM10 7a.905.905 0 00-.9.995l.35 3.507a.553.553 0 001.1 0l.35-3.507A.905.905 0 0010 7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArchive = /*#__PURE__*/ makeIcon(\n 'Archive',\n '<path fill-rule=\"evenodd\" d=\"M4 7v7.5c0 .864.642 1.5 1.357 1.5h9.286c.715 0 1.357-.636 1.357-1.5V7h1v7.5c0 1.345-1.021 2.5-2.357 2.5H5.357C4.021 17 3 15.845 3 14.5V7h1z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7.5 9.5A.5.5 0 018 9h4a.5.5 0 010 1H8a.5.5 0 01-.5-.5zM17 4H3v2h14V4zM3 3a1 1 0 00-1 1v2a1 1 0 001 1h14a1 1 0 001-1V4a1 1 0 00-1-1H3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArchiveFill = /*#__PURE__*/ makeIcon(\n 'ArchiveFill',\n '<path fill-rule=\"evenodd\" d=\"M14.643 17C15.979 17 17 15.845 17 14.5V7H3v7.5C3 15.845 4.021 17 5.357 17h9.286zM8 9a.5.5 0 000 1h4a.5.5 0 000-1H8zM3 3a1 1 0 00-1 1v1.5a1 1 0 001 1h14a1 1 0 001-1V4a1 1 0 00-1-1H3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowBarBottom = /*#__PURE__*/ makeIcon(\n 'ArrowBarBottom',\n '<path fill-rule=\"evenodd\" d=\"M13.354 12.146a.5.5 0 010 .708l-3 3a.5.5 0 01-.708 0l-3-3a.5.5 0 01.708-.708L10 14.793l2.646-2.647a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 8a.5.5 0 01.5.5V15a.5.5 0 01-1 0V8.5A.5.5 0 0110 8zM4 5.75a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowBarLeft = /*#__PURE__*/ makeIcon(\n 'ArrowBarLeft',\n '<path fill-rule=\"evenodd\" d=\"M7.854 6.646a.5.5 0 00-.708 0l-3 3a.5.5 0 000 .708l3 3a.5.5 0 00.708-.708L5.207 10l2.647-2.646a.5.5 0 000-.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12 10a.5.5 0 00-.5-.5H5a.5.5 0 000 1h6.5a.5.5 0 00.5-.5zm2.5 6a.5.5 0 01-.5-.5v-11a.5.5 0 011 0v11a.5.5 0 01-.5.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowBarRight = /*#__PURE__*/ makeIcon(\n 'ArrowBarRight',\n '<path fill-rule=\"evenodd\" d=\"M12.146 6.646a.5.5 0 01.708 0l3 3a.5.5 0 010 .708l-3 3a.5.5 0 01-.708-.708L14.793 10l-2.647-2.646a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8 10a.5.5 0 01.5-.5H15a.5.5 0 010 1H8.5A.5.5 0 018 10zm-2.5 6a.5.5 0 01-.5-.5v-11a.5.5 0 011 0v11a.5.5 0 01-.5.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowBarUp = /*#__PURE__*/ makeIcon(\n 'ArrowBarUp',\n '<path fill-rule=\"evenodd\" d=\"M13.354 7.854a.5.5 0 000-.708l-3-3a.5.5 0 00-.708 0l-3 3a.5.5 0 10.708.708L10 5.207l2.646 2.647a.5.5 0 00.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 12a.5.5 0 00.5-.5V5a.5.5 0 00-1 0v6.5a.5.5 0 00.5.5zm-6 2.75a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowClockwise = /*#__PURE__*/ makeIcon(\n 'ArrowClockwise',\n '<path fill-rule=\"evenodd\" d=\"M10 4.5a5.5 5.5 0 105.5 5.5.5.5 0 011 0 6.5 6.5 0 11-3.25-5.63l-.5.865A5.472 5.472 0 0010 4.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10.646 1.646a.5.5 0 01.708 0l2.5 2.5a.5.5 0 010 .708l-2.5 2.5a.5.5 0 01-.708-.708L12.793 4.5l-2.147-2.146a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowCounterclockwise = /*#__PURE__*/ makeIcon(\n 'ArrowCounterclockwise',\n '<path fill-rule=\"evenodd\" d=\"M10 4.5A5.5 5.5 0 114.5 10a.5.5 0 00-1 0 6.5 6.5 0 103.25-5.63l.5.865A5.472 5.472 0 0110 4.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.354 1.646a.5.5 0 00-.708 0l-2.5 2.5a.5.5 0 000 .708l2.5 2.5a.5.5 0 10.708-.708L7.207 4.5l2.147-2.146a.5.5 0 000-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowDown = /*#__PURE__*/ makeIcon(\n 'ArrowDown',\n '<path fill-rule=\"evenodd\" d=\"M6.646 11.646a.5.5 0 01.708 0L10 14.293l2.646-2.647a.5.5 0 01.708.708l-3 3a.5.5 0 01-.708 0l-3-3a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 4.5a.5.5 0 01.5.5v9a.5.5 0 01-1 0V5a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowDownLeft = /*#__PURE__*/ makeIcon(\n 'ArrowDownLeft',\n '<path fill-rule=\"evenodd\" d=\"M5 9.5a.5.5 0 01.5.5v4.5H10a.5.5 0 010 1H5a.5.5 0 01-.5-.5v-5a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M14.354 5.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowDownRight = /*#__PURE__*/ makeIcon(\n 'ArrowDownRight',\n '<path fill-rule=\"evenodd\" d=\"M14 9.5a.5.5 0 01.5.5v5a.5.5 0 01-.5.5H9a.5.5 0 010-1h4.5V10a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4.646 5.646a.5.5 0 01.708 0l9 9a.5.5 0 01-.708.708l-9-9a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowDownShort = /*#__PURE__*/ makeIcon(\n 'ArrowDownShort',\n '<path fill-rule=\"evenodd\" d=\"M6.646 9.646a.5.5 0 01.708 0L10 12.293l2.646-2.647a.5.5 0 01.708.708l-3 3a.5.5 0 01-.708 0l-3-3a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 6.5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V7a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowLeft = /*#__PURE__*/ makeIcon(\n 'ArrowLeft',\n '<path fill-rule=\"evenodd\" d=\"M7.854 6.646a.5.5 0 010 .708L5.207 10l2.647 2.646a.5.5 0 01-.708.708l-3-3a.5.5 0 010-.708l3-3a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4.5 10a.5.5 0 01.5-.5h10.5a.5.5 0 010 1H5a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowLeftRight = /*#__PURE__*/ makeIcon(\n 'ArrowLeftRight',\n '<path fill-rule=\"evenodd\" d=\"M12.146 9.646a.5.5 0 01.708 0l3 3a.5.5 0 010 .708l-3 3a.5.5 0 01-.708-.708L14.793 13l-2.647-2.646a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4 13a.5.5 0 01.5-.5H15a.5.5 0 010 1H4.5A.5.5 0 014 13zm3.854-9.354a.5.5 0 010 .708L5.207 7l2.647 2.646a.5.5 0 01-.708.708l-3-3a.5.5 0 010-.708l3-3a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4.5 7a.5.5 0 01.5-.5h10.5a.5.5 0 010 1H5a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowLeftShort = /*#__PURE__*/ makeIcon(\n 'ArrowLeftShort',\n '<path fill-rule=\"evenodd\" d=\"M9.854 6.646a.5.5 0 010 .708L7.207 10l2.647 2.646a.5.5 0 01-.708.708l-3-3a.5.5 0 010-.708l3-3a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M6.5 10a.5.5 0 01.5-.5h6.5a.5.5 0 010 1H7a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowRepeat = /*#__PURE__*/ makeIcon(\n 'ArrowRepeat',\n '<path fill-rule=\"evenodd\" d=\"M4 9.5a.5.5 0 00-.5.5 6.5 6.5 0 0012.13 3.25.5.5 0 00-.866-.5A5.5 5.5 0 014.5 10a.5.5 0 00-.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4.354 9.146a.5.5 0 00-.708 0l-2 2a.5.5 0 00.708.708L4 10.207l1.646 1.647a.5.5 0 00.708-.708l-2-2zM15.947 10.5a.5.5 0 00.5-.5 6.5 6.5 0 00-12.13-3.25.5.5 0 10.866.5A5.5 5.5 0 0115.448 10a.5.5 0 00.5.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M18.354 8.146a.5.5 0 00-.708 0L16 9.793l-1.646-1.647a.5.5 0 00-.708.708l2 2a.5.5 0 00.708 0l2-2a.5.5 0 000-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowRight = /*#__PURE__*/ makeIcon(\n 'ArrowRight',\n '<path fill-rule=\"evenodd\" d=\"M12.146 6.646a.5.5 0 01.708 0l3 3a.5.5 0 010 .708l-3 3a.5.5 0 01-.708-.708L14.793 10l-2.647-2.646a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4 10a.5.5 0 01.5-.5H15a.5.5 0 010 1H4.5A.5.5 0 014 10z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowRightShort = /*#__PURE__*/ makeIcon(\n 'ArrowRightShort',\n '<path fill-rule=\"evenodd\" d=\"M10.146 6.646a.5.5 0 01.708 0l3 3a.5.5 0 010 .708l-3 3a.5.5 0 01-.708-.708L12.793 10l-2.647-2.646a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M6 10a.5.5 0 01.5-.5H13a.5.5 0 010 1H6.5A.5.5 0 016 10z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowUp = /*#__PURE__*/ makeIcon(\n 'ArrowUp',\n '<path fill-rule=\"evenodd\" d=\"M10 5.5a.5.5 0 01.5.5v9a.5.5 0 01-1 0V6a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.646 4.646a.5.5 0 01.708 0l3 3a.5.5 0 01-.708.708L10 5.707 7.354 8.354a.5.5 0 11-.708-.708l3-3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowUpDown = /*#__PURE__*/ makeIcon(\n 'ArrowUpDown',\n '<path fill-rule=\"evenodd\" d=\"M13 5.5a.5.5 0 01.5.5v9a.5.5 0 01-1 0V6a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12.646 4.646a.5.5 0 01.708 0l3 3a.5.5 0 01-.708.708L13 5.707l-2.646 2.647a.5.5 0 01-.708-.708l3-3zm-9 7a.5.5 0 01.708 0L7 14.293l2.646-2.647a.5.5 0 01.708.708l-3 3a.5.5 0 01-.708 0l-3-3a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7 4.5a.5.5 0 01.5.5v9a.5.5 0 01-1 0V5a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowUpLeft = /*#__PURE__*/ makeIcon(\n 'ArrowUpLeft',\n '<path fill-rule=\"evenodd\" d=\"M4.5 6a.5.5 0 01.5-.5h5a.5.5 0 010 1H5.5V11a.5.5 0 01-1 0V6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4.646 5.646a.5.5 0 01.708 0l9 9a.5.5 0 01-.708.708l-9-9a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowUpRight = /*#__PURE__*/ makeIcon(\n 'ArrowUpRight',\n '<path fill-rule=\"evenodd\" d=\"M8.5 6a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V6.5H9a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M14.354 5.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowUpShort = /*#__PURE__*/ makeIcon(\n 'ArrowUpShort',\n '<path fill-rule=\"evenodd\" d=\"M10 7.5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V8a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.646 6.646a.5.5 0 01.708 0l3 3a.5.5 0 01-.708.708L10 7.707l-2.646 2.647a.5.5 0 01-.708-.708l3-3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowsAngleContract = /*#__PURE__*/ makeIcon(\n 'ArrowsAngleContract',\n '<path fill-rule=\"evenodd\" d=\"M11.5 4.036a.5.5 0 01.5.5v3.5h3.5a.5.5 0 010 1h-4a.5.5 0 01-.5-.5v-4a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M16.354 3.646a.5.5 0 010 .708l-4.5 4.5a.5.5 0 01-.708-.708l4.5-4.5a.5.5 0 01.708 0zm-7.5 7.5a.5.5 0 010 .708l-4.5 4.5a.5.5 0 01-.708-.708l4.5-4.5a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4.036 11.5a.5.5 0 01.5-.5h4a.5.5 0 01.5.5v4a.5.5 0 01-1 0V12h-3.5a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowsAngleExpand = /*#__PURE__*/ makeIcon(\n 'ArrowsAngleExpand',\n '<path fill-rule=\"evenodd\" d=\"M4 11.5a.5.5 0 01.5.5v3.5H8a.5.5 0 010 1H4a.5.5 0 01-.5-.5v-4a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8.854 11.11a.5.5 0 010 .708l-4.5 4.5a.5.5 0 11-.708-.707l4.5-4.5a.5.5 0 01.708 0zm7.464-7.464a.5.5 0 010 .708l-4.5 4.5a.5.5 0 11-.707-.708l4.5-4.5a.5.5 0 01.707 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M11.5 4a.5.5 0 01.5-.5h4a.5.5 0 01.5.5v4a.5.5 0 01-1 0V4.5H12a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowsCollapse = /*#__PURE__*/ makeIcon(\n 'ArrowsCollapse',\n '<path fill-rule=\"evenodd\" d=\"M4 10a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11A.5.5 0 014 10zm6-7a.5.5 0 01.5.5V8a.5.5 0 01-1 0V3.5A.5.5 0 0110 3z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12.354 5.646a.5.5 0 010 .708l-2 2a.5.5 0 01-.708 0l-2-2a.5.5 0 11.708-.708L10 7.293l1.646-1.647a.5.5 0 01.708 0zM10 17a.5.5 0 00.5-.5V12a.5.5 0 00-1 0v4.5a.5.5 0 00.5.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12.354 14.354a.5.5 0 000-.708l-2-2a.5.5 0 00-.708 0l-2 2a.5.5 0 00.708.708L10 12.707l1.646 1.647a.5.5 0 00.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowsExpand = /*#__PURE__*/ makeIcon(\n 'ArrowsExpand',\n '<path fill-rule=\"evenodd\" d=\"M4 10a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11A.5.5 0 014 10zm6-1.5a.5.5 0 00.5-.5V3.5a.5.5 0 00-1 0V8a.5.5 0 00.5.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12.354 5.854a.5.5 0 000-.708l-2-2a.5.5 0 00-.708 0l-2 2a.5.5 0 10.708.708L10 4.207l1.646 1.647a.5.5 0 00.708 0zM10 11.5a.5.5 0 01.5.5v4.5a.5.5 0 01-1 0V12a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12.354 14.146a.5.5 0 010 .708l-2 2a.5.5 0 01-.708 0l-2-2a.5.5 0 01.708-.708L10 15.793l1.646-1.647a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconArrowsFullscreen = /*#__PURE__*/ makeIcon(\n 'ArrowsFullscreen',\n '<path fill-rule=\"evenodd\" d=\"M4 11.5a.5.5 0 01.5.5v3.5H8a.5.5 0 010 1H4a.5.5 0 01-.5-.5v-4a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8.854 11.11a.5.5 0 010 .708l-4.5 4.5a.5.5 0 11-.708-.707l4.5-4.5a.5.5 0 01.708 0zm7.464-7.464a.5.5 0 010 .708l-4.5 4.5a.5.5 0 11-.707-.708l4.5-4.5a.5.5 0 01.707 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M11.5 4a.5.5 0 01.5-.5h4a.5.5 0 01.5.5v4a.5.5 0 01-1 0V4.5H12a.5.5 0 01-.5-.5zm4.5 7.5a.5.5 0 00-.5.5v3.5H12a.5.5 0 000 1h4a.5.5 0 00.5-.5v-4a.5.5 0 00-.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M11.146 11.11a.5.5 0 000 .708l4.5 4.5a.5.5 0 00.708-.707l-4.5-4.5a.5.5 0 00-.708 0zM3.682 3.646a.5.5 0 000 .708l4.5 4.5a.5.5 0 10.707-.708l-4.5-4.5a.5.5 0 00-.707 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8.5 4a.5.5 0 00-.5-.5H4a.5.5 0 00-.5.5v4a.5.5 0 001 0V4.5H8a.5.5 0 00.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconAt = /*#__PURE__*/ makeIcon(\n 'At',\n '<path fill-rule=\"evenodd\" d=\"M15.106 9.222c0-2.967-2.249-5.032-5.482-5.032-3.35 0-5.646 2.318-5.646 5.702 0 3.493 2.235 5.708 5.762 5.708.862 0 1.689-.123 2.304-.335v-.862c-.43.199-1.354.328-2.29.328-2.926 0-4.813-1.88-4.813-4.798 0-2.844 1.921-4.881 4.594-4.881 2.735 0 4.608 1.688 4.608 4.156 0 1.682-.554 2.769-1.416 2.769-.492 0-.772-.28-.772-.76V7.206h-1.032v.834h-.11c-.266-.595-.881-.964-1.6-.964-1.4 0-2.378 1.162-2.378 2.823 0 1.737.957 2.906 2.379 2.906.8 0 1.415-.39 1.709-1.087h.11c.081.67.703 1.148 1.503 1.148 1.572 0 2.57-1.415 2.57-3.643zm-7.177.704c0-1.197.54-1.907 1.456-1.907.93 0 1.524.738 1.524 1.907s-.601 1.914-1.538 1.914c-.895 0-1.442-.725-1.442-1.914z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconAward = /*#__PURE__*/ makeIcon(\n 'Award',\n '<path d=\"M10 2l1.669.864 1.858.282.842 1.68 1.337 1.32L15.4 8l.306 1.854-1.337 1.32-.842 1.68-1.858.282L10 14l-1.669-.864-1.858-.282-.842-1.68-1.337-1.32L4.6 8l-.306-1.854 1.337-1.32.842-1.68 1.858-.282L10 2z\"/><path d=\"M6 13.794V18l4-1 4 1v-4.206l-2.018.306L10 15.126 8.018 14.1 6 13.794z\"/>'\n)\n\nexport const BIconBackspace = /*#__PURE__*/ makeIcon(\n 'Backspace',\n '<path fill-rule=\"evenodd\" d=\"M8.603 4h7.08a1 1 0 011 1v10a1 1 0 01-1 1h-7.08a1 1 0 01-.76-.35L3 10l4.844-5.65A1 1 0 018.603 4zm7.08-1a2 2 0 012 2v10a2 2 0 01-2 2h-7.08a2 2 0 01-1.519-.698L2.241 10.65a1 1 0 010-1.302L7.084 3.7A2 2 0 018.603 3h7.08z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7.83 7.146a.5.5 0 000 .708l5 5a.5.5 0 00.707-.708l-5-5a.5.5 0 00-.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M13.537 7.146a.5.5 0 010 .708l-5 5a.5.5 0 01-.708-.708l5-5a.5.5 0 01.707 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBackspaceFill = /*#__PURE__*/ makeIcon(\n 'BackspaceFill',\n '<path fill-rule=\"evenodd\" d=\"M17.683 5a2 2 0 00-2-2h-7.08a2 2 0 00-1.519.698L2.241 9.35a1 1 0 000 1.302l4.843 5.65A2 2 0 008.603 17h7.08a2 2 0 002-2V5zM7.829 7.854a.5.5 0 11.707-.708l2.147 2.147 2.146-2.147a.5.5 0 11.707.708L11.39 10l2.146 2.146a.5.5 0 01-.707.708l-2.146-2.147-2.147 2.147a.5.5 0 01-.707-.708L9.976 10 7.829 7.854z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBackspaceReverse = /*#__PURE__*/ makeIcon(\n 'BackspaceReverse',\n '<path fill-rule=\"evenodd\" d=\"M11.08 4H4a1 1 0 00-1 1v10a1 1 0 001 1h7.08a1 1 0 00.76-.35L16.682 10l-4.844-5.65A1 1 0 0011.08 4zM4 3a2 2 0 00-2 2v10a2 2 0 002 2h7.08a2 2 0 001.519-.698l4.843-5.651a1 1 0 000-1.302L12.6 3.7a2 2 0 00-1.52-.7H4z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M11.854 7.146a.5.5 0 010 .708l-5 5a.5.5 0 01-.708-.708l5-5a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M6.146 7.146a.5.5 0 000 .708l5 5a.5.5 0 00.708-.708l-5-5a.5.5 0 00-.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBackspaceReverseFill = /*#__PURE__*/ makeIcon(\n 'BackspaceReverseFill',\n '<path fill-rule=\"evenodd\" d=\"M2 5a2 2 0 012-2h7.08a2 2 0 011.519.698l4.843 5.651a1 1 0 010 1.302L12.6 16.3a2 2 0 01-1.52.7H4a2 2 0 01-2-2V5zm9.854 2.854a.5.5 0 00-.708-.708L9 9.293 6.854 7.146a.5.5 0 10-.708.708L8.293 10l-2.147 2.146a.5.5 0 00.708.708L9 10.707l2.146 2.147a.5.5 0 00.708-.708L9.707 10l2.147-2.146z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBarChart = /*#__PURE__*/ makeIcon(\n 'BarChart',\n '<path fill-rule=\"evenodd\" d=\"M6 13H4v3h2v-3zm5-4H9v7h2V9zm5-5h-2v12h2V4zm-2-1a1 1 0 00-1 1v12a1 1 0 001 1h2a1 1 0 001-1V4a1 1 0 00-1-1h-2zM8 9a1 1 0 011-1h2a1 1 0 011 1v7a1 1 0 01-1 1H9a1 1 0 01-1-1V9zm-5 4a1 1 0 011-1h2a1 1 0 011 1v3a1 1 0 01-1 1H4a1 1 0 01-1-1v-3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBarChartFill = /*#__PURE__*/ makeIcon(\n 'BarChartFill',\n '<rect width=\"4\" height=\"5\" x=\"3\" y=\"12\" rx=\"1\"/><rect width=\"4\" height=\"9\" x=\"8\" y=\"8\" rx=\"1\"/><rect width=\"4\" height=\"14\" x=\"13\" y=\"3\" rx=\"1\"/>'\n)\n\nexport const BIconBattery = /*#__PURE__*/ makeIcon(\n 'Battery',\n '<path fill-rule=\"evenodd\" d=\"M14 7H4a1 1 0 00-1 1v4a1 1 0 001 1h10a1 1 0 001-1V8a1 1 0 00-1-1zM4 6a2 2 0 00-2 2v4a2 2 0 002 2h10a2 2 0 002-2V8a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path d=\"M16.5 11.5a1.5 1.5 0 000-3v3z\"/>'\n)\n\nexport const BIconBatteryCharging = /*#__PURE__*/ makeIcon(\n 'BatteryCharging',\n '<path d=\"M16.5 11.5a1.5 1.5 0 000-3v3z\"/><path fill-rule=\"evenodd\" d=\"M11.585 4.568a.5.5 0 01.226.579l-1.134 3.686h1.99a.5.5 0 01.364.843l-5.334 5.667a.5.5 0 01-.842-.49l1.135-3.686H6a.5.5 0 01-.364-.843l5.333-5.667a.5.5 0 01.616-.09z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8.332 6H4a2 2 0 00-2 2v4a2 2 0 002 2h2.072l.307-1H4a1 1 0 01-1-1V8a1 1 0 011-1h3.391l.941-1zM6.45 8H4v4h1.313a1.5 1.5 0 01-.405-2.361L6.45 8zm.976 5l-.308 1H8.96l.21-.224h.001l.73-.776H8.53l-.085.09.028-.09H7.426zm1.354-1H7.733l.257-.833H6a.5.5 0 01-.364-.843l.793-.843L7.823 8h1.373l-2.039 2.167h1.51a.492.492 0 01.166.028.5.5 0 01.312.619L8.78 12zm.69 0h1.373l1.395-1.482.793-.842a.5.5 0 00-.364-.843h-1.99L10.933 8H9.887l-.166.54-.199.646a.5.5 0 00.478.647h1.51L9.47 12zm.725-5h1.046l.308-1H9.706l-.942 1h1.374l.085-.09-.028.09zm2.4-1l-.308 1H14a1 1 0 011 1v4a1 1 0 01-1 1h-2.724l-.942 1H14a2 2 0 002-2V8a2 2 0 00-2-2h-1.405zm-.378 6H14v-1.98a1.499 1.499 0 01-.241.341L12.217 12zM14 8.646V8h-.646a1.5 1.5 0 01.646.646z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBatteryFull = /*#__PURE__*/ makeIcon(\n 'BatteryFull',\n '<path fill-rule=\"evenodd\" d=\"M14 7H4a1 1 0 00-1 1v4a1 1 0 001 1h10a1 1 0 001-1V8a1 1 0 00-1-1zM4 6a2 2 0 00-2 2v4a2 2 0 002 2h10a2 2 0 002-2V8a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path d=\"M4 8h10v4H4V8zm12.5 3.5a1.5 1.5 0 000-3v3z\"/>'\n)\n\nexport const BIconBell = /*#__PURE__*/ makeIcon(\n 'Bell',\n '<path d=\"M10 18a2 2 0 002-2H8a2 2 0 002 2z\"/><path fill-rule=\"evenodd\" d=\"M10 3.918l-.797.161A4.002 4.002 0 006 8c0 .628-.134 2.197-.459 3.742-.16.767-.376 1.566-.663 2.258h10.244c-.287-.692-.502-1.49-.663-2.258C14.134 10.197 14 8.628 14 8a4.002 4.002 0 00-3.203-3.92L10 3.917zM16.22 14c.223.447.482.801.78 1H3c.299-.199.557-.553.78-1C4.68 12.2 5 8.88 5 8c0-2.42 1.72-4.44 4.005-4.901a1 1 0 111.99 0A5.002 5.002 0 0115 8c0 .88.32 4.2 1.22 6z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBellFill = /*#__PURE__*/ makeIcon(\n 'BellFill',\n '<path d=\"M10 18a2 2 0 002-2H8a2 2 0 002 2zm.995-14.901a1 1 0 10-1.99 0A5.002 5.002 0 005 8c0 1.098-.5 6-2 7h14c-1.5-1-2-5.902-2-7 0-2.42-1.72-4.44-4.005-4.901z\"/>'\n)\n\nexport const BIconBlockquoteLeft = /*#__PURE__*/ makeIcon(\n 'BlockquoteLeft',\n '<path fill-rule=\"evenodd\" d=\"M4 5.5a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm5 3a.5.5 0 01.5-.5h6a.5.5 0 010 1h-6a.5.5 0 01-.5-.5zm0 3a.5.5 0 01.5-.5h6a.5.5 0 010 1h-6a.5.5 0 01-.5-.5zm-5 3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/><path d=\"M5.734 8.352a6.586 6.586 0 00-.445.275 1.94 1.94 0 00-.346.299 1.38 1.38 0 00-.252.369c-.058.129-.1.295-.123.498h.282c.242 0 .431.06.568.182.14.117.21.29.21.521a.697.697 0 01-.187.463c-.12.14-.289.21-.503.21-.336 0-.577-.109-.721-.327-.145-.223-.217-.514-.217-.873 0-.254.055-.485.164-.692.11-.21.242-.398.399-.562.16-.168.33-.31.51-.428.179-.117.33-.213.45-.287l.211.352zm2.168 0a6.588 6.588 0 00-.445.275 1.94 1.94 0 00-.346.299c-.113.12-.199.246-.257.375a1.75 1.75 0 00-.118.492h.282c.242 0 .431.06.568.182.14.117.21.29.21.521a.697.697 0 01-.187.463c-.12.14-.289.21-.504.21-.335 0-.576-.109-.72-.327-.145-.223-.217-.514-.217-.873 0-.254.055-.485.164-.692.11-.21.242-.398.398-.562.16-.168.33-.31.51-.428.18-.117.33-.213.451-.287l.211.352z\"/>'\n)\n\nexport const BIconBlockquoteRight = /*#__PURE__*/ makeIcon(\n 'BlockquoteRight',\n '<path fill-rule=\"evenodd\" d=\"M4 5.5a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm0 3a.5.5 0 01.5-.5h6a.5.5 0 010 1h-6a.5.5 0 01-.5-.5zm0 3a.5.5 0 01.5-.5h6a.5.5 0 010 1h-6a.5.5 0 01-.5-.5zm0 3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/><path d=\"M14.168 8.352c.184.105.332.197.445.275.114.074.229.174.346.299.11.117.193.24.252.369s.1.295.123.498h-.281c-.243 0-.432.06-.569.182-.14.117-.21.29-.21.521 0 .164.062.319.187.463.121.14.289.21.504.21.336 0 .576-.109.72-.327.145-.223.217-.514.217-.873 0-.254-.054-.485-.164-.692a2.436 2.436 0 00-.398-.562c-.16-.168-.33-.31-.51-.428-.18-.117-.33-.213-.451-.287l-.211.352zm-2.168 0c.184.105.332.197.445.275.114.074.229.174.346.299.113.12.2.246.258.375.055.125.094.289.117.492h-.281c-.242 0-.432.06-.569.182-.14.117-.21.29-.21.521 0 .164.062.319.187.463.121.14.289.21.504.21.336 0 .576-.109.72-.327.145-.223.217-.514.217-.873 0-.254-.054-.485-.164-.692a2.438 2.438 0 00-.398-.562c-.16-.168-.33-.31-.51-.428-.18-.117-.33-.213-.451-.287L12 8.352z\"/>'\n)\n\nexport const BIconBook = /*#__PURE__*/ makeIcon(\n 'Book',\n '<path fill-rule=\"evenodd\" d=\"M5.214 3.072c1.599-.32 3.702-.363 5.14 1.074a.5.5 0 01.146.354v11a.5.5 0 01-.854.354c-.843-.844-2.115-1.059-3.47-.92-1.344.14-2.66.617-3.452 1.013A.5.5 0 012 15.5v-11a.5.5 0 01.276-.447L2.5 4.5l-.224-.447.002-.001.004-.002.013-.006a5.116 5.116 0 01.22-.103 12.958 12.958 0 012.7-.869zM3 4.82v9.908c.846-.343 1.944-.672 3.074-.788 1.143-.118 2.387-.023 3.426.56V4.718c-1.063-.929-2.631-.956-4.09-.664A11.958 11.958 0 003 4.82z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M14.786 3.072c-1.598-.32-3.702-.363-5.14 1.074A.5.5 0 009.5 4.5v11a.5.5 0 00.854.354c.844-.844 2.115-1.059 3.47-.92 1.344.14 2.66.617 3.452 1.013A.5.5 0 0018 15.5v-11a.5.5 0 00-.276-.447L17.5 4.5l.224-.447-.002-.001-.004-.002-.013-.006-.047-.023a12.582 12.582 0 00-.799-.34 12.96 12.96 0 00-2.073-.609zM17 4.82v9.908c-.846-.343-1.944-.672-3.074-.788-1.143-.118-2.386-.023-3.426.56V4.718c1.063-.929 2.631-.956 4.09-.664A11.956 11.956 0 0117 4.82z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBookHalfFill = /*#__PURE__*/ makeIcon(\n 'BookHalfFill',\n '<path fill-rule=\"evenodd\" d=\"M5.214 3.072c1.599-.32 3.702-.363 5.14 1.074a.5.5 0 01.146.354v11a.5.5 0 01-.854.354c-.843-.844-2.115-1.059-3.47-.92-1.344.14-2.66.617-3.452 1.013A.5.5 0 012 15.5v-11a.5.5 0 01.276-.447L2.5 4.5l-.224-.447.002-.001.004-.002.013-.006a5.116 5.116 0 01.22-.103 12.958 12.958 0 012.7-.869zM3 4.82v9.908c.846-.343 1.944-.672 3.074-.788 1.143-.118 2.387-.023 3.426.56V4.718c-1.063-.929-2.631-.956-4.09-.664A11.958 11.958 0 003 4.82z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M14.786 3.072c-1.598-.32-3.702-.363-5.14 1.074A.5.5 0 009.5 4.5v11a.5.5 0 00.854.354c.844-.844 2.115-1.059 3.47-.92 1.344.14 2.66.617 3.452 1.013A.5.5 0 0018 15.5v-11a.5.5 0 00-.276-.447L17.5 4.5l.224-.447-.002-.001-.004-.002-.013-.006-.047-.023a12.582 12.582 0 00-.799-.34 12.96 12.96 0 00-2.073-.609z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBookmark = /*#__PURE__*/ makeIcon(\n 'Bookmark',\n '<path fill-rule=\"evenodd\" d=\"M10 14l5 3V5a2 2 0 00-2-2H7a2 2 0 00-2 2v12l5-3zm-4 1.234l4-2.4 4 2.4V5a1 1 0 00-1-1H7a1 1 0 00-1 1v10.234z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBookmarkFill = /*#__PURE__*/ makeIcon(\n 'BookmarkFill',\n '<path fill-rule=\"evenodd\" d=\"M5 5a2 2 0 012-2h6a2 2 0 012 2v12l-5-3-5 3V5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBootstrap = /*#__PURE__*/ makeIcon(\n 'Bootstrap',\n '<path fill-rule=\"evenodd\" d=\"M14 3H6a3 3 0 00-3 3v8a3 3 0 003 3h8a3 3 0 003-3V6a3 3 0 00-3-3zM6 2a4 4 0 00-4 4v8a4 4 0 004 4h8a4 4 0 004-4V6a4 4 0 00-4-4H6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10.537 14H7.062V5.545h3.398c1.588 0 2.543.809 2.543 2.11 0 .884-.65 1.675-1.482 1.816v.1c1.143.117 1.904.931 1.904 2.033 0 1.488-1.084 2.396-2.888 2.396zM8.375 6.658v2.467h1.558c1.16 0 1.764-.428 1.764-1.23 0-.78-.568-1.237-1.541-1.237H8.375zm1.898 6.229H8.375v-2.725h1.822c1.236 0 1.887.463 1.887 1.348 0 .896-.627 1.377-1.811 1.377z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBootstrapFill = /*#__PURE__*/ makeIcon(\n 'BootstrapFill',\n '<path fill-rule=\"evenodd\" d=\"M6.002 2a4 4 0 00-4 4v8a4 4 0 004 4h8a4 4 0 004-4V6a4 4 0 00-4-4h-8zm1.06 12h3.475c1.804 0 2.888-.908 2.888-2.396 0-1.102-.761-1.916-1.904-2.034v-.1c.832-.14 1.482-.93 1.482-1.816 0-1.3-.955-2.11-2.543-2.11H7.063V14zm1.313-4.875V6.658h1.78c.974 0 1.542.457 1.542 1.237 0 .802-.604 1.23-1.764 1.23H8.375zm0 3.762h1.898c1.184 0 1.81-.48 1.81-1.377 0-.885-.65-1.348-1.886-1.348H8.375v2.725z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBootstrapReboot = /*#__PURE__*/ makeIcon(\n 'BootstrapReboot',\n '<path fill-rule=\"evenodd\" d=\"M3.161 10a6.84 6.84 0 106.842-6.84.58.58 0 110-1.16 8 8 0 11-6.556 3.412l-.663-.577a.58.58 0 01.227-.997l2.52-.69a.58.58 0 01.728.633l-.332 2.592a.58.58 0 01-.956.364l-.643-.56A6.812 6.812 0 003.16 10zm5.228-.079V7.277h1.57c.881 0 1.416.499 1.416 1.32 0 .84-.505 1.324-1.386 1.324h-1.6zm0 3.75v-2.828h1.57l1.498 2.828h1.314l-1.646-3.006c.897-.3 1.427-1.106 1.427-2.1 0-1.37-.943-2.246-2.456-2.246H7.248v7.352h1.141z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBoxArrowBottomLeft = /*#__PURE__*/ makeIcon(\n 'BoxArrowBottomLeft',\n '<path fill-rule=\"evenodd\" d=\"M15 3.5A1.5 1.5 0 0116.5 5v8a1.5 1.5 0 01-1.5 1.5h-4a.5.5 0 010-1h4a.5.5 0 00.5-.5V5a.5.5 0 00-.5-.5H7a.5.5 0 00-.5.5v4a.5.5 0 01-1 0V5A1.5 1.5 0 017 3.5h8zm-11 7a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h5a.5.5 0 000-1H4.5V11a.5.5 0 00-.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M3.646 16.354a.5.5 0 00.708 0l8-8a.5.5 0 00-.708-.708l-8 8a.5.5 0 000 .708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBoxArrowBottomRight = /*#__PURE__*/ makeIcon(\n 'BoxArrowBottomRight',\n '<path fill-rule=\"evenodd\" d=\"M5 3.5A1.5 1.5 0 003.5 5v8A1.5 1.5 0 005 14.5h4a.5.5 0 000-1H5a.5.5 0 01-.5-.5V5a.5.5 0 01.5-.5h8a.5.5 0 01.5.5v4a.5.5 0 001 0V5A1.5 1.5 0 0013 3.5H5zm11 7a.5.5 0 01.5.5v5a.5.5 0 01-.5.5h-5a.5.5 0 010-1h4.5V11a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M16.354 16.354a.5.5 0 01-.708 0l-8-8a.5.5 0 11.708-.708l8 8a.5.5 0 010 .708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBoxArrowDown = /*#__PURE__*/ makeIcon(\n 'BoxArrowDown',\n '<path fill-rule=\"evenodd\" d=\"M6.646 13.646a.5.5 0 01.708 0L10 16.293l2.646-2.647a.5.5 0 01.708.708l-3 3a.5.5 0 01-.708 0l-3-3a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 6.5a.5.5 0 01.5.5v9a.5.5 0 01-1 0V7a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4.5 4A1.5 1.5 0 016 2.5h8A1.5 1.5 0 0115.5 4v7a1.5 1.5 0 01-1.5 1.5h-1.5a.5.5 0 010-1H14a.5.5 0 00.5-.5V4a.5.5 0 00-.5-.5H6a.5.5 0 00-.5.5v7a.5.5 0 00.5.5h1.5a.5.5 0 010 1H6A1.5 1.5 0 014.5 11V4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBoxArrowLeft = /*#__PURE__*/ makeIcon(\n 'BoxArrowLeft',\n '<path fill-rule=\"evenodd\" d=\"M6.354 13.354a.5.5 0 000-.708L3.707 10l2.647-2.646a.5.5 0 10-.708-.708l-3 3a.5.5 0 000 .708l3 3a.5.5 0 00.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M13.5 10a.5.5 0 00-.5-.5H4a.5.5 0 000 1h9a.5.5 0 00.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M16 15.5a1.5 1.5 0 001.5-1.5V6A1.5 1.5 0 0016 4.5H9A1.5 1.5 0 007.5 6v1.5a.5.5 0 001 0V6a.5.5 0 01.5-.5h7a.5.5 0 01.5.5v8a.5.5 0 01-.5.5H9a.5.5 0 01-.5-.5v-1.5a.5.5 0 00-1 0V14A1.5 1.5 0 009 15.5h7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBoxArrowRight = /*#__PURE__*/ makeIcon(\n 'BoxArrowRight',\n '<path fill-rule=\"evenodd\" d=\"M13.646 13.354a.5.5 0 010-.708L16.293 10l-2.647-2.646a.5.5 0 01.708-.708l3 3a.5.5 0 010 .708l-3 3a.5.5 0 01-.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M6.5 10a.5.5 0 01.5-.5h9a.5.5 0 010 1H7a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4 15.5A1.5 1.5 0 012.5 14V6A1.5 1.5 0 014 4.5h7A1.5 1.5 0 0112.5 6v1.5a.5.5 0 01-1 0V6a.5.5 0 00-.5-.5H4a.5.5 0 00-.5.5v8a.5.5 0 00.5.5h7a.5.5 0 00.5-.5v-1.5a.5.5 0 011 0V14a1.5 1.5 0 01-1.5 1.5H4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBoxArrowUp = /*#__PURE__*/ makeIcon(\n 'BoxArrowUp',\n '<path fill-rule=\"evenodd\" d=\"M6.646 6.354a.5.5 0 00.708 0L10 3.707l2.646 2.647a.5.5 0 00.708-.708l-3-3a.5.5 0 00-.708 0l-3 3a.5.5 0 000 .708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 13.5a.5.5 0 00.5-.5V4a.5.5 0 00-1 0v9a.5.5 0 00.5.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4.5 16A1.5 1.5 0 006 17.5h8a1.5 1.5 0 001.5-1.5V9A1.5 1.5 0 0014 7.5h-1.5a.5.5 0 000 1H14a.5.5 0 01.5.5v7a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V9a.5.5 0 01.5-.5h1.5a.5.5 0 000-1H6A1.5 1.5 0 004.5 9v7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBoxArrowUpLeft = /*#__PURE__*/ makeIcon(\n 'BoxArrowUpLeft',\n '<path fill-rule=\"evenodd\" d=\"M16.5 15a1.5 1.5 0 01-1.5 1.5H7A1.5 1.5 0 015.5 15v-4a.5.5 0 011 0v4a.5.5 0 00.5.5h8a.5.5 0 00.5-.5V7a.5.5 0 00-.5-.5h-4a.5.5 0 010-1h4A1.5 1.5 0 0116.5 7v8zm-7-11a.5.5 0 00-.5-.5H4a.5.5 0 00-.5.5v5a.5.5 0 001 0V4.5H9a.5.5 0 00.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M3.646 3.646a.5.5 0 000 .708l8 8a.5.5 0 00.708-.708l-8-8a.5.5 0 00-.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBoxArrowUpRight = /*#__PURE__*/ makeIcon(\n 'BoxArrowUpRight',\n '<path fill-rule=\"evenodd\" d=\"M3.5 15A1.5 1.5 0 005 16.5h8a1.5 1.5 0 001.5-1.5v-4a.5.5 0 00-1 0v4a.5.5 0 01-.5.5H5a.5.5 0 01-.5-.5V7a.5.5 0 01.5-.5h4a.5.5 0 000-1H5A1.5 1.5 0 003.5 7v8zm7-11a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M16.354 3.646a.5.5 0 010 .708l-8 8a.5.5 0 01-.708-.708l8-8a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBraces = /*#__PURE__*/ makeIcon(\n 'Braces',\n '<path d=\"M4.114 10.063V9.9c1.005-.102 1.497-.615 1.497-1.6V6.503c0-1.094.39-1.538 1.354-1.538h.273V4h-.376C5.25 4 4.49 4.759 4.49 6.352v1.524c0 1.094-.376 1.456-1.49 1.456v1.299c1.114 0 1.49.362 1.49 1.456v1.524c0 1.593.759 2.352 2.372 2.352h.376v-.964h-.273c-.964 0-1.354-.444-1.354-1.538v-1.798c0-.984-.492-1.497-1.497-1.6zM15.886 9.9v.163c-1.005.103-1.497.616-1.497 1.6v1.798c0 1.094-.39 1.538-1.354 1.538h-.273v.964h.376c1.613 0 2.372-.759 2.372-2.352v-1.524c0-1.094.376-1.456 1.49-1.456V9.332c-1.114 0-1.49-.362-1.49-1.456V6.352C15.51 4.759 14.75 4 13.138 4h-.376v.964h.273c.964 0 1.354.444 1.354 1.538V8.3c0 .984.492 1.497 1.497 1.6z\"/>'\n)\n\nexport const BIconBrightnessFillHigh = /*#__PURE__*/ makeIcon(\n 'BrightnessFillHigh',\n '<circle cx=\"10\" cy=\"10\" r=\"4\"/><path fill-rule=\"evenodd\" d=\"M10 2a.5.5 0 01.5.5v2a.5.5 0 01-1 0v-2A.5.5 0 0110 2zm0 13a.5.5 0 01.5.5v2a.5.5 0 01-1 0v-2a.5.5 0 01.5-.5zm8-5a.5.5 0 01-.5.5h-2a.5.5 0 010-1h2a.5.5 0 01.5.5zM5 10a.5.5 0 01-.5.5h-2a.5.5 0 010-1h2a.5.5 0 01.5.5zm10.657-5.657a.5.5 0 010 .707l-1.414 1.414a.5.5 0 01-.707-.707l1.414-1.414a.5.5 0 01.707 0zm-9.193 9.193a.5.5 0 010 .707L5.05 15.657a.5.5 0 01-.707-.707l1.414-1.414a.5.5 0 01.707 0zm9.193 2.121a.5.5 0 01-.707 0l-1.414-1.414a.5.5 0 01.707-.707l1.414 1.414a.5.5 0 010 .707zM6.464 6.464a.5.5 0 01-.707 0L4.343 5.05a.5.5 0 01.707-.707l1.414 1.414a.5.5 0 010 .707z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBrightnessFillLow = /*#__PURE__*/ makeIcon(\n 'BrightnessFillLow',\n '<circle cx=\"10\" cy=\"10\" r=\"4\"/><circle cx=\"10\" cy=\"4.5\" r=\".5\"/><circle cx=\"10\" cy=\"15.5\" r=\".5\"/><circle cx=\"15.5\" cy=\"10\" r=\".5\" transform=\"rotate(90 15.5 10)\"/><circle cx=\"4.5\" cy=\"10\" r=\".5\" transform=\"rotate(90 4.5 10)\"/><circle cx=\"13.889\" cy=\"6.111\" r=\".5\" transform=\"rotate(45 13.89 6.11)\"/><circle cx=\"6.111\" cy=\"13.889\" r=\".5\" transform=\"rotate(45 6.11 13.89)\"/><circle cx=\"13.889\" cy=\"13.889\" r=\".5\" transform=\"rotate(135 13.89 13.89)\"/><circle cx=\"6.111\" cy=\"6.111\" r=\".5\" transform=\"rotate(135 6.11 6.11)\"/>'\n)\n\nexport const BIconBrightnessHigh = /*#__PURE__*/ makeIcon(\n 'BrightnessHigh',\n '<path fill-rule=\"evenodd\" d=\"M10 13a3 3 0 100-6 3 3 0 000 6zm0 1a4 4 0 100-8 4 4 0 000 8zm0-12a.5.5 0 01.5.5v2a.5.5 0 01-1 0v-2A.5.5 0 0110 2zm0 13a.5.5 0 01.5.5v2a.5.5 0 01-1 0v-2a.5.5 0 01.5-.5zm8-5a.5.5 0 01-.5.5h-2a.5.5 0 010-1h2a.5.5 0 01.5.5zM5 10a.5.5 0 01-.5.5h-2a.5.5 0 010-1h2a.5.5 0 01.5.5zm10.657-5.657a.5.5 0 010 .707l-1.414 1.414a.5.5 0 11-.707-.707l1.414-1.414a.5.5 0 01.707 0zm-9.193 9.193a.5.5 0 010 .707L5.05 15.657a.5.5 0 01-.707-.707l1.414-1.414a.5.5 0 01.707 0zm9.193 2.121a.5.5 0 01-.707 0l-1.414-1.414a.5.5 0 01.707-.707l1.414 1.414a.5.5 0 010 .707zM6.464 6.464a.5.5 0 01-.707 0L4.343 5.05a.5.5 0 01.707-.707l1.414 1.414a.5.5 0 010 .707z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBrightnessLow = /*#__PURE__*/ makeIcon(\n 'BrightnessLow',\n '<path fill-rule=\"evenodd\" d=\"M10 13a3 3 0 100-6 3 3 0 000 6zm0 1a4 4 0 100-8 4 4 0 000 8z\" clip-rule=\"evenodd\"/><circle cx=\"10\" cy=\"4.5\" r=\".5\"/><circle cx=\"10\" cy=\"15.5\" r=\".5\"/><circle cx=\"15.5\" cy=\"10\" r=\".5\" transform=\"rotate(90 15.5 10)\"/><circle cx=\"4.5\" cy=\"10\" r=\".5\" transform=\"rotate(90 4.5 10)\"/><circle cx=\"13.889\" cy=\"6.111\" r=\".5\" transform=\"rotate(45 13.89 6.11)\"/><circle cx=\"6.111\" cy=\"13.889\" r=\".5\" transform=\"rotate(45 6.11 13.89)\"/><circle cx=\"13.889\" cy=\"13.889\" r=\".5\" transform=\"rotate(135 13.89 13.89)\"/><circle cx=\"6.111\" cy=\"6.111\" r=\".5\" transform=\"rotate(135 6.11 6.11)\"/>'\n)\n\nexport const BIconBrush = /*#__PURE__*/ makeIcon(\n 'Brush',\n '<path d=\"M17.213 3.018a.572.572 0 01.755.05.57.57 0 01.058.746c-.941 1.268-3.982 5.293-6.426 7.736a12.89 12.89 0 01-1.952 1.596c-.508.339-1.167.234-1.599-.197-.416-.416-.53-1.047-.213-1.543.347-.542.888-1.273 1.643-1.977 2.521-2.35 6.476-5.44 7.734-6.411z\"/><path d=\"M9 14a2 2 0 01-2 2c-1 0-2 0-3.5-.5s.5-1 1-1.5 1.395-2 2.5-2a2 2 0 012 2z\"/>'\n)\n\nexport const BIconBucket = /*#__PURE__*/ makeIcon(\n 'Bucket',\n '<path fill-rule=\"evenodd\" d=\"M10 3.5A4.5 4.5 0 005.5 8h-1a5.5 5.5 0 1111 0h-1A4.5 4.5 0 0010 3.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M3.61 7.687A.5.5 0 014 7.5h12a.5.5 0 01.488.608l-1.826 8.217a1.5 1.5 0 01-1.464 1.175H6.802a1.5 1.5 0 01-1.464-1.175L3.512 8.108a.5.5 0 01.098-.42zm1.013.813l1.691 7.608a.5.5 0 00.488.392h6.396a.5.5 0 00.488-.392l1.69-7.608H4.624z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBucketFill = /*#__PURE__*/ makeIcon(\n 'BucketFill',\n '<path fill-rule=\"evenodd\" d=\"M10 3.5A4.5 4.5 0 005.5 8h-1a5.5 5.5 0 1111 0h-1A4.5 4.5 0 0010 3.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M3.61 7.687A.5.5 0 014 7.5h12a.5.5 0 01.488.608l-1.826 8.217a1.5 1.5 0 01-1.464 1.175H6.802a1.5 1.5 0 01-1.464-1.175L3.512 8.108a.5.5 0 01.098-.42z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconBuilding = /*#__PURE__*/ makeIcon(\n 'Building',\n '<path fill-rule=\"evenodd\" d=\"M17.285 2.089a.5.5 0 01.215.411v15a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V16h-1v1.5a.5.5 0 01-.5.5H3a.5.5 0 01-.5-.5v-6a.5.5 0 01.418-.493l5.582-.93V5.5a.5.5 0 01.324-.468l8-3a.5.5 0 01.46.057zM9.5 5.846V10.5a.5.5 0 01-.418.493l-5.582.93V17h8v-1.5a.5.5 0 01.5-.5h2a.5.5 0 01.5.5V17h2V3.221l-7 2.625z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8.5 17.5v-7h1v7h-1z\" clip-rule=\"evenodd\"/><path d=\"M4.5 13h1v1h-1v-1zm2 0h1v1h-1v-1zm-2 2h1v1h-1v-1zm2 0h1v1h-1v-1zm6-10h1v1h-1V5zm2 0h1v1h-1V5zm-4 2h1v1h-1V7zm2 0h1v1h-1V7zm2 0h1v1h-1V7zm-2 2h1v1h-1V9zm2 0h1v1h-1V9zm-4 0h1v1h-1V9zm0 2h1v1h-1v-1zm2 0h1v1h-1v-1zm2 0h1v1h-1v-1zm-4 2h1v1h-1v-1zm2 0h1v1h-1v-1zm2 0h1v1h-1v-1z\"/>'\n)\n\nexport const BIconBullseye = /*#__PURE__*/ makeIcon(\n 'Bullseye',\n '<path fill-rule=\"evenodd\" d=\"M10 17a7 7 0 100-14 7 7 0 000 14zm0 1a8 8 0 100-16 8 8 0 000 16z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 15a5 5 0 100-10 5 5 0 000 10zm0 1a6 6 0 100-12 6 6 0 000 12z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 13a3 3 0 100-6 3 3 0 000 6zm0 1a4 4 0 100-8 4 4 0 000 8z\" clip-rule=\"evenodd\"/><path d=\"M11.5 10a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0z\"/>'\n)\n\nexport const BIconCalendar = /*#__PURE__*/ makeIcon(\n 'Calendar',\n '<path fill-rule=\"evenodd\" d=\"M16 2H4a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2zM3 5.857C3 5.384 3.448 5 4 5h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H4c-.552 0-1-.384-1-.857V5.857z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8.5 9a1 1 0 100-2 1 1 0 000 2zm3 0a1 1 0 100-2 1 1 0 000 2zm3 0a1 1 0 100-2 1 1 0 000 2zm-9 3a1 1 0 100-2 1 1 0 000 2zm3 0a1 1 0 100-2 1 1 0 000 2zm3 0a1 1 0 100-2 1 1 0 000 2zm3 0a1 1 0 100-2 1 1 0 000 2zm-9 3a1 1 0 100-2 1 1 0 000 2zm3 0a1 1 0 100-2 1 1 0 000 2zm3 0a1 1 0 100-2 1 1 0 000 2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCalendarFill = /*#__PURE__*/ makeIcon(\n 'CalendarFill',\n '<path d=\"M2 4a2 2 0 012-2h12a2 2 0 012 2H2z\"/><path fill-rule=\"evenodd\" d=\"M2 5h16v11a2 2 0 01-2 2H4a2 2 0 01-2-2V5zm6.5 4a1 1 0 100-2 1 1 0 000 2zm4-1a1 1 0 11-2 0 1 1 0 012 0zm2 1a1 1 0 100-2 1 1 0 000 2zm-8 2a1 1 0 11-2 0 1 1 0 012 0zm2 1a1 1 0 100-2 1 1 0 000 2zm4-1a1 1 0 11-2 0 1 1 0 012 0zm2 1a1 1 0 100-2 1 1 0 000 2zm-8 2a1 1 0 11-2 0 1 1 0 012 0zm2 1a1 1 0 100-2 1 1 0 000 2zm4-1a1 1 0 11-2 0 1 1 0 012 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCamera = /*#__PURE__*/ makeIcon(\n 'Camera',\n '<path d=\"M11 7c-1.657 0-4 1.343-4 3a4 4 0 014-4v1z\"/><path fill-rule=\"evenodd\" d=\"M16.333 5h-2.015A5.97 5.97 0 0011 4a5.972 5.972 0 00-3.318 1H3.667C2.747 5 2 5.746 2 6.667v6.666C2 14.253 2.746 15 3.667 15h4.015c.95.632 2.091 1 3.318 1a5.973 5.973 0 003.318-1h2.015c.92 0 1.667-.746 1.667-1.667V6.667C18 5.747 17.254 5 16.333 5zM3.5 7a.5.5 0 100-1 .5.5 0 000 1zm7.5 8a5 5 0 100-10 5 5 0 000 10z\" clip-rule=\"evenodd\"/><path d=\"M4 5a1 1 0 011-1h1a1 1 0 010 2H5a1 1 0 01-1-1z\"/>'\n)\n\nexport const BIconCameraVideo = /*#__PURE__*/ makeIcon(\n 'CameraVideo',\n '<path fill-rule=\"evenodd\" d=\"M4.667 5.5c-.645 0-1.167.522-1.167 1.167v6.666c0 .645.522 1.167 1.167 1.167h6.666c.645 0 1.167-.522 1.167-1.167V6.667c0-.645-.522-1.167-1.167-1.167H4.667zM2.5 6.667C2.5 5.47 3.47 4.5 4.667 4.5h6.666c1.197 0 2.167.97 2.167 2.167v6.666c0 1.197-.97 2.167-2.167 2.167H4.667A2.167 2.167 0 012.5 13.333V6.667z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M13.25 7.65l2.768-1.605a.318.318 0 01.482.263v7.384c0 .228-.26.393-.482.264l-2.767-1.605-.502.865 2.767 1.605c.859.498 1.984-.095 1.984-1.129V6.308c0-1.033-1.125-1.626-1.984-1.128L12.75 6.785l.502.865z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCameraVideoFill = /*#__PURE__*/ makeIcon(\n 'CameraVideoFill',\n '<path d=\"M4.667 5h6.666C12.253 5 13 5.746 13 6.667v6.666c0 .92-.746 1.667-1.667 1.667H4.667C3.747 15 3 14.254 3 13.333V6.667C3 5.747 3.746 5 4.667 5z\"/><path d=\"M9.404 10.697l6.363 3.692c.54.313 1.233-.066 1.233-.697V6.308c0-.63-.692-1.01-1.233-.696L9.404 9.304a.802.802 0 000 1.393z\"/>'\n)\n\nexport const BIconCapslock = /*#__PURE__*/ makeIcon(\n 'Capslock',\n '<path fill-rule=\"evenodd\" d=\"M9.27 3.047a1 1 0 011.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H13.5v1a1 1 0 01-1 1h-5a1 1 0 01-1-1v-1H3.654c-.875 0-1.328-1.045-.73-1.684L9.27 3.047zm7.076 7.453L10 3.731 3.654 10.5H6.5a1 1 0 011 1v1h5v-1a1 1 0 011-1h2.846zm-9.846 5a1 1 0 011-1h5a1 1 0 011 1v1a1 1 0 01-1 1h-5a1 1 0 01-1-1v-1zm6 0h-5v1h5v-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCapslockFill = /*#__PURE__*/ makeIcon(\n 'CapslockFill',\n '<path fill-rule=\"evenodd\" d=\"M9.27 3.047a1 1 0 011.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H13.5v1a1 1 0 01-1 1h-5a1 1 0 01-1-1v-1H3.654c-.875 0-1.328-1.045-.73-1.684L9.27 3.047zM6.5 15.5a1 1 0 011-1h5a1 1 0 011 1v1a1 1 0 01-1 1h-5a1 1 0 01-1-1v-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChat = /*#__PURE__*/ makeIcon(\n 'Chat',\n '<path fill-rule=\"evenodd\" d=\"M8.207 13.293L7.5 14a5.5 5.5 0 110-11h5a5.5 5.5 0 110 11s-1.807 2.169-4.193 2.818C7.887 16.933 7.449 17 7 17c.291-.389.488-.74.617-1.052C8.149 14.649 7.5 14 7.5 14c.707-.707.708-.707.708-.706h.001l.002.003.004.004.01.01a1.184 1.184 0 01.074.084c.039.047.085.108.134.183.097.15.206.36.284.626.114.386.154.855.047 1.394.717-.313 1.37-.765 1.895-1.201a10.266 10.266 0 001.013-.969l.05-.056.01-.012m0 0A1 1 0 0112.5 13a4.5 4.5 0 100-9h-5a4.5 4.5 0 000 9 1 1 0 01.707.293\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChatFill = /*#__PURE__*/ makeIcon(\n 'ChatFill',\n '<path fill-rule=\"evenodd\" d=\"M7.5 14s.65.65.117 1.948A4.821 4.821 0 017 17c.449 0 .887-.067 1.307-.181C10.692 16.169 12.5 14 12.5 14a5.5 5.5 0 100-11h-5a5.5 5.5 0 100 11z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCheck = /*#__PURE__*/ makeIcon(\n 'Check',\n '<path fill-rule=\"evenodd\" d=\"M15.854 5.646a.5.5 0 010 .708l-7 7a.5.5 0 01-.708 0l-3.5-3.5a.5.5 0 11.708-.708L8.5 12.293l6.646-6.647a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCheckBox = /*#__PURE__*/ makeIcon(\n 'CheckBox',\n '<path fill-rule=\"evenodd\" d=\"M17.354 4.646a.5.5 0 010 .708l-7 7a.5.5 0 01-.708 0l-3-3a.5.5 0 11.708-.708L10 11.293l6.646-6.647a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M3.5 15A1.5 1.5 0 005 16.5h10a1.5 1.5 0 001.5-1.5v-5a.5.5 0 00-1 0v5a.5.5 0 01-.5.5H5a.5.5 0 01-.5-.5V5a.5.5 0 01.5-.5h8a.5.5 0 000-1H5A1.5 1.5 0 003.5 5v10z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCheckCircle = /*#__PURE__*/ makeIcon(\n 'CheckCircle',\n '<path fill-rule=\"evenodd\" d=\"M17.354 4.646a.5.5 0 010 .708l-7 7a.5.5 0 01-.708 0l-3-3a.5.5 0 11.708-.708L10 11.293l6.646-6.647a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 4.5a5.5 5.5 0 105.5 5.5.5.5 0 011 0 6.5 6.5 0 11-3.25-5.63.5.5 0 11-.5.865A5.472 5.472 0 0010 4.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChevronCompactDown = /*#__PURE__*/ makeIcon(\n 'ChevronCompactDown',\n '<path fill-rule=\"evenodd\" d=\"M3.553 8.776a.5.5 0 01.67-.223L10 11.44l5.776-2.888a.5.5 0 11.448.894l-6 3a.5.5 0 01-.448 0l-6-3a.5.5 0 01-.223-.67z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChevronCompactLeft = /*#__PURE__*/ makeIcon(\n 'ChevronCompactLeft',\n '<path fill-rule=\"evenodd\" d=\"M11.224 3.553a.5.5 0 01.223.67L8.56 10l2.888 5.776a.5.5 0 11-.894.448l-3-6a.5.5 0 010-.448l3-6a.5.5 0 01.67-.223z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChevronCompactRight = /*#__PURE__*/ makeIcon(\n 'ChevronCompactRight',\n '<path fill-rule=\"evenodd\" d=\"M8.776 3.553a.5.5 0 01.671.223l3 6a.5.5 0 010 .448l-3 6a.5.5 0 11-.894-.448L11.44 10 8.553 4.224a.5.5 0 01.223-.671z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChevronCompactUp = /*#__PURE__*/ makeIcon(\n 'ChevronCompactUp',\n '<path fill-rule=\"evenodd\" d=\"M9.776 7.553a.5.5 0 01.448 0l6 3a.5.5 0 11-.448.894L10 8.56l-5.776 2.888a.5.5 0 11-.448-.894l6-3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChevronDown = /*#__PURE__*/ makeIcon(\n 'ChevronDown',\n '<path fill-rule=\"evenodd\" d=\"M3.646 6.646a.5.5 0 01.708 0L10 12.293l5.646-5.647a.5.5 0 01.708.708l-6 6a.5.5 0 01-.708 0l-6-6a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChevronLeft = /*#__PURE__*/ makeIcon(\n 'ChevronLeft',\n '<path fill-rule=\"evenodd\" d=\"M13.354 3.646a.5.5 0 010 .708L7.707 10l5.647 5.646a.5.5 0 01-.708.708l-6-6a.5.5 0 010-.708l6-6a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChevronRight = /*#__PURE__*/ makeIcon(\n 'ChevronRight',\n '<path fill-rule=\"evenodd\" d=\"M6.646 3.646a.5.5 0 01.708 0l6 6a.5.5 0 010 .708l-6 6a.5.5 0 01-.708-.708L12.293 10 6.646 4.354a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconChevronUp = /*#__PURE__*/ makeIcon(\n 'ChevronUp',\n '<path fill-rule=\"evenodd\" d=\"M9.646 6.646a.5.5 0 01.708 0l6 6a.5.5 0 01-.708.708L10 7.707l-5.646 5.647a.5.5 0 01-.708-.708l6-6z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCircle = /*#__PURE__*/ makeIcon(\n 'Circle',\n '<path fill-rule=\"evenodd\" d=\"M10 17a7 7 0 100-14 7 7 0 000 14zm0 1a8 8 0 100-16 8 8 0 000 16z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCircleFill = /*#__PURE__*/ makeIcon(\n 'CircleFill',\n '<circle cx=\"10\" cy=\"10\" r=\"8\"/>'\n)\n\nexport const BIconCircleHalf = /*#__PURE__*/ makeIcon(\n 'CircleHalf',\n '<path fill-rule=\"evenodd\" d=\"M10 17V3a7 7 0 000 14zm0 1a8 8 0 100-16 8 8 0 000 16z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCircleSlash = /*#__PURE__*/ makeIcon(\n 'CircleSlash',\n '<path fill-rule=\"evenodd\" d=\"M10 1.5a8.5 8.5 0 100 17 8.5 8.5 0 000-17zM5.071 4.347a7.5 7.5 0 0110.582 10.582L5.071 4.347zm-.724.724a7.5 7.5 0 0010.582 10.582L4.347 5.071z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconClock = /*#__PURE__*/ makeIcon(\n 'Clock',\n '<path fill-rule=\"evenodd\" d=\"M10 17a7 7 0 100-14 7 7 0 000 14zm8-7a8 8 0 11-16 0 8 8 0 0116 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 4a.5.5 0 01.5.5V10a.5.5 0 01-.5.5H5.5a.5.5 0 010-1h4v-5A.5.5 0 0110 4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconClockFill = /*#__PURE__*/ makeIcon(\n 'ClockFill',\n '<path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM5.5 9.5h4v-5a.5.5 0 011 0V10a.5.5 0 01-.5.5H5.5a.5.5 0 010-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCloud = /*#__PURE__*/ makeIcon(\n 'Cloud',\n '<path fill-rule=\"evenodd\" d=\"M6.887 9.2l-.964-.165A2.5 2.5 0 105.5 14h10a1.5 1.5 0 00.237-2.982l-1.038-.164.216-1.028a4 4 0 10-7.843-1.587l-.185.96zm9.084.341a5 5 0 00-9.88-1.492A3.5 3.5 0 105.5 15h9.999a2.5 2.5 0 00.394-4.968c.033-.16.06-.324.077-.49z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCloudDownload = /*#__PURE__*/ makeIcon(\n 'CloudDownload',\n '<path d=\"M6.887 7.2l-.964-.165A2.5 2.5 0 105.5 12H8v1H5.5a3.5 3.5 0 11.59-6.95 5.002 5.002 0 119.804 1.98A2.501 2.501 0 0115.5 13H12v-1h3.5a1.5 1.5 0 00.237-2.981L14.7 8.854l.216-1.028a4 4 0 10-7.843-1.587l-.185.96z\"/><path fill-rule=\"evenodd\" d=\"M7 14.5a.5.5 0 01.707 0L10 16.793l2.293-2.293a.5.5 0 11.707.707l-2.646 2.647a.5.5 0 01-.708 0L7 15.207a.5.5 0 010-.707z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 8a.5.5 0 01.5.5v8a.5.5 0 01-1 0v-8A.5.5 0 0110 8z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCloudFill = /*#__PURE__*/ makeIcon(\n 'CloudFill',\n '<path fill-rule=\"evenodd\" d=\"M5.5 15a3.5 3.5 0 11.59-6.95 5.002 5.002 0 119.804 1.98A2.5 2.5 0 0115.5 15h-10z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCloudUpload = /*#__PURE__*/ makeIcon(\n 'CloudUpload',\n '<path d=\"M6.887 8.2l-.964-.165A2.5 2.5 0 105.5 13H8v1H5.5a3.5 3.5 0 11.59-6.95 5.002 5.002 0 119.804 1.98A2.501 2.501 0 0115.5 14H12v-1h3.5a1.5 1.5 0 00.237-2.982L14.7 9.854l.216-1.028a4 4 0 10-7.843-1.587l-.185.96z\"/><path fill-rule=\"evenodd\" d=\"M7 10.854a.5.5 0 00.707 0L10 8.56l2.293 2.293a.5.5 0 00.707-.707L10.354 7.5a.5.5 0 00-.708 0L7 10.146a.5.5 0 000 .708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 8a.5.5 0 01.5.5v8a.5.5 0 01-1 0v-8A.5.5 0 0110 8z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCode = /*#__PURE__*/ makeIcon(\n 'Code',\n '<path fill-rule=\"evenodd\" d=\"M7.854 6.146a.5.5 0 010 .708L4.707 10l3.147 3.146a.5.5 0 01-.708.708l-3.5-3.5a.5.5 0 010-.708l3.5-3.5a.5.5 0 01.708 0zm4.292 0a.5.5 0 000 .708L15.293 10l-3.147 3.146a.5.5 0 00.708.708l3.5-3.5a.5.5 0 000-.708l-3.5-3.5a.5.5 0 00-.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCodeSlash = /*#__PURE__*/ makeIcon(\n 'CodeSlash',\n '<path fill-rule=\"evenodd\" d=\"M6.854 6.146a.5.5 0 010 .708L3.707 10l3.147 3.146a.5.5 0 01-.708.708l-3.5-3.5a.5.5 0 010-.708l3.5-3.5a.5.5 0 01.708 0zm6.292 0a.5.5 0 000 .708L16.293 10l-3.147 3.146a.5.5 0 00.708.708l3.5-3.5a.5.5 0 000-.708l-3.5-3.5a.5.5 0 00-.708 0zm-.999-3.124a.5.5 0 01.33.625l-4 13a.5.5 0 11-.955-.294l4-13a.5.5 0 01.625-.33z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconColumns = /*#__PURE__*/ makeIcon(\n 'Columns',\n '<path fill-rule=\"evenodd\" d=\"M17 4H3v12h14V4zM3 3a1 1 0 00-1 1v12a1 1 0 001 1h14a1 1 0 001-1V4a1 1 0 00-1-1H3z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.5 16V4h1v12h-1zm0-8H3V7h6.5v1zm7.5 5h-6.5v-1H17v1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconColumnsGutters = /*#__PURE__*/ makeIcon(\n 'ColumnsGutters',\n '<path fill-rule=\"evenodd\" d=\"M8 3H3v3h5V3zM3 2a1 1 0 00-1 1v3a1 1 0 001 1h5a1 1 0 001-1V3a1 1 0 00-1-1H3zm14 12h-5v3h5v-3zm-5-1a1 1 0 00-1 1v3a1 1 0 001 1h5a1 1 0 001-1v-3a1 1 0 00-1-1h-5zm-4-3H3v7h5v-7zM3 9a1 1 0 00-1 1v7a1 1 0 001 1h5a1 1 0 001-1v-7a1 1 0 00-1-1H3zm14-6h-5v7h5V3zm-5-1a1 1 0 00-1 1v7a1 1 0 001 1h5a1 1 0 001-1V3a1 1 0 00-1-1h-5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCommand = /*#__PURE__*/ makeIcon(\n 'Command',\n '<path fill-rule=\"evenodd\" d=\"M4 5.5A1.5 1.5 0 005.5 7H7V5.5a1.5 1.5 0 10-3 0zM8 8V5.5A2.5 2.5 0 105.5 8H8zm8-2.5A1.5 1.5 0 0114.5 7H13V5.5a1.5 1.5 0 013 0zM12 8V5.5A2.5 2.5 0 1114.5 8H12zm-8 6.5A1.5 1.5 0 015.5 13H7v1.5a1.5 1.5 0 01-3 0zM8 12v2.5A2.5 2.5 0 115.5 12H8zm8 2.5a1.5 1.5 0 00-1.5-1.5H13v1.5a1.5 1.5 0 003 0zM12 12v2.5a2.5 2.5 0 102.5-2.5H12z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12 8H8v4h4V8zM7 7v6h6V7H7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCompass = /*#__PURE__*/ makeIcon(\n 'Compass',\n '<path fill-rule=\"evenodd\" d=\"M10 17.016a6.5 6.5 0 100-13 6.5 6.5 0 000 13zm0 1a7.5 7.5 0 100-15 7.5 7.5 0 000 15z\" clip-rule=\"evenodd\"/><rect width=\"4\" height=\"2\" x=\"8\" y=\"2\" rx=\"1\"/><path d=\"M8.94 9.44l4.95-2.83-2.83 4.95-4.95 2.83 2.83-4.95z\"/>'\n)\n\nexport const BIconCone = /*#__PURE__*/ makeIcon(\n 'Cone',\n '<path d=\"M9.03 3.88c.252-1.01 1.688-1.01 1.94 0L14 16H6L9.03 3.88z\"/><path fill-rule=\"evenodd\" d=\"M3.5 16a.5.5 0 01.5-.5h12a.5.5 0 010 1H4a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconConeStriped = /*#__PURE__*/ makeIcon(\n 'ConeStriped',\n '<path fill-rule=\"evenodd\" d=\"M9.879 13.015a.5.5 0 01.242 0l6 1.5a.5.5 0 01.037.96l-6 2a.499.499 0 01-.316 0l-6-2a.5.5 0 01.037-.96l6-1.5z\" clip-rule=\"evenodd\"/><path d=\"M13.885 14.538l-.72-2.877c-.862.212-1.964.339-3.165.339s-2.303-.127-3.165-.339l-.72 2.877c-.073.292-.002.6.256.756.49.295 1.545.706 3.629.706s3.14-.411 3.63-.706c.257-.155.328-.464.255-.756zM11.97 6.88l.953 3.811C12.159 10.878 11.14 11 10 11c-1.14 0-2.159-.122-2.923-.309L8.03 6.88C8.635 6.957 9.3 7 10 7s1.365-.043 1.97-.12zm-.245-.978L10.97 2.88c-.252-1.01-1.688-1.01-1.94 0L8.275 5.9C8.8 5.965 9.382 6 10 6c.618 0 1.2-.036 1.725-.098z\"/>'\n)\n\nexport const BIconController = /*#__PURE__*/ makeIcon(\n 'Controller',\n '<path fill-rule=\"evenodd\" d=\"M13.119 4.693c.904.19 1.75.495 2.235.98.407.408.779 1.05 1.094 1.772.32.733.599 1.591.805 2.466.206.875.34 1.78.364 2.606.024.815-.059 1.602-.328 2.21a1.42 1.42 0 01-1.445.83c-.636-.067-1.115-.394-1.513-.773a11.307 11.307 0 01-.739-.809c-.126-.147-.25-.291-.368-.422-.728-.804-1.597-1.527-3.224-1.527-1.627 0-2.496.723-3.224 1.527-.119.131-.242.275-.368.422-.243.283-.494.576-.739.81-.398.378-.877.705-1.513.772a1.42 1.42 0 01-1.445-.83c-.27-.608-.352-1.395-.329-2.21.024-.826.16-1.73.365-2.606.206-.875.486-1.733.805-2.466.315-.722.687-1.364 1.094-1.772.486-.485 1.331-.79 2.235-.98.932-.196 2.03-.292 3.119-.292 1.089 0 2.187.096 3.119.292zm-6.032.979c-.877.185-1.469.443-1.733.708-.276.276-.587.783-.885 1.465a13.748 13.748 0 00-.748 2.295 12.35 12.35 0 00-.339 2.406c-.022.755.062 1.368.243 1.776a.42.42 0 00.426.24c.327-.034.61-.199.929-.502.212-.202.4-.423.615-.674.133-.156.276-.323.44-.505.826-.912 1.943-1.854 3.965-1.854s3.139.942 3.965 1.854c.164.182.307.35.44.505.214.25.403.472.615.674.318.303.601.468.929.503a.42.42 0 00.426-.241c.18-.408.265-1.02.243-1.776a12.353 12.353 0 00-.339-2.406 13.753 13.753 0 00-.748-2.295c-.298-.682-.61-1.19-.885-1.465-.264-.265-.856-.523-1.733-.708-.85-.179-1.877-.27-2.913-.27-1.036 0-2.063.091-2.913.27z\" clip-rule=\"evenodd\"/><path d=\"M13.5 8.026a.5.5 0 11-1 0 .5.5 0 011 0zm-1 1a.5.5 0 11-1 0 .5.5 0 011 0zm2 0a.5.5 0 11-1 0 .5.5 0 011 0zm-1 1.001a.5.5 0 11-1 0 .5.5 0 011 0zm-7-2.501h1v3h-1v-3z\"/><path d=\"M5.5 8.526h3v1h-3v-1zM5.051 5.26a.5.5 0 01.354-.613l1.932-.518a.5.5 0 01.258.966l-1.932.518a.5.5 0 01-.612-.354zm9.976 0a.5.5 0 00-.353-.613l-1.932-.518a.5.5 0 10-.259.966l1.932.518a.5.5 0 00.612-.354z\"/>'\n)\n\nexport const BIconCreditCard = /*#__PURE__*/ makeIcon(\n 'CreditCard',\n '<path fill-rule=\"evenodd\" d=\"M16 5H4a1 1 0 00-1 1v8a1 1 0 001 1h12a1 1 0 001-1V6a1 1 0 00-1-1zM4 4a2 2 0 00-2 2v8a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><rect width=\"3\" height=\"3\" x=\"4\" y=\"11\" rx=\"1\"/><path d=\"M3 7h14v2H3z\"/>'\n)\n\nexport const BIconCursor = /*#__PURE__*/ makeIcon(\n 'Cursor',\n '<path fill-rule=\"evenodd\" d=\"M16.081 4.182a.5.5 0 01.104.557l-5.657 12.727a.5.5 0 01-.917-.006L7.57 12.694l-4.766-2.042a.5.5 0 01-.006-.917L15.525 4.08a.5.5 0 01.556.103zM4.25 10.184l3.897 1.67a.5.5 0 01.262.263l1.67 3.897L14.743 5.52 4.25 10.184z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconCursorFill = /*#__PURE__*/ makeIcon(\n 'CursorFill',\n '<path fill-rule=\"evenodd\" d=\"M16.081 4.182a.5.5 0 01.104.557l-5.657 12.727a.5.5 0 01-.917-.006L7.57 12.694l-4.766-2.042a.5.5 0 01-.006-.917L15.525 4.08a.5.5 0 01.556.103z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDash = /*#__PURE__*/ makeIcon(\n 'Dash',\n '<path fill-rule=\"evenodd\" d=\"M5.5 10a.5.5 0 01.5-.5h8a.5.5 0 010 1H6a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDiamond = /*#__PURE__*/ makeIcon(\n 'Diamond',\n '<path fill-rule=\"evenodd\" d=\"M5.1 2.7a.5.5 0 01.4-.2h9a.5.5 0 01.4.2l2.976 3.974c.149.185.156.45.01.644L10.4 17.3a.5.5 0 01-.8 0l-7.5-10a.5.5 0 010-.6l3-4zm11.386 3.785l-1.806-2.41-.776 2.413 2.582-.003zm-3.633.004l.961-2.989H6.186l.963 2.995 5.704-.006zM7.47 7.495l5.062-.005L10 15.366 7.47 7.495zm-1.371-.999l-.78-2.422-1.818 2.425 2.598-.003zM3.499 7.5l2.92-.003 2.193 6.82L3.5 7.5zm7.889 6.817l2.194-6.828 2.929-.003-5.123 6.831z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDiamondHalf = /*#__PURE__*/ makeIcon(\n 'DiamondHalf',\n '<path fill-rule=\"evenodd\" d=\"M8.94 2.354a1.5 1.5 0 012.12 0l6.586 6.585a1.5 1.5 0 010 2.122l-6.585 6.585a1.5 1.5 0 01-2.122 0l-6.585-6.585a1.5 1.5 0 010-2.122l6.585-6.585zm1.06.56a.498.498 0 00-.354.147L3.061 9.646a.5.5 0 000 .707l6.585 6.586a.499.499 0 00.354.147V2.914z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDisplay = /*#__PURE__*/ makeIcon(\n 'Display',\n '<path d=\"M7.75 15.5c.167-.333.25-.833.25-1.5h4c0 .667.083 1.167.25 1.5H13a.5.5 0 010 1H7a.5.5 0 010-1h.75z\"/><path fill-rule=\"evenodd\" d=\"M15.991 5H4c-.325 0-.502.078-.602.145a.758.758 0 00-.254.302A1.46 1.46 0 003 6.01V12c0 .325.078.502.145.602.07.105.17.188.302.254a1.464 1.464 0 00.538.143L4.01 13H16c.325 0 .502-.078.602-.145a.758.758 0 00.254-.302 1.464 1.464 0 00.143-.538L17 11.99V6c0-.325-.078-.502-.145-.602a.757.757 0 00-.302-.254A1.46 1.46 0 0015.99 5zM16 4H4C2 4 2 6 2 6v6c0 2 2 2 2 2h12c2 0 2-2 2-2V6c0-2-2-2-2-2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDisplayFill = /*#__PURE__*/ makeIcon(\n 'DisplayFill',\n '<path d=\"M7.75 15.5c.167-.333.25-.833.25-1.5h4c0 .667.083 1.167.25 1.5H13a.5.5 0 010 1H7a.5.5 0 010-1h.75z\"/><path fill-rule=\"evenodd\" d=\"M15.991 5H4c-.325 0-.502.078-.602.145a.758.758 0 00-.254.302A1.46 1.46 0 003 6.01V12c0 .325.078.502.145.602.07.105.17.188.302.254a1.464 1.464 0 00.538.143L4.01 13H16c.325 0 .502-.078.602-.145a.758.758 0 00.254-.302 1.464 1.464 0 00.143-.538L17 11.99V6c0-.325-.078-.502-.145-.602a.757.757 0 00-.302-.254A1.46 1.46 0 0015.99 5zM16 4H4C2 4 2 6 2 6v6c0 2 2 2 2 2h12c2 0 2-2 2-2V6c0-2-2-2-2-2z\" clip-rule=\"evenodd\"/><path d=\"M4 6h12v6H4z\"/>'\n)\n\nexport const BIconDocument = /*#__PURE__*/ makeIcon(\n 'Document',\n '<path fill-rule=\"evenodd\" d=\"M6 3h8a2 2 0 012 2v10a2 2 0 01-2 2H6a2 2 0 01-2-2V5a2 2 0 012-2zm0 1a1 1 0 00-1 1v10a1 1 0 001 1h8a1 1 0 001-1V5a1 1 0 00-1-1H6z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDocumentCode = /*#__PURE__*/ makeIcon(\n 'DocumentCode',\n '<path fill-rule=\"evenodd\" d=\"M6 3h8a2 2 0 012 2v10a2 2 0 01-2 2H6a2 2 0 01-2-2V5a2 2 0 012-2zm0 1a1 1 0 00-1 1v10a1 1 0 001 1h8a1 1 0 001-1V5a1 1 0 00-1-1H6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10.646 7.646a.5.5 0 01.708 0l2 2a.5.5 0 010 .708l-2 2a.5.5 0 01-.708-.708L12.293 10l-1.647-1.646a.5.5 0 010-.708zm-1.292 0a.5.5 0 00-.708 0l-2 2a.5.5 0 000 .708l2 2a.5.5 0 00.708-.708L7.707 10l1.647-1.646a.5.5 0 000-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDocumentDiff = /*#__PURE__*/ makeIcon(\n 'DocumentDiff',\n '<path fill-rule=\"evenodd\" d=\"M6 3h8a2 2 0 012 2v10a2 2 0 01-2 2H6a2 2 0 01-2-2V5a2 2 0 012-2zm0 1a1 1 0 00-1 1v10a1 1 0 001 1h8a1 1 0 001-1V5a1 1 0 00-1-1H6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7.5 13a.5.5 0 01.5-.5h4a.5.5 0 010 1H8a.5.5 0 01-.5-.5zM10 6.5a.5.5 0 01.5.5v4a.5.5 0 01-1 0V7a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7.5 9a.5.5 0 01.5-.5h4a.5.5 0 010 1H8a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDocumentRichtext = /*#__PURE__*/ makeIcon(\n 'DocumentRichtext',\n '<path fill-rule=\"evenodd\" d=\"M6 3h8a2 2 0 012 2v10a2 2 0 01-2 2H6a2 2 0 01-2-2V5a2 2 0 012-2zm0 1a1 1 0 00-1 1v10a1 1 0 001 1h8a1 1 0 001-1V5a1 1 0 00-1-1H6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M6.5 14a.5.5 0 01.5-.5h3a.5.5 0 010 1H7a.5.5 0 01-.5-.5zm0-2a.5.5 0 01.5-.5h6a.5.5 0 010 1H7a.5.5 0 01-.5-.5zm1.639-3.958l1.33.886 1.854-1.855a.25.25 0 01.289-.047L13.5 8v1.75a.5.5 0 01-.5.5H7a.5.5 0 01-.5-.5v-.5s1.54-1.274 1.639-1.208zM8.25 7a.75.75 0 100-1.5.75.75 0 000 1.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDocumentSpreadsheet = /*#__PURE__*/ makeIcon(\n 'DocumentSpreadsheet',\n '<path fill-rule=\"evenodd\" d=\"M6 3h8a2 2 0 012 2v10a2 2 0 01-2 2H6a2 2 0 01-2-2V5a2 2 0 012-2zm0 1a1 1 0 00-1 1v10a1 1 0 001 1h8a1 1 0 001-1V5a1 1 0 00-1-1H6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M15 8H5V7h10v1zm0 3H5v-1h10v1zm0 3H5v-1h10v1z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7 16V8h1v8H7zm4 0V8h1v8h-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDocumentText = /*#__PURE__*/ makeIcon(\n 'DocumentText',\n '<path fill-rule=\"evenodd\" d=\"M6 3h8a2 2 0 012 2v10a2 2 0 01-2 2H6a2 2 0 01-2-2V5a2 2 0 012-2zm0 1a1 1 0 00-1 1v10a1 1 0 001 1h8a1 1 0 001-1V5a1 1 0 00-1-1H6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M6.5 14a.5.5 0 01.5-.5h3a.5.5 0 010 1H7a.5.5 0 01-.5-.5zm0-2a.5.5 0 01.5-.5h6a.5.5 0 010 1H7a.5.5 0 01-.5-.5zm0-2a.5.5 0 01.5-.5h6a.5.5 0 010 1H7a.5.5 0 01-.5-.5zm0-2a.5.5 0 01.5-.5h6a.5.5 0 010 1H7a.5.5 0 01-.5-.5zm0-2a.5.5 0 01.5-.5h6a.5.5 0 010 1H7a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDocuments = /*#__PURE__*/ makeIcon(\n 'Documents',\n '<path fill-rule=\"evenodd\" d=\"M5 4h8a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V6a2 2 0 012-2zm0 1a1 1 0 00-1 1v10a1 1 0 001 1h8a1 1 0 001-1V6a1 1 0 00-1-1H5z\" clip-rule=\"evenodd\"/><path d=\"M7 2h8a2 2 0 012 2v10a2 2 0 01-2 2v-1a1 1 0 001-1V4a1 1 0 00-1-1H7a1 1 0 00-1 1H5a2 2 0 012-2z\"/>'\n)\n\nexport const BIconDocumentsAlt = /*#__PURE__*/ makeIcon(\n 'DocumentsAlt',\n '<path fill-rule=\"evenodd\" d=\"M5 3h8a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2zm0 1a1 1 0 00-1 1v10a1 1 0 001 1h8a1 1 0 001-1V5a1 1 0 00-1-1H5z\" clip-rule=\"evenodd\"/><path d=\"M15 6V5a2 2 0 012 2v6a2 2 0 01-2 2v-1a1 1 0 001-1V7a1 1 0 00-1-1z\"/>'\n)\n\nexport const BIconDot = /*#__PURE__*/ makeIcon(\n 'Dot',\n '<path fill-rule=\"evenodd\" d=\"M10 11.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconDownload = /*#__PURE__*/ makeIcon(\n 'Download',\n '<path fill-rule=\"evenodd\" d=\"M2.5 10a.5.5 0 01.5.5V14a1 1 0 001 1h12a1 1 0 001-1v-3.5a.5.5 0 011 0V14a2 2 0 01-2 2H4a2 2 0 01-2-2v-3.5a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7 9.5a.5.5 0 01.707 0L10 11.793 12.293 9.5a.5.5 0 01.707.707l-2.646 2.647a.5.5 0 01-.708 0L7 10.207A.5.5 0 017 9.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 3a.5.5 0 01.5.5v8a.5.5 0 01-1 0v-8A.5.5 0 0110 3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconEggFried = /*#__PURE__*/ makeIcon(\n 'EggFried',\n '<path fill-rule=\"evenodd\" d=\"M15.665 8.113a1 1 0 01-.667-.977L15 7a4 4 0 00-6.483-3.136 1 1 0 01-.8.2 4 4 0 00-3.693 6.61 1 1 0 01.2 1 4 4 0 006.67 4.087 1 1 0 011.262-.152 2.5 2.5 0 003.715-2.905 1 1 0 01.341-1.113 2.001 2.001 0 00-.547-3.478zM16 7c0 .057 0 .113-.003.17a3.001 3.001 0 01.822 5.216 3.5 3.5 0 01-5.201 4.065 5 5 0 01-8.336-5.109A5 5 0 017.896 3.08 5 5 0 0116 7z\" clip-rule=\"evenodd\"/><circle cx=\"10\" cy=\"10\" r=\"3\"/>'\n)\n\nexport const BIconEject = /*#__PURE__*/ makeIcon(\n 'Eject',\n '<path fill-rule=\"evenodd\" d=\"M9.27 3.047a1 1 0 011.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H3.656c-.876 0-1.33-1.045-.73-1.684L9.27 3.047zm7.076 7.453L10 3.731 3.654 10.5h12.692zM2.5 13.5a1 1 0 011-1h13a1 1 0 011 1v1a1 1 0 01-1 1h-13a1 1 0 01-1-1v-1zm14 0h-13v1h13v-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconEjectFill = /*#__PURE__*/ makeIcon(\n 'EjectFill',\n '<path fill-rule=\"evenodd\" d=\"M9.27 3.047a1 1 0 011.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H3.656c-.876 0-1.33-1.045-.73-1.684L9.27 3.047zM2.5 13.5a1 1 0 011-1h13a1 1 0 011 1v1a1 1 0 01-1 1h-13a1 1 0 01-1-1v-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconEnvelope = /*#__PURE__*/ makeIcon(\n 'Envelope',\n '<path fill-rule=\"evenodd\" d=\"M16 5H4a1 1 0 00-1 1v8a1 1 0 001 1h12a1 1 0 001-1V6a1 1 0 00-1-1zM4 4a2 2 0 00-2 2v8a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M2.071 6.243a.5.5 0 01.686-.172L10 10.417l7.243-4.346a.5.5 0 11.514.858L10 11.583 2.243 6.93a.5.5 0 01-.172-.686z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconEnvelopeFill = /*#__PURE__*/ makeIcon(\n 'EnvelopeFill',\n '<path d=\"M2.05 5.555L10 10.414l7.95-4.859A2 2 0 0016 4H4a2 2 0 00-1.95 1.555zM18 6.697l-5.875 3.59L18 13.743V6.697zm-.168 8.108l-6.675-3.926-1.157.707-1.157-.707-6.675 3.926A2 2 0 004 16h12a2 2 0 001.832-1.195zM2 13.743l5.875-3.456L2 6.697v7.046z\"/>'\n)\n\nexport const BIconEnvelopeOpen = /*#__PURE__*/ makeIcon(\n 'EnvelopeOpen',\n '<path fill-rule=\"evenodd\" d=\"M2.243 8.929l.514-.858L10 12.417l7.243-4.346.514.858L10 13.583 2.243 8.93z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.184 12.68l-6.432 3.752-.504-.864 6.432-3.752.504.864zm1.632 0l6.432 3.752.504-.864-6.432-3.752-.504.864z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10.47 3.318a1 1 0 00-.94 0l-6 3.2A1 1 0 003 7.4V16a1 1 0 001 1h12a1 1 0 001-1V7.4a1 1 0 00-.53-.882l-6-3.2zm-1.41-.883a2 2 0 011.882 0l6 3.2A2 2 0 0118 7.4V16a2 2 0 01-2 2H4a2 2 0 01-2-2V7.4a2 2 0 011.059-1.765l6-3.2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconEnvelopeOpenFill = /*#__PURE__*/ makeIcon(\n 'EnvelopeOpenFill',\n '<path fill-rule=\"evenodd\" d=\"M10.941 2.435a2 2 0 00-1.882 0l-6 3.2A2 2 0 002 7.4v.125l8 4.889 8-4.889V7.4a2 2 0 00-1.059-1.765l-6-3.2zM18 8.697l-5.875 3.59L18 15.743V8.697zm-.168 8.108l-6.586-3.874-.088-.052-.897.548-.261.159-.26-.16-.897-.547-.09.052-6.585 3.874A2 2 0 004 18h12a2 2 0 001.832-1.195zM2 15.743l5.875-3.456L2 8.697v7.046z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconEye = /*#__PURE__*/ makeIcon(\n 'Eye',\n '<path fill-rule=\"evenodd\" d=\"M18 10s-3-5.5-8-5.5S2 10 2 10s3 5.5 8 5.5 8-5.5 8-5.5zM3.173 10a13.133 13.133 0 001.66 2.043C6.12 13.332 7.88 14.5 10 14.5c2.12 0 3.879-1.168 5.168-2.457A13.133 13.133 0 0016.828 10a13.133 13.133 0 00-1.66-2.043C13.879 6.668 12.119 5.5 10 5.5c-2.12 0-3.879 1.168-5.168 2.457A13.133 13.133 0 003.172 10z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 7.5a2.5 2.5 0 100 5 2.5 2.5 0 000-5zM6.5 10a3.5 3.5 0 117 0 3.5 3.5 0 01-7 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconEyeFill = /*#__PURE__*/ makeIcon(\n 'EyeFill',\n '<path d=\"M12.5 10a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z\"/><path fill-rule=\"evenodd\" d=\"M2 10s3-5.5 8-5.5 8 5.5 8 5.5-3 5.5-8 5.5S2 10 2 10zm8 3.5a3.5 3.5 0 100-7 3.5 3.5 0 000 7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconEyeSlash = /*#__PURE__*/ makeIcon(\n 'EyeSlash',\n '<path d=\"M15.359 13.238C17.06 11.72 18 10 18 10s-3-5.5-8-5.5a7.028 7.028 0 00-2.79.588l.77.771A5.944 5.944 0 0110 5.5c2.12 0 3.879 1.168 5.168 2.457A13.134 13.134 0 0116.828 10c-.058.087-.122.183-.195.288a13.14 13.14 0 01-1.465 1.755c-.165.165-.337.328-.517.486l.708.709z\"/><path d=\"M13.297 11.176a3.5 3.5 0 00-4.474-4.474l.823.823a2.5 2.5 0 012.829 2.829l.822.822zm-2.943 1.299l.822.822a3.5 3.5 0 01-4.474-4.474l.823.823a2.5 2.5 0 002.829 2.829z\"/><path d=\"M5.35 7.47c-.18.16-.353.322-.518.487A13.134 13.134 0 003.172 10l.195.288c.335.48.83 1.12 1.465 1.755C6.121 13.332 7.881 14.5 10 14.5c.716 0 1.39-.133 2.02-.36l.77.772A7.027 7.027 0 0110 15.5c-5 0-8-5.5-8-5.5s.939-1.721 2.641-3.238l.708.709z\"/><path fill-rule=\"evenodd\" d=\"M15.646 16.354l-12-12 .708-.708 12 12-.708.707z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconEyeSlashFill = /*#__PURE__*/ makeIcon(\n 'EyeSlashFill',\n '<path d=\"M12.79 14.912l-1.614-1.615a3.5 3.5 0 01-4.474-4.474l-2.06-2.06C2.938 8.278 2 10 2 10s3 5.5 8 5.5a7.027 7.027 0 002.79-.588zM7.21 5.088A7.028 7.028 0 0110 4.5c5 0 8 5.5 8 5.5s-.939 1.72-2.641 3.238l-2.062-2.062a3.5 3.5 0 00-4.474-4.474L7.21 5.088z\"/><path d=\"M7.525 9.646a2.5 2.5 0 002.829 2.829l-2.83-2.829zm4.95.708l-2.829-2.83a2.5 2.5 0 012.829 2.829z\"/><path fill-rule=\"evenodd\" d=\"M15.646 16.354l-12-12 .708-.708 12 12-.708.707z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconFilter = /*#__PURE__*/ makeIcon(\n 'Filter',\n '<path fill-rule=\"evenodd\" d=\"M7.5 13a.5.5 0 01.5-.5h4a.5.5 0 010 1H8a.5.5 0 01-.5-.5zm-2-3a.5.5 0 01.5-.5h8a.5.5 0 010 1H6a.5.5 0 01-.5-.5zm-2-3a.5.5 0 01.5-.5h12a.5.5 0 010 1H4a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconFlag = /*#__PURE__*/ makeIcon(\n 'Flag',\n '<path fill-rule=\"evenodd\" d=\"M5.5 3a.5.5 0 01.5.5v13a.5.5 0 01-1 0v-13a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M5.762 4.558C6.735 3.909 7.348 3.5 8.5 3.5c.653 0 1.139.325 1.495.562l.032.022c.392.26.646.416.973.416.168 0 .356-.042.587-.126.187-.068.376-.153.593-.25.058-.027.117-.053.18-.08.57-.255 1.278-.544 2.14-.544a.5.5 0 01.5.5v6a.5.5 0 01-.5.5c-.638 0-1.18.21-1.734.457l-.159.07c-.22.1-.453.205-.678.287A2.718 2.718 0 0111 11.5c-.653 0-1.139-.325-1.495-.563l-.032-.021c-.391-.26-.646-.416-.973-.416-.833 0-1.218.246-2.223.916a.5.5 0 11-.515-.858C6.735 9.909 7.348 9.5 8.5 9.5c.653 0 1.139.325 1.495.563l.032.021c.392.26.646.416.973.416.168 0 .356-.042.587-.126.187-.068.376-.153.593-.25.058-.027.117-.053.18-.08.456-.204 1-.43 1.64-.512V4.543c-.433.074-.83.234-1.234.414l-.159.07c-.22.1-.453.205-.678.287A2.72 2.72 0 0111 5.5c-.653 0-1.139-.325-1.495-.562l-.032-.022c-.391-.26-.646-.416-.973-.416-.833 0-1.218.246-2.223.916a.5.5 0 01-.554-.832l.04-.026z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconFlagFill = /*#__PURE__*/ makeIcon(\n 'FlagFill',\n '<path fill-rule=\"evenodd\" d=\"M5.5 3a.5.5 0 01.5.5v13a.5.5 0 01-1 0v-13a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M5.762 4.558C6.735 3.909 7.348 3.5 8.5 3.5c.653 0 1.139.325 1.495.562l.032.022c.392.26.646.416.973.416.168 0 .356-.042.587-.126.187-.068.376-.153.593-.25.058-.027.117-.053.18-.08.57-.255 1.278-.544 2.14-.544a.5.5 0 01.5.5v6a.5.5 0 01-.5.5c-.638 0-1.18.21-1.734.457l-.159.07c-.22.1-.453.205-.678.287A2.718 2.718 0 0111 11.5c-.653 0-1.139-.325-1.495-.563l-.032-.021c-.391-.26-.646-.416-.973-.416-.833 0-1.218.246-2.223.916A.5.5 0 015.5 11V5a.5.5 0 01.223-.416l.04-.026z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconFolder = /*#__PURE__*/ makeIcon(\n 'Folder',\n '<path d=\"M11.828 6a3 3 0 01-2.12-.879l-.83-.828A1 1 0 008.173 4H4.5a1 1 0 00-1 .981L3.546 6h-1L2.5 5a2 2 0 012-2h3.672a2 2 0 011.414.586l.828.828A2 2 0 0011.828 5v1z\"/><path fill-rule=\"evenodd\" d=\"M15.81 6H4.19a1 1 0 00-.996 1.09l.637 7a1 1 0 00.995.91h10.348a1 1 0 00.995-.91l.637-7A1 1 0 0015.81 6zM4.19 5a2 2 0 00-1.992 2.181l.637 7A2 2 0 004.826 16h10.348a2 2 0 001.991-1.819l.637-7A2 2 0 0015.81 5H4.19z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconFolderFill = /*#__PURE__*/ makeIcon(\n 'FolderFill',\n '<path fill-rule=\"evenodd\" d=\"M11.828 5h3.982a2 2 0 011.992 2.181l-.637 7A2 2 0 0115.174 16H4.826a2 2 0 01-1.991-1.819l-.637-7a1.99 1.99 0 01.342-1.31L2.5 5a2 2 0 012-2h3.672a2 2 0 011.414.586l.828.828A2 2 0 0011.828 5zm-8.322.12C3.72 5.042 3.95 5 4.19 5h5.396l-.707-.707A1 1 0 008.172 4H4.5a1 1 0 00-1 .981l.006.139z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconFolderSymlink = /*#__PURE__*/ makeIcon(\n 'FolderSymlink',\n '<path d=\"M11.828 6a3 3 0 01-2.12-.879l-.83-.828A1 1 0 008.173 4H4.5a1 1 0 00-1 .981L3.546 6h-1L2.5 5a2 2 0 012-2h3.672a2 2 0 011.414.586l.828.828A2 2 0 0011.828 5v1z\"/><path fill-rule=\"evenodd\" d=\"M15.81 6H4.19a1 1 0 00-.996 1.09l.637 7a1 1 0 00.995.91h10.348a1 1 0 00.995-.91l.637-7A1 1 0 0015.81 6zM4.19 5a2 2 0 00-1.992 2.181l.637 7A2 2 0 004.826 16h10.348a2 2 0 001.991-1.819l.637-7A2 2 0 0015.81 5H4.19z\" clip-rule=\"evenodd\"/><path d=\"M10.616 12.24l3.182-1.969a.442.442 0 000-.742l-3.182-1.97c-.27-.166-.616.036-.616.372V8.7c-.857 0-3.429 0-4 4.8 1.429-2.7 4-2.4 4-2.4v.769c0 .336.346.538.616.371z\"/>'\n)\n\nexport const BIconFolderSymlinkFill = /*#__PURE__*/ makeIcon(\n 'FolderSymlinkFill',\n '<path fill-rule=\"evenodd\" d=\"M15.81 5h-3.982a2 2 0 01-1.414-.586l-.828-.828A2 2 0 008.172 3H4.5a2 2 0 00-2 2l.04.87a1.99 1.99 0 00-.342 1.311l.637 7A2 2 0 004.826 16h10.348a2 2 0 001.991-1.819l.637-7A2 2 0 0015.81 5zM4.19 5c-.24 0-.47.042-.684.12L3.5 4.98a1 1 0 011-.98h3.672a1 1 0 01.707.293L9.586 5H4.19zm9.608 5.271l-3.182 1.97c-.27.166-.616-.036-.616-.372V11.1s-2.571-.3-4 2.4c.571-4.8 3.143-4.8 4-4.8v-.769c0-.336.346-.538.616-.371l3.182 1.969c.27.166.27.576 0 .742z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconFonts = /*#__PURE__*/ makeIcon(\n 'Fonts',\n '<path d=\"M14.258 5H5.747l-.082 2.46h.479c.26-1.544.758-1.783 2.693-1.845l.424-.013v7.827c0 .663-.144.82-1.3.923v.52h4.082v-.52c-1.162-.103-1.306-.26-1.306-.923V5.602l.43.013c1.935.062 2.434.301 2.694 1.846h.479L14.258 5z\"/>'\n)\n\nexport const BIconForward = /*#__PURE__*/ makeIcon(\n 'Forward',\n '<path fill-rule=\"evenodd\" d=\"M11.502 7.513a.144.144 0 00-.202.134V8.65a.5.5 0 01-.5.5H4.5v2.9h6.3a.5.5 0 01.5.5v1.003c0 .108.11.176.202.134l3.984-2.933a.522.522 0 01.042-.028.147.147 0 000-.252.523.523 0 01-.042-.028l-3.984-2.933zm-1.202.134a1.144 1.144 0 011.767-.96l3.994 2.94a1.147 1.147 0 010 1.946l-3.994 2.94a1.144 1.144 0 01-1.767-.96v-.503H4a.5.5 0 01-.5-.5v-3.9a.5.5 0 01.5-.5h6.3v-.503z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconForwardFill = /*#__PURE__*/ makeIcon(\n 'ForwardFill',\n '<path d=\"M11.77 14.11l4.012-2.953a.647.647 0 000-1.114L11.771 7.09a.644.644 0 00-.971.557V8.65H4v3.9h6.8v1.003c0 .505.545.808.97.557z\"/>'\n)\n\nexport const BIconGear = /*#__PURE__*/ makeIcon(\n 'Gear',\n '<path fill-rule=\"evenodd\" d=\"M10.837 3.626c-.246-.835-1.428-.835-1.674 0l-.094.319A1.873 1.873 0 016.377 5.06l-.292-.16c-.764-.415-1.6.42-1.184 1.185l.159.292a1.873 1.873 0 01-1.115 2.692l-.319.094c-.835.246-.835 1.428 0 1.674l.319.094a1.873 1.873 0 011.115 2.693l-.16.291c-.415.764.42 1.6 1.185 1.184l.292-.159a1.873 1.873 0 012.692 1.115l.094.319c.246.835 1.428.835 1.674 0l.094-.319a1.873 1.873 0 012.693-1.115l.291.16c.764.415 1.6-.42 1.184-1.185l-.159-.291a1.873 1.873 0 011.115-2.693l.319-.094c.835-.246.835-1.428 0-1.674l-.319-.094a1.873 1.873 0 01-1.115-2.692l.16-.292c.415-.764-.42-1.6-1.185-1.184l-.291.159a1.873 1.873 0 01-2.693-1.115l-.094-.319zm-2.633-.283c.527-1.79 3.064-1.79 3.592 0l.094.319a.873.873 0 001.255.52l.292-.16c1.64-.892 3.434.901 2.54 2.541l-.159.292a.873.873 0 00.52 1.255l.319.094c1.79.527 1.79 3.064 0 3.592l-.319.094a.873.873 0 00-.52 1.255l.16.292c.893 1.64-.902 3.434-2.541 2.54l-.292-.159a.873.873 0 00-1.255.52l-.094.319c-.527 1.79-3.065 1.79-3.592 0l-.094-.319a.873.873 0 00-1.255-.52l-.292.16c-1.64.893-3.433-.902-2.54-2.541l.159-.292a.873.873 0 00-.52-1.255l-.319-.094c-1.79-.527-1.79-3.065 0-3.592l.319-.094a.873.873 0 00.52-1.255l-.16-.292c-.892-1.64.901-3.433 2.541-2.54l.292.159a.873.873 0 001.255-.52l.094-.319z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 7.754a2.246 2.246 0 100 4.492 2.246 2.246 0 000-4.492zM6.754 10a3.246 3.246 0 116.492 0 3.246 3.246 0 01-6.492 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconGearFill = /*#__PURE__*/ makeIcon(\n 'GearFill',\n '<path fill-rule=\"evenodd\" d=\"M11.405 3.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 01-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 01.872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 012.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 012.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 01.872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 01-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 01-2.105-.872l-.1-.34zM10 12.93a2.929 2.929 0 100-5.858 2.929 2.929 0 000 5.858z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconGearWide = /*#__PURE__*/ makeIcon(\n 'GearWide',\n '<path fill-rule=\"evenodd\" d=\"M10.932 2.724c-.243-.97-1.621-.97-1.864 0l-.072.286a.96.96 0 01-1.622.434l-.205-.211c-.695-.72-1.889-.03-1.614.932l.08.283a.96.96 0 01-1.187 1.188l-.283-.081c-.962-.275-1.651.919-.932 1.614l.211.205a.96.96 0 01-.434 1.622l-.286.072c-.97.243-.97 1.621 0 1.864l.286.072a.96.96 0 01.434 1.622l-.211.205c-.72.695-.03 1.889.932 1.614l.283-.08a.96.96 0 011.188 1.187l-.081.283c-.275.962.919 1.651 1.614.932l.205-.211a.96.96 0 011.622.434l.072.286c.243.97 1.621.97 1.864 0l.072-.286a.96.96 0 011.622-.434l.205.211c.695.72 1.889.03 1.614-.932l-.08-.283a.96.96 0 011.187-1.188l.283.081c.962.275 1.651-.919.932-1.614l-.211-.205a.96.96 0 01.434-1.622l.286-.072c.97-.243.97-1.621 0-1.864l-.286-.072a.96.96 0 01-.434-1.622l.211-.205c.72-.695.03-1.889-.932-1.614l-.283.08a.96.96 0 01-1.188-1.187l.081-.283c.275-.962-.919-1.651-1.614-.932l-.205.211a.96.96 0 01-1.622-.434l-.072-.286zM10 15a5 5 0 100-10 5 5 0 000 10z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconGearWideConnected = /*#__PURE__*/ makeIcon(\n 'GearWideConnected',\n '<path fill-rule=\"evenodd\" d=\"M10.932 2.724c-.243-.97-1.621-.97-1.864 0l-.072.286a.96.96 0 01-1.622.434l-.205-.211c-.695-.72-1.889-.03-1.614.932l.08.283a.96.96 0 01-1.187 1.188l-.283-.081c-.962-.275-1.651.919-.932 1.614l.211.205a.96.96 0 01-.434 1.622l-.286.072c-.97.243-.97 1.621 0 1.864l.286.072a.96.96 0 01.434 1.622l-.211.205c-.72.695-.03 1.889.932 1.614l.283-.08a.96.96 0 011.188 1.187l-.081.283c-.275.962.919 1.651 1.614.932l.205-.211a.96.96 0 011.622.434l.072.286c.243.97 1.621.97 1.864 0l.072-.286a.96.96 0 011.622-.434l.205.211c.695.72 1.889.03 1.614-.932l-.08-.283a.96.96 0 011.187-1.188l.283.081c.962.275 1.651-.919.932-1.614l-.211-.205a.96.96 0 01.434-1.622l.286-.072c.97-.243.97-1.621 0-1.864l-.286-.072a.96.96 0 01-.434-1.622l.211-.205c.72-.695.03-1.889-.932-1.614l-.283.08a.96.96 0 01-1.188-1.187l.081-.283c.275-.962-.919-1.651-1.614-.932l-.205.211a.96.96 0 01-1.622-.434l-.072-.286zM10 15a5 5 0 100-10 5 5 0 000 10z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.375 10L6.6 6.3l.8-.6 2.85 3.8H15v1h-4.75L7.4 14.3l-.8-.6L9.375 10z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconGeo = /*#__PURE__*/ makeIcon(\n 'Geo',\n '<path d=\"M13 6a3 3 0 11-6 0 3 3 0 016 0z\"/><path d=\"M9.5 6h1v9a.5.5 0 01-1 0V6z\"/><path fill-rule=\"evenodd\" d=\"M8.489 14.095a.5.5 0 01-.383.594c-.565.123-1.003.292-1.286.472-.302.192-.32.321-.32.339 0 .013.005.085.146.21.14.124.372.26.701.383.655.245 1.593.407 2.653.407s1.998-.162 2.653-.407c.329-.124.56-.259.701-.383.14-.125.146-.197.146-.21 0-.018-.018-.147-.32-.339-.283-.18-.721-.35-1.286-.472a.5.5 0 11.212-.977c.63.137 1.193.34 1.61.606.4.253.784.645.784 1.182 0 .402-.219.724-.483.958-.264.235-.618.423-1.013.57-.793.298-1.855.472-3.004.472s-2.21-.174-3.004-.471c-.395-.148-.749-.337-1.013-.571-.264-.234-.483-.556-.483-.958 0-.537.384-.929.783-1.182.418-.266.98-.47 1.611-.606a.5.5 0 01.595.383z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconGraphDown = /*#__PURE__*/ makeIcon(\n 'GraphDown',\n '<path d=\"M2 2h1v16H2V2zm1 15h15v1H3v-1z\"/><path fill-rule=\"evenodd\" d=\"M16.39 11.041l-4.349-5.436L9 8.646 5.354 5l-.708.707L9 10.061l2.959-2.959 3.65 4.564.781-.625z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12 11.854a.5.5 0 00.5.5h4a.5.5 0 00.5-.5v-4a.5.5 0 00-1 0v3.5h-3.5a.5.5 0 00-.5.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconGraphUp = /*#__PURE__*/ makeIcon(\n 'GraphUp',\n '<path d=\"M2 2h1v16H2V2zm1 15h15v1H3v-1z\"/><path fill-rule=\"evenodd\" d=\"M16.39 6.312l-4.349 5.437L9 8.707l-3.646 3.647-.708-.708L9 7.293l2.959 2.958 3.65-4.563.781.624z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12 5.5a.5.5 0 01.5-.5h4a.5.5 0 01.5.5v4a.5.5 0 01-1 0V6h-3.5a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconGrid = /*#__PURE__*/ makeIcon(\n 'Grid',\n '<path fill-rule=\"evenodd\" d=\"M9.5 4.5a1 1 0 00-1-1h-4a1 1 0 00-1 1v4a1 1 0 001 1h4a1 1 0 001-1v-4zm-1 7h-4v4h4v-4zm7 0h-4v4h4v-4zm0-7h-4v4h4v-4zm-7 0h-4v4h4v-4zm2 0a1 1 0 011-1h4a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4zm-6 6a1 1 0 00-1 1v4a1 1 0 001 1h4a1 1 0 001-1v-4a1 1 0 00-1-1h-4zm7 0a1 1 0 00-1 1v4a1 1 0 001 1h4a1 1 0 001-1v-4a1 1 0 00-1-1h-4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconGridFill = /*#__PURE__*/ makeIcon(\n 'GridFill',\n '<rect width=\"6\" height=\"6\" x=\"3.5\" y=\"10.5\" rx=\"1\"/><rect width=\"6\" height=\"6\" x=\"10.5\" y=\"10.5\" rx=\"1\"/><rect width=\"6\" height=\"6\" x=\"10.5\" y=\"3.5\" rx=\"1\"/><rect width=\"6\" height=\"6\" x=\"3.5\" y=\"3.5\" rx=\"1\"/>'\n)\n\nexport const BIconHammer = /*#__PURE__*/ makeIcon(\n 'Hammer',\n '<path d=\"M11.812 3.952a.5.5 0 01-.312.89c-1.671 0-2.852.596-3.616 1.185L6.857 7.073V8.21a.5.5 0 01-.146.354L5.426 9.853a.5.5 0 01-.709 0L2.146 7.274a.5.5 0 010-.706l1.286-1.29a.5.5 0 01.354-.146H4.84c1.664-1.904 3.375-2.27 4.716-2.091a5.008 5.008 0 012.076.782l.18.129z\"/><path fill-rule=\"evenodd\" d=\"M8.012 5.5a.5.5 0 01.359.165l9.146 8.646A.5.5 0 0117.5 15L16 16.5a.5.5 0 01-.756-.056L6.598 7.297a.5.5 0 01.048-.65l1-1a.5.5 0 01.366-.147z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconHash = /*#__PURE__*/ makeIcon(\n 'Hash',\n '<path d=\"M10.39 14.648a1.32 1.32 0 00-.015.18c0 .305.21.508.5.508.266 0 .492-.172.555-.477l.554-2.703h1.204c.421 0 .617-.234.617-.547 0-.312-.188-.53-.617-.53h-.985l.516-2.524h1.265c.43 0 .618-.227.618-.547 0-.313-.188-.524-.618-.524h-1.046l.476-2.304c.008-.04.016-.117.016-.164a.51.51 0 00-.516-.516.54.54 0 00-.539.43l-.523 2.554H9.617l.477-2.304c.008-.04.015-.117.015-.164a.512.512 0 00-.523-.516.539.539 0 00-.531.43L8.53 7.484H7.414c-.43 0-.617.22-.617.532 0 .312.187.539.617.539h.906l-.515 2.523H6.609c-.421 0-.609.219-.609.531 0 .313.188.547.61.547h.976l-.516 2.492c-.008.04-.015.125-.015.18 0 .305.21.508.5.508.265 0 .492-.172.554-.477l.555-2.703h2.242l-.515 2.492zm-1-6.109h2.266l-.515 2.563H8.859l.532-2.563z\"/>'\n)\n\nexport const BIconHeart = /*#__PURE__*/ makeIcon(\n 'Heart',\n '<path fill-rule=\"evenodd\" d=\"M10 4.748l-.717-.737C7.6 2.281 4.514 2.878 3.4 5.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.837-3.362.314-4.385-1.114-2.175-4.2-2.773-5.883-1.043L10 4.748zM10 17C-5.333 6.868 5.279-1.04 9.824 3.143c.06.055.119.112.176.171a3.12 3.12 0 01.176-.17C14.72-1.042 25.333 6.867 10 17z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconHeartFill = /*#__PURE__*/ makeIcon(\n 'HeartFill',\n '<path fill-rule=\"evenodd\" d=\"M10 3.314C14.438-1.248 25.534 6.735 10 17-5.534 6.736 5.562-1.248 10 3.314z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconHouse = /*#__PURE__*/ makeIcon(\n 'House',\n '<path fill-rule=\"evenodd\" d=\"M9.646 3.146a.5.5 0 01.708 0l6 6a.5.5 0 01.146.354v7a.5.5 0 01-.5.5h-4.5a.5.5 0 01-.5-.5v-4H9v4a.5.5 0 01-.5.5H4a.5.5 0 01-.5-.5v-7a.5.5 0 01.146-.354l6-6zM4.5 9.707V16H8v-4a.5.5 0 01.5-.5h3a.5.5 0 01.5.5v4h3.5V9.707l-5.5-5.5-5.5 5.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M15 4.5V8l-2-2V4.5a.5.5 0 01.5-.5h1a.5.5 0 01.5.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconHouseFill = /*#__PURE__*/ makeIcon(\n 'HouseFill',\n '<path d=\"M8.5 12.995V16.5a.5.5 0 01-.5.5H4a.5.5 0 01-.5-.5v-7a.5.5 0 01.146-.354l6-6a.5.5 0 01.708 0l6 6a.5.5 0 01.146.354v7a.5.5 0 01-.5.5h-4a.5.5 0 01-.5-.5V13c0-.25-.25-.5-.5-.5H9c-.25 0-.5.25-.5.495z\"/><path fill-rule=\"evenodd\" d=\"M15 4.5V8l-2-2V4.5a.5.5 0 01.5-.5h1a.5.5 0 01.5.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconImage = /*#__PURE__*/ makeIcon(\n 'Image',\n '<path fill-rule=\"evenodd\" d=\"M16.002 4h-12a1 1 0 00-1 1v10a1 1 0 001 1h12a1 1 0 001-1V5a1 1 0 00-1-1zm-12-1a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2h-12z\" clip-rule=\"evenodd\"/><path d=\"M12.648 9.646a.5.5 0 01.577-.093l3.777 1.947V16h-14v-2l2.646-2.354a.5.5 0 01.63-.062l2.66 1.773 3.71-3.71z\"/><path fill-rule=\"evenodd\" d=\"M6.502 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconImageAlt = /*#__PURE__*/ makeIcon(\n 'ImageAlt',\n '<path d=\"M12.648 8.646a.5.5 0 01.577-.093l4.777 3.947V17a1 1 0 01-1 1h-14a1 1 0 01-1-1v-2l3.646-4.354a.5.5 0 01.63-.062l2.66 2.773 3.71-4.71z\"/><path fill-rule=\"evenodd\" d=\"M6.5 7a2.5 2.5 0 100-5 2.5 2.5 0 000 5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconImageFill = /*#__PURE__*/ makeIcon(\n 'ImageFill',\n '<path fill-rule=\"evenodd\" d=\"M2.002 5a2 2 0 012-2h12a2 2 0 012 2v10a2 2 0 01-2 2h-12a2 2 0 01-2-2V5zm1 9l2.646-2.354a.5.5 0 01.63-.062l2.66 1.773 3.71-3.71a.5.5 0 01.577-.094l3.777 1.947V15a1 1 0 01-1 1h-12a1 1 0 01-1-1v-1zm5-6.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconImages = /*#__PURE__*/ makeIcon(\n 'Images',\n '<path fill-rule=\"evenodd\" d=\"M14.002 6h-10a1 1 0 00-1 1v8a1 1 0 001 1h10a1 1 0 001-1V7a1 1 0 00-1-1zm-10-1a2 2 0 00-2 2v8a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-10z\" clip-rule=\"evenodd\"/><path d=\"M12.648 10.646a.5.5 0 01.577-.093l1.777 1.947V16h-12v-1l2.646-2.354a.5.5 0 01.63-.062l2.66 1.773 3.71-3.71z\"/><path fill-rule=\"evenodd\" d=\"M6.502 11a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM6 4h10a1 1 0 011 1v8a1 1 0 01-1 1v1a2 2 0 002-2V5a2 2 0 00-2-2H6a2 2 0 00-2 2h1a1 1 0 011-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconInbox = /*#__PURE__*/ makeIcon(\n 'Inbox',\n '<path fill-rule=\"evenodd\" d=\"M5.81 6.063A1.5 1.5 0 016.98 5.5h6.04a1.5 1.5 0 011.17.563l3.7 4.625a.5.5 0 11-.78.624l-3.7-4.624a.5.5 0 00-.39-.188H6.98a.5.5 0 00-.39.188l-3.7 4.624a.5.5 0 11-.78-.624l3.7-4.625z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M2.125 10.67a.5.5 0 01.375-.17H8a.5.5 0 01.5.5 1.5 1.5 0 003 0 .5.5 0 01.5-.5h5.5a.5.5 0 01.496.562l-.39 3.124a1.5 1.5 0 01-1.489 1.314H3.883a1.5 1.5 0 01-1.489-1.314l-.39-3.124a.5.5 0 01.121-.393zm.941.83l.32 2.562a.5.5 0 00.497.438h12.234a.5.5 0 00.496-.438l.32-2.562H12.45a2.5 2.5 0 01-4.9 0H3.066z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconInboxFill = /*#__PURE__*/ makeIcon(\n 'InboxFill',\n '<path fill-rule=\"evenodd\" d=\"M5.81 6.063A1.5 1.5 0 016.98 5.5h6.04a1.5 1.5 0 011.17.563l3.7 4.625a.5.5 0 11-.78.624l-3.7-4.624a.5.5 0 00-.39-.188H6.98a.5.5 0 00-.39.188l-3.7 4.624a.5.5 0 11-.78-.624l3.7-4.625z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M2.125 10.67a.5.5 0 01.375-.17h5a.5.5 0 01.5.5c0 .828.625 2 2 2s2-1.172 2-2a.5.5 0 01.5-.5h5a.5.5 0 01.496.562l-.39 3.124a1.5 1.5 0 01-1.489 1.314H3.883a1.5 1.5 0 01-1.489-1.314l-.39-3.124a.5.5 0 01.121-.393z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconInboxes = /*#__PURE__*/ makeIcon(\n 'Inboxes',\n '<path fill-rule=\"evenodd\" d=\"M2.125 13.17A.5.5 0 012.5 13H8a.5.5 0 01.5.5 1.5 1.5 0 003 0 .5.5 0 01.5-.5h5.5a.5.5 0 01.496.562l-.39 3.124A1.5 1.5 0 0116.117 18H3.883a1.5 1.5 0 01-1.489-1.314l-.39-3.124a.5.5 0 01.121-.393zm.941.83l.32 2.562a.5.5 0 00.497.438h12.234a.5.5 0 00.496-.438l.32-2.562H12.45a2.5 2.5 0 01-4.9 0H3.066zM5.81 2.563A1.5 1.5 0 016.98 2h6.04a1.5 1.5 0 011.17.563l3.7 4.625a.5.5 0 11-.78.624l-3.7-4.624A.5.5 0 0013.02 3H6.98a.5.5 0 00-.39.188l-3.7 4.624a.5.5 0 11-.78-.624l3.7-4.625z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M2.125 7.17A.5.5 0 012.5 7H8a.5.5 0 01.5.5 1.5 1.5 0 003 0A.5.5 0 0112 7h5.5a.5.5 0 01.496.562l-.39 3.124A1.5 1.5 0 0116.117 12H3.883a1.5 1.5 0 01-1.489-1.314l-.39-3.124a.5.5 0 01.121-.393zm.941.83l.32 2.562a.5.5 0 00.497.438h12.234a.5.5 0 00.496-.438L16.933 8H12.45a2.5 2.5 0 01-4.9 0H3.066z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconInboxesFill = /*#__PURE__*/ makeIcon(\n 'InboxesFill',\n '<path fill-rule=\"evenodd\" d=\"M2.125 13.17A.5.5 0 012.5 13H8a.5.5 0 01.5.5 1.5 1.5 0 003 0 .5.5 0 01.5-.5h5.5a.5.5 0 01.496.562l-.39 3.124A1.5 1.5 0 0116.117 18H3.883a1.5 1.5 0 01-1.489-1.314l-.39-3.124a.5.5 0 01.121-.393zM5.81 2.563A1.5 1.5 0 016.98 2h6.04a1.5 1.5 0 011.17.563l3.7 4.625a.5.5 0 11-.78.624l-3.7-4.624A.5.5 0 0013.02 3H6.98a.5.5 0 00-.39.188l-3.7 4.624a.5.5 0 11-.78-.624l3.7-4.625z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M2.125 7.17A.5.5 0 012.5 7H8a.5.5 0 01.5.5 1.5 1.5 0 003 0A.5.5 0 0112 7h5.5a.5.5 0 01.496.562l-.39 3.124A1.5 1.5 0 0116.117 12H3.883a1.5 1.5 0 01-1.489-1.314l-.39-3.124a.5.5 0 01.121-.393z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconInfo = /*#__PURE__*/ makeIcon(\n 'Info',\n '<path fill-rule=\"evenodd\" d=\"M10 17a7 7 0 100-14 7 7 0 000 14zm8-7a8 8 0 11-16 0 8 8 0 0116 0z\" clip-rule=\"evenodd\"/><path d=\"M10.93 8.588l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533l1.002-4.705z\"/><circle cx=\"10\" cy=\"6.5\" r=\"1\"/>'\n)\n\nexport const BIconInfoFill = /*#__PURE__*/ makeIcon(\n 'InfoFill',\n '<path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm.93-9.412l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533l1.002-4.705zM10 7.5a1 1 0 100-2 1 1 0 000 2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconInfoSquare = /*#__PURE__*/ makeIcon(\n 'InfoSquare',\n '<path fill-rule=\"evenodd\" d=\"M16 3H4a1 1 0 00-1 1v12a1 1 0 001 1h12a1 1 0 001-1V4a1 1 0 00-1-1zM4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path d=\"M10.93 8.588l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533l1.002-4.705z\"/><circle cx=\"10\" cy=\"6.5\" r=\"1\"/>'\n)\n\nexport const BIconInfoSquareFill = /*#__PURE__*/ makeIcon(\n 'InfoSquareFill',\n '<path fill-rule=\"evenodd\" d=\"M2 4a2 2 0 012-2h12a2 2 0 012 2v12a2 2 0 01-2 2H4a2 2 0 01-2-2V4zm8.93 4.588l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533l1.002-4.705zM10 7.5a1 1 0 100-2 1 1 0 000 2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconJustify = /*#__PURE__*/ makeIcon(\n 'Justify',\n '<path fill-rule=\"evenodd\" d=\"M4 14.5a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconJustifyLeft = /*#__PURE__*/ makeIcon(\n 'JustifyLeft',\n '<path fill-rule=\"evenodd\" d=\"M4 14.5a.5.5 0 01.5-.5h7a.5.5 0 010 1h-7a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconJustifyRight = /*#__PURE__*/ makeIcon(\n 'JustifyRight',\n '<path fill-rule=\"evenodd\" d=\"M8 14.5a.5.5 0 01.5-.5h7a.5.5 0 010 1h-7a.5.5 0 01-.5-.5zm-4-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconKanban = /*#__PURE__*/ makeIcon(\n 'Kanban',\n '<path fill-rule=\"evenodd\" d=\"M15.5 3h-11a1 1 0 00-1 1v12a1 1 0 001 1h11a1 1 0 001-1V4a1 1 0 00-1-1zm-11-1a2 2 0 00-2 2v12a2 2 0 002 2h11a2 2 0 002-2V4a2 2 0 00-2-2h-11z\" clip-rule=\"evenodd\"/><rect width=\"3\" height=\"5\" x=\"8.5\" y=\"4\" rx=\"1\"/><rect width=\"3\" height=\"9\" x=\"4.5\" y=\"4\" rx=\"1\"/><rect width=\"3\" height=\"12\" x=\"12.5\" y=\"4\" rx=\"1\"/>'\n)\n\nexport const BIconKanbanFill = /*#__PURE__*/ makeIcon(\n 'KanbanFill',\n '<path fill-rule=\"evenodd\" d=\"M4.5 2a2 2 0 00-2 2v12a2 2 0 002 2h11a2 2 0 002-2V4a2 2 0 00-2-2h-11zm5 2a1 1 0 00-1 1v3a1 1 0 001 1h1a1 1 0 001-1V5a1 1 0 00-1-1h-1zm-5 1a1 1 0 011-1h1a1 1 0 011 1v7a1 1 0 01-1 1h-1a1 1 0 01-1-1V5zm9-1a1 1 0 00-1 1v10a1 1 0 001 1h1a1 1 0 001-1V5a1 1 0 00-1-1h-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconLaptop = /*#__PURE__*/ makeIcon(\n 'Laptop',\n '<path fill-rule=\"evenodd\" d=\"M15.5 4h-11a.5.5 0 00-.5.5v7a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-7a.5.5 0 00-.5-.5zm-11-1A1.5 1.5 0 003 4.5v7A1.5 1.5 0 004.5 13h11a1.5 1.5 0 001.5-1.5v-7A1.5 1.5 0 0015.5 3h-11z\" clip-rule=\"evenodd\"/><path d=\"M2.81 13.758A1 1 0 013.78 13h12.44a1 1 0 01.97.758l.5 2A1 1 0 0116.72 17H3.28a1 1 0 01-.97-1.242l.5-2z\"/>'\n)\n\nexport const BIconLayoutSidebar = /*#__PURE__*/ makeIcon(\n 'LayoutSidebar',\n '<path fill-rule=\"evenodd\" d=\"M16 4H4a1 1 0 00-1 1v10a1 1 0 001 1h12a1 1 0 001-1V5a1 1 0 00-1-1zM4 3a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M6 16V4h1v12H6z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconLayoutSidebarReverse = /*#__PURE__*/ makeIcon(\n 'LayoutSidebarReverse',\n '<path fill-rule=\"evenodd\" d=\"M16 4H4a1 1 0 00-1 1v10a1 1 0 001 1h12a1 1 0 001-1V5a1 1 0 00-1-1zM4 3a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M13 16V4h1v12h-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconLayoutSplit = /*#__PURE__*/ makeIcon(\n 'LayoutSplit',\n '<path fill-rule=\"evenodd\" d=\"M1.5 5A2.5 2.5 0 014 2.5h12A2.5 2.5 0 0118.5 5v10a2.5 2.5 0 01-2.5 2.5H4A2.5 2.5 0 011.5 15V5zM4 3.5A1.5 1.5 0 002.5 5v10A1.5 1.5 0 004 16.5h12a1.5 1.5 0 001.5-1.5V5A1.5 1.5 0 0016 3.5h-5.5v13h-1v-13H4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconList = /*#__PURE__*/ makeIcon(\n 'List',\n '<path fill-rule=\"evenodd\" d=\"M4.5 13.5A.5.5 0 015 13h10a.5.5 0 010 1H5a.5.5 0 01-.5-.5zm0-4A.5.5 0 015 9h10a.5.5 0 010 1H5a.5.5 0 01-.5-.5zm0-4A.5.5 0 015 5h10a.5.5 0 010 1H5a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconListCheck = /*#__PURE__*/ makeIcon(\n 'ListCheck',\n '<path fill-rule=\"evenodd\" d=\"M7 13.5a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5zm0-4a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5zm0-4a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5zM5.854 4.146a.5.5 0 010 .708l-1.5 1.5a.5.5 0 01-.708 0l-.5-.5a.5.5 0 11.708-.708L4 5.293l1.146-1.147a.5.5 0 01.708 0zm0 4a.5.5 0 010 .708l-1.5 1.5a.5.5 0 01-.708 0l-.5-.5a.5.5 0 11.708-.708L4 9.293l1.146-1.147a.5.5 0 01.708 0zm0 4a.5.5 0 010 .708l-1.5 1.5a.5.5 0 01-.708 0l-.5-.5a.5.5 0 01.708-.708l.146.147 1.146-1.147a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconListOl = /*#__PURE__*/ makeIcon(\n 'ListOl',\n '<path fill-rule=\"evenodd\" d=\"M7 13.5a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5zm0-4a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5zm0-4a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/><path d=\"M3.713 13.865v-.474H4c.217 0 .363-.137.363-.317 0-.185-.158-.31-.361-.31-.223 0-.367.152-.373.31h-.59c.016-.467.373-.787.986-.787.588-.002.954.291.957.703a.595.595 0 01-.492.594v.033a.615.615 0 01.569.631c.003.533-.502.8-1.051.8-.656 0-1-.37-1.008-.794h.582c.008.178.186.306.422.309.254 0 .424-.145.422-.35-.002-.195-.155-.348-.414-.348h-.3zm-.004-4.699h-.604v-.035c0-.408.295-.844.958-.844.583 0 .96.326.96.756 0 .389-.257.617-.476.848l-.537.572v.03h1.054V11H3.143v-.395l.957-.99c.138-.142.293-.304.293-.508 0-.18-.147-.32-.342-.32a.33.33 0 00-.342.338v.041zM4.564 7h-.635V4.924h-.031l-.598.42v-.567l.629-.443h.635V7z\"/>'\n)\n\nexport const BIconListTask = /*#__PURE__*/ makeIcon(\n 'ListTask',\n '<path fill-rule=\"evenodd\" d=\"M4 4.5a.5.5 0 00-.5.5v1a.5.5 0 00.5.5h1a.5.5 0 00.5-.5V5a.5.5 0 00-.5-.5H4zM5 5H4v1h1V5z\" clip-rule=\"evenodd\"/><path d=\"M7 5.5a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5zM7.5 9a.5.5 0 000 1h9a.5.5 0 000-1h-9zm0 4a.5.5 0 000 1h9a.5.5 0 000-1h-9z\"/><path fill-rule=\"evenodd\" d=\"M3.5 9a.5.5 0 01.5-.5h1a.5.5 0 01.5.5v1a.5.5 0 01-.5.5H4a.5.5 0 01-.5-.5V9zM4 9h1v1H4V9zm0 3.5a.5.5 0 00-.5.5v1a.5.5 0 00.5.5h1a.5.5 0 00.5-.5v-1a.5.5 0 00-.5-.5H4zm1 .5H4v1h1v-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconListUl = /*#__PURE__*/ makeIcon(\n 'ListUl',\n '<path fill-rule=\"evenodd\" d=\"M7 13.5a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5zm0-4a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5zm0-4a.5.5 0 01.5-.5h9a.5.5 0 010 1h-9a.5.5 0 01-.5-.5zm-3 1a1 1 0 100-2 1 1 0 000 2zm0 4a1 1 0 100-2 1 1 0 000 2zm0 4a1 1 0 100-2 1 1 0 000 2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconLock = /*#__PURE__*/ makeIcon(\n 'Lock',\n '<path fill-rule=\"evenodd\" d=\"M13.655 9H6.333c-.264 0-.398.068-.471.121a.73.73 0 00-.224.296 1.626 1.626 0 00-.138.59V15c0 .342.076.531.14.635.064.106.151.18.256.237a1.122 1.122 0 00.436.127l.013.001h7.322c.264 0 .398-.068.471-.121a.73.73 0 00.224-.296 1.627 1.627 0 00.138-.59V10c0-.342-.076-.531-.14-.635a.658.658 0 00-.255-.237 1.123 1.123 0 00-.45-.128zm.012-1H6.333C4.5 8 4.5 10 4.5 10v5c0 2 1.833 2 1.833 2h7.334c1.833 0 1.833-2 1.833-2v-5c0-2-1.833-2-1.833-2zM6.5 5a3.5 3.5 0 117 0v3h-1V5a2.5 2.5 0 00-5 0v3h-1V5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconLockFill = /*#__PURE__*/ makeIcon(\n 'LockFill',\n '<rect width=\"11\" height=\"9\" x=\"4.5\" y=\"8\" rx=\"2\"/><path fill-rule=\"evenodd\" d=\"M6.5 5a3.5 3.5 0 117 0v3h-1V5a2.5 2.5 0 00-5 0v3h-1V5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconMap = /*#__PURE__*/ makeIcon(\n 'Map',\n '<path fill-rule=\"evenodd\" d=\"M17.817 2.613A.5.5 0 0118 3v13a.5.5 0 01-.402.49l-5 1a.502.502 0 01-.196 0L7.5 16.51l-4.902.98A.5.5 0 012 17V4a.5.5 0 01.402-.49l5-1a.5.5 0 01.196 0l4.902.98 4.902-.98a.5.5 0 01.415.103zM12 4.41l-4-.8v11.98l4 .8V4.41zm1 11.98l4-.8V3.61l-4 .8v11.98zm-6-.8V3.61l-4 .8v11.98l4-.8z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconMic = /*#__PURE__*/ makeIcon(\n 'Mic',\n '<path d=\"M7 5a3 3 0 016 0v5a3 3 0 11-6 0V5z\"/><path fill-rule=\"evenodd\" d=\"M5.5 8.5A.5.5 0 016 9v1a4 4 0 008 0V9a.5.5 0 011 0v1a5 5 0 01-4.5 4.975V17h3a.5.5 0 010 1h-7a.5.5 0 010-1h3v-2.025A5 5 0 015 10V9a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconMoon = /*#__PURE__*/ makeIcon(\n 'Moon',\n '<path d=\"M17.293 13.293A8 8 0 016.707 2.707a8.002 8.002 0 1010.586 10.586z\"/>'\n)\n\nexport const BIconMusicPlayer = /*#__PURE__*/ makeIcon(\n 'MusicPlayer',\n '<path fill-rule=\"evenodd\" d=\"M14 3H6a1 1 0 00-1 1v12a1 1 0 001 1h8a1 1 0 001-1V4a1 1 0 00-1-1zM6 2a2 2 0 00-2 2v12a2 2 0 002 2h8a2 2 0 002-2V4a2 2 0 00-2-2H6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M13 5H7v3h6V5zM7 4a1 1 0 00-1 1v3a1 1 0 001 1h6a1 1 0 001-1V5a1 1 0 00-1-1H7zm3 11a2 2 0 100-4 2 2 0 000 4zm3-2a3 3 0 11-6 0 3 3 0 016 0z\" clip-rule=\"evenodd\"/><circle cx=\"10\" cy=\"13\" r=\"1\"/>'\n)\n\nexport const BIconMusicPlayerFill = /*#__PURE__*/ makeIcon(\n 'MusicPlayerFill',\n '<path fill-rule=\"evenodd\" d=\"M4 4a2 2 0 012-2h8a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 1a1 1 0 011-1h6a1 1 0 011 1v2.5a1 1 0 01-1 1H7a1 1 0 01-1-1V5zm7 8a3 3 0 11-6 0 3 3 0 016 0z\" clip-rule=\"evenodd\"/><circle cx=\"10\" cy=\"13\" r=\"1\"/>'\n)\n\nexport const BIconOption = /*#__PURE__*/ makeIcon(\n 'Option',\n '<path fill-rule=\"evenodd\" d=\"M2.5 4.5A.5.5 0 013 4h4a.5.5 0 01.439.26L13.297 15H17a.5.5 0 010 1h-4a.5.5 0 01-.439-.26L6.703 5H3a.5.5 0 01-.5-.5zm10 0A.5.5 0 0113 4h4a.5.5 0 010 1h-4a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconOutlet = /*#__PURE__*/ makeIcon(\n 'Outlet',\n '<path fill-rule=\"evenodd\" d=\"M5.34 4.994c.275-.338.68-.494 1.074-.494h7.172c.393 0 .798.156 1.074.494.578.708 1.84 2.534 1.84 5.006 0 2.472-1.262 4.297-1.84 5.006-.276.338-.68.494-1.074.494H6.414c-.394 0-.799-.156-1.074-.494C4.762 14.297 3.5 12.472 3.5 10c0-2.472 1.262-4.298 1.84-5.006zm1.074.506a.376.376 0 00-.299.126C5.599 6.259 4.5 7.863 4.5 10c0 2.137 1.099 3.74 1.615 4.374.06.073.163.126.3.126h7.17c.137 0 .24-.053.3-.126.516-.633 1.615-2.237 1.615-4.374 0-2.137-1.099-3.74-1.615-4.374a.376.376 0 00-.3-.126h-7.17z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8 7.5a.5.5 0 01.5.5v1.5a.5.5 0 01-1 0V8a.5.5 0 01.5-.5zm4 0a.5.5 0 01.5.5v1.5a.5.5 0 01-1 0V8a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path d=\"M9 12v1h2v-1a1 1 0 10-2 0z\"/>'\n)\n\nexport const BIconPause = /*#__PURE__*/ makeIcon(\n 'Pause',\n '<path fill-rule=\"evenodd\" d=\"M8 5.5a.5.5 0 01.5.5v8a.5.5 0 01-1 0V6a.5.5 0 01.5-.5zm4 0a.5.5 0 01.5.5v8a.5.5 0 01-1 0V6a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPauseFill = /*#__PURE__*/ makeIcon(\n 'PauseFill',\n '<path d=\"M7.5 5.5A1.5 1.5 0 019 7v6a1.5 1.5 0 01-3 0V7a1.5 1.5 0 011.5-1.5zm5 0A1.5 1.5 0 0114 7v6a1.5 1.5 0 01-3 0V7a1.5 1.5 0 011.5-1.5z\"/>'\n)\n\nexport const BIconPen = /*#__PURE__*/ makeIcon(\n 'Pen',\n '<path fill-rule=\"evenodd\" d=\"M7.707 15.707a1 1 0 01-.39.242l-3 1a1 1 0 01-1.266-1.265l1-3a1 1 0 01.242-.391L12.086 4.5a2 2 0 012.828 0l.586.586a2 2 0 010 2.828l-7.793 7.793zM5 13l7.793-7.793a1 1 0 011.414 0l.586.586a1 1 0 010 1.414L7 15l-3 1 1-3z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M11.854 4.56a.5.5 0 00-.708 0L7.854 7.855a.5.5 0 11-.708-.708l3.293-3.292a1.5 1.5 0 012.122 0l.293.292a.5.5 0 11-.708.708l-.292-.293z\" clip-rule=\"evenodd\"/><path d=\"M15.293 3.207a1 1 0 011.414 0l.03.03a1 1 0 01.03 1.383L15.5 6 14 4.5l1.293-1.293z\"/>'\n)\n\nexport const BIconPencil = /*#__PURE__*/ makeIcon(\n 'Pencil',\n '<path fill-rule=\"evenodd\" d=\"M13.293 3.293a1 1 0 011.414 0l2 2a1 1 0 010 1.414l-9 9a1 1 0 01-.39.242l-3 1a1 1 0 01-1.266-1.265l1-3a1 1 0 01.242-.391l9-9zM14 4l2 2-9 9-3 1 1-3 9-9z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M14.146 8.354l-2.5-2.5.708-.708 2.5 2.5-.708.708zM5 12v.5a.5.5 0 00.5.5H6v.5a.5.5 0 00.5.5H7v.5a.5.5 0 00.5.5H8v-1.5a.5.5 0 00-.5-.5H7v-.5a.5.5 0 00-.5-.5H5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPeople = /*#__PURE__*/ makeIcon(\n 'People',\n '<path fill-rule=\"evenodd\" d=\"M17 16s1 0 1-1-1-4-5-4-5 3-5 4 1 1 1 1h8zm-7.995-.944v-.002zM9.022 15h7.956a.274.274 0 00.014-.002l.008-.002c-.002-.264-.167-1.03-.76-1.72C15.688 12.629 14.718 12 13 12c-1.717 0-2.687.63-3.24 1.276-.593.69-.759 1.457-.76 1.72a1.05 1.05 0 00.022.004zm7.973.056v-.002zM13 9a2 2 0 100-4 2 2 0 000 4zm3-2a3 3 0 11-6 0 3 3 0 016 0zm-7.064 4.28a5.873 5.873 0 00-1.23-.247A7.334 7.334 0 007 11c-4 0-5 3-5 4 0 .667.333 1 1 1h4.216A2.238 2.238 0 017 15c0-1.01.377-2.042 1.09-2.904.243-.294.526-.569.846-.816zM6.92 12c-1.668.02-2.615.64-3.16 1.276C3.163 13.97 3 14.739 3 15h3c0-1.045.323-2.086.92-3zM3.5 7.5a3 3 0 116 0 3 3 0 01-6 0zm3-2a2 2 0 100 4 2 2 0 000-4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPeopleFill = /*#__PURE__*/ makeIcon(\n 'PeopleFill',\n '<path fill-rule=\"evenodd\" d=\"M9 16s-1 0-1-1 1-4 5-4 5 3 5 4-1 1-1 1H9zm4-6a3 3 0 100-6 3 3 0 000 6zm-5.784 6A2.238 2.238 0 017 15c0-1.355.68-2.75 1.936-3.72A6.325 6.325 0 007 11c-4 0-5 3-5 4s1 1 1 1h4.216zM6.5 10a2.5 2.5 0 100-5 2.5 2.5 0 000 5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPerson = /*#__PURE__*/ makeIcon(\n 'Person',\n '<path fill-rule=\"evenodd\" d=\"M15 16s1 0 1-1-1-4-6-4-6 3-6 4 1 1 1 1h10zm-9.995-.944v-.002zM5.022 15h9.956a.274.274 0 00.014-.002l.008-.002c-.001-.246-.154-.986-.832-1.664C13.516 12.68 12.289 12 10 12c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664a1.05 1.05 0 00.022.004zm9.974.056v-.002zM10 9a2 2 0 100-4 2 2 0 000 4zm3-2a3 3 0 11-6 0 3 3 0 016 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPersonFill = /*#__PURE__*/ makeIcon(\n 'PersonFill',\n '<path fill-rule=\"evenodd\" d=\"M5 16s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H5zm5-6a3 3 0 100-6 3 3 0 000 6z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPhone = /*#__PURE__*/ makeIcon(\n 'Phone',\n '<path fill-rule=\"evenodd\" d=\"M13 3H7a1 1 0 00-1 1v11a1 1 0 001 1h6a1 1 0 001-1V4a1 1 0 00-1-1zM7 2a2 2 0 00-2 2v11a2 2 0 002 2h6a2 2 0 002-2V4a2 2 0 00-2-2H7z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 15a1 1 0 100-2 1 1 0 000 2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPhoneLandscape = /*#__PURE__*/ makeIcon(\n 'PhoneLandscape',\n '<path fill-rule=\"evenodd\" d=\"M3.5 6.5v6a1 1 0 001 1h11a1 1 0 001-1v-6a1 1 0 00-1-1h-11a1 1 0 00-1 1zm-1 6a2 2 0 002 2h11a2 2 0 002-2v-6a2 2 0 00-2-2h-11a2 2 0 00-2 2v6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M15.5 9.5a1 1 0 10-2 0 1 1 0 002 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPieChart = /*#__PURE__*/ makeIcon(\n 'PieChart',\n '<path fill-rule=\"evenodd\" d=\"M10 17a7 7 0 100-14 7 7 0 000 14zm0 1a8 8 0 100-16 8 8 0 000 16z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.5 9.793V3h1v6.5H17v1h-6.793l-4.853 4.854-.708-.708L9.5 9.793z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPieChartFill = /*#__PURE__*/ makeIcon(\n 'PieChartFill',\n '<path d=\"M17.985 10.5h-7.778l-5.5 5.5a8 8 0 0013.277-5.5zM4 15.292A8 8 0 019.5 2.015v7.778l-5.5 5.5zm6.5-13.277V9.5h7.485A8.001 8.001 0 0010.5 2.015z\"/>'\n)\n\nexport const BIconPlay = /*#__PURE__*/ makeIcon(\n 'Play',\n '<path fill-rule=\"evenodd\" d=\"M12.804 10L7 6.633v6.734L12.804 10zm.792-.696a.802.802 0 010 1.392l-6.363 3.692C6.713 14.69 6 14.345 6 13.692V6.308c0-.653.713-.998 1.233-.696l6.363 3.692z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPlayFill = /*#__PURE__*/ makeIcon(\n 'PlayFill',\n '<path d=\"M13.596 10.697l-6.363 3.692c-.54.313-1.233-.066-1.233-.697V6.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 010 1.393z\"/>'\n)\n\nexport const BIconPlug = /*#__PURE__*/ makeIcon(\n 'Plug',\n '<path d=\"M6 7h8v3a4 4 0 01-8 0V7z\"/><path fill-rule=\"evenodd\" d=\"M8 3.5a.5.5 0 01.5.5v3a.5.5 0 01-1 0V4a.5.5 0 01.5-.5zm4 0a.5.5 0 01.5.5v3a.5.5 0 01-1 0V4a.5.5 0 01.5-.5zM9.115 15.651c.256-.511.385-1.408.385-2.651h1c0 1.257-.121 2.36-.49 3.099-.191.381-.47.707-.87.877-.401.17-.845.15-1.298-.002-.961-.32-1.534-.175-1.851.046-.33.23-.491.615-.491.98h-1c0-.635.278-1.353.918-1.8.653-.456 1.58-.561 2.74-.174.297.099.478.078.592.03.115-.05.244-.161.365-.405z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPlus = /*#__PURE__*/ makeIcon(\n 'Plus',\n '<path fill-rule=\"evenodd\" d=\"M10 5.5a.5.5 0 01.5.5v4a.5.5 0 01-.5.5H6a.5.5 0 010-1h3.5V6a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.5 10a.5.5 0 01.5-.5h4a.5.5 0 010 1h-3.5V14a.5.5 0 01-1 0v-4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconPower = /*#__PURE__*/ makeIcon(\n 'Power',\n '<path fill-rule=\"evenodd\" d=\"M7.578 6.437a5 5 0 104.922.044l.5-.865a6 6 0 11-5.908-.053l.486.874z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.5 10V3h1v7h-1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconQuestion = /*#__PURE__*/ makeIcon(\n 'Question',\n '<path fill-rule=\"evenodd\" d=\"M10 17a7 7 0 100-14 7 7 0 000 14zm8-7a8 8 0 11-16 0 8 8 0 0116 0z\" clip-rule=\"evenodd\"/><path d=\"M7.25 8.033h1.32c0-.781.458-1.384 1.36-1.384.685 0 1.313.343 1.313 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.007.463h1.307v-.355c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.326 0-2.786.647-2.754 2.533zm1.562 5.516c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"/>'\n)\n\nexport const BIconQuestionFill = /*#__PURE__*/ makeIcon(\n 'QuestionFill',\n '<path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM8.57 8.033H7.25C7.22 6.147 8.68 5.5 10.006 5.5c1.397 0 2.673.73 2.673 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.355H9.117l-.007-.463c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.901 0-1.358.603-1.358 1.384zm1.251 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconQuestionSquare = /*#__PURE__*/ makeIcon(\n 'QuestionSquare',\n '<path fill-rule=\"evenodd\" d=\"M16 3H4a1 1 0 00-1 1v12a1 1 0 001 1h12a1 1 0 001-1V4a1 1 0 00-1-1zM4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path d=\"M7.25 8.033h1.32c0-.781.458-1.384 1.36-1.384.685 0 1.313.343 1.313 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.007.463h1.307v-.355c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.326 0-2.786.647-2.754 2.533zm1.562 5.516c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"/>'\n)\n\nexport const BIconQuestionSquareFill = /*#__PURE__*/ makeIcon(\n 'QuestionSquareFill',\n '<path fill-rule=\"evenodd\" d=\"M4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H4zm4.57 6.033H7.25C7.22 6.147 8.68 5.5 10.006 5.5c1.397 0 2.673.73 2.673 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.355H9.117l-.007-.463c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.901 0-1.358.603-1.358 1.384zm1.251 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconReply = /*#__PURE__*/ makeIcon(\n 'Reply',\n '<path fill-rule=\"evenodd\" d=\"M11.502 7.013a.144.144 0 00-.202.134V8.3a.5.5 0 01-.5.5c-.667 0-2.013.005-3.3.822-.984.624-1.99 1.76-2.595 3.876 1.02-.983 2.185-1.516 3.205-1.799a8.745 8.745 0 011.921-.306 7.468 7.468 0 01.798.008h.013l.005.001h.001l-.048.498.05-.498a.5.5 0 01.45.498v1.153c0 .108.11.176.202.134l3.984-2.933a.522.522 0 01.042-.028.147.147 0 000-.252.51.51 0 01-.042-.028l-3.984-2.933zM10.3 12.386a7.745 7.745 0 00-1.923.277c-1.326.368-2.896 1.201-3.94 3.08a.5.5 0 01-.933-.305c.464-3.71 1.886-5.662 3.46-6.66 1.245-.79 2.527-.942 3.336-.971v-.66a1.144 1.144 0 011.767-.96l3.994 2.94a1.147 1.147 0 010 1.946l-3.994 2.94a1.144 1.144 0 01-1.767-.96v-.667z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconReplyAll = /*#__PURE__*/ makeIcon(\n 'ReplyAll',\n '<path fill-rule=\"evenodd\" d=\"M10.002 7.013a.144.144 0 00-.202.134V8.3a.5.5 0 01-.5.5c-.667 0-2.013.005-3.3.822-.984.624-1.99 1.76-2.595 3.876 1.02-.983 2.185-1.516 3.205-1.799a8.745 8.745 0 011.921-.306 7.47 7.47 0 01.798.008h.013l.005.001h.001L9.3 11.9l.05-.498a.5.5 0 01.45.498v1.153c0 .108.11.176.202.134l3.984-2.933a.522.522 0 01.042-.028.147.147 0 000-.252.51.51 0 01-.042-.028l-3.984-2.933zM8.8 12.386a7.745 7.745 0 00-1.923.277c-1.326.368-2.896 1.201-3.94 3.08a.5.5 0 01-.933-.305c.464-3.71 1.886-5.662 3.46-6.66 1.245-.79 2.527-.942 3.336-.971v-.66a1.144 1.144 0 011.767-.96l3.994 2.94a1.147 1.147 0 010 1.946l-3.994 2.94a1.144 1.144 0 01-1.767-.96v-.667z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12.868 6.293a.5.5 0 01.7-.106l3.993 2.94a1.147 1.147 0 010 1.946l-3.994 2.94a.5.5 0 11-.593-.805l4.012-2.954a.523.523 0 01.042-.028.147.147 0 000-.252.512.512 0 01-.042-.028l-4.012-2.954a.5.5 0 01-.106-.699z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconReplyAllFill = /*#__PURE__*/ makeIcon(\n 'ReplyAllFill',\n '<path d=\"M10.079 13.9l4.568-3.281a.719.719 0 000-1.238L10.079 6.1A.716.716 0 009 6.719V8c-1.5 0-6 0-7 8 2.5-4.5 7-4 7-4v1.281c0 .56.606.898 1.079.62z\"/><path fill-rule=\"evenodd\" d=\"M12.868 6.293a.5.5 0 01.7-.106l3.993 2.94a1.147 1.147 0 010 1.946l-3.994 2.94a.5.5 0 11-.593-.805l4.012-2.954a.523.523 0 01.042-.028.147.147 0 000-.252.512.512 0 01-.042-.028l-4.012-2.954a.5.5 0 01-.106-.699z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconReplyFill = /*#__PURE__*/ makeIcon(\n 'ReplyFill',\n '<path d=\"M11.079 13.9l4.568-3.281a.719.719 0 000-1.238L11.079 6.1A.716.716 0 0010 6.719V8c-1.5 0-6 0-7 8 2.5-4.5 7-4 7-4v1.281c0 .56.606.898 1.079.62z\"/>'\n)\n\nexport const BIconScrewdriver = /*#__PURE__*/ makeIcon(\n 'Screwdriver',\n '<path fill-rule=\"evenodd\" d=\"M2 3l1-1 3.081 2.2a1 1 0 01.419.815v.07a1 1 0 00.293.708L12.5 11.5l.914-.305a1 1 0 011.023.242l3.356 3.356a1 1 0 010 1.414l-1.586 1.586a1 1 0 01-1.414 0l-3.356-3.356a1 1 0 01-.242-1.023l.305-.914-5.707-5.707a1 1 0 00-.707-.293h-.071a1 1 0 01-.814-.419L2 3zm11.354 9.646a.5.5 0 00-.708.708l3 3a.5.5 0 00.708-.708l-3-3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconSearch = /*#__PURE__*/ makeIcon(\n 'Search',\n '<path fill-rule=\"evenodd\" d=\"M12.442 12.442a1 1 0 011.415 0l3.85 3.85a1 1 0 01-1.414 1.415l-3.85-3.85a1 1 0 010-1.415z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8.5 14a5.5 5.5 0 100-11 5.5 5.5 0 000 11zM15 8.5a6.5 6.5 0 11-13 0 6.5 6.5 0 0113 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconShield = /*#__PURE__*/ makeIcon(\n 'Shield',\n '<path fill-rule=\"evenodd\" d=\"M7.443 3.991a60.17 60.17 0 00-2.725.802.454.454 0 00-.315.366C3.87 9.056 5.1 11.9 6.567 13.773c.736.94 1.533 1.636 2.197 2.093.333.228.626.394.857.5.116.053.21.089.282.11A.73.73 0 0010 16.5a.774.774 0 00.097-.023c.072-.022.166-.058.282-.111.23-.106.524-.272.857-.5a10.198 10.198 0 002.197-2.093C14.9 11.9 16.13 9.056 15.597 5.159a.454.454 0 00-.315-.366c-.626-.2-1.682-.526-2.725-.802C11.491 3.71 10.51 3.5 10 3.5c-.51 0-1.49.21-2.557.491zm-.256-.966C8.23 2.749 9.337 2.5 10 2.5c.662 0 1.77.249 2.813.525 1.066.282 2.14.614 2.772.815.528.168.926.623 1.003 1.184.573 4.197-.756 7.307-2.367 9.365a11.192 11.192 0 01-2.418 2.3 6.942 6.942 0 01-1.007.586c-.27.124-.558.225-.796.225s-.527-.101-.796-.225a6.908 6.908 0 01-1.007-.586 11.192 11.192 0 01-2.418-2.3c-1.611-2.058-2.94-5.168-2.367-9.365A1.454 1.454 0 014.415 3.84a61.113 61.113 0 012.772-.815z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconShieldFill = /*#__PURE__*/ makeIcon(\n 'ShieldFill',\n '<path fill-rule=\"evenodd\" d=\"M7.187 3.025C8.23 2.749 9.337 2.5 10 2.5c.662 0 1.77.249 2.813.525 1.066.282 2.14.614 2.772.815.528.168.926.623 1.003 1.184.573 4.197-.756 7.307-2.367 9.365a11.192 11.192 0 01-2.418 2.3 6.942 6.942 0 01-1.007.586c-.27.124-.558.225-.796.225s-.527-.101-.796-.225a6.908 6.908 0 01-1.007-.586 11.192 11.192 0 01-2.418-2.3c-1.611-2.058-2.94-5.168-2.367-9.365A1.454 1.454 0 014.415 3.84a61.113 61.113 0 012.772-.815z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconShieldLock = /*#__PURE__*/ makeIcon(\n 'ShieldLock',\n '<path fill-rule=\"evenodd\" d=\"M7.443 3.991a60.17 60.17 0 00-2.725.802.454.454 0 00-.315.366C3.87 9.056 5.1 11.9 6.567 13.773c.736.94 1.533 1.636 2.197 2.093.333.228.626.394.857.5.116.053.21.089.282.11A.73.73 0 0010 16.5a.774.774 0 00.097-.023c.072-.022.166-.058.282-.111.23-.106.524-.272.857-.5a10.198 10.198 0 002.197-2.093C14.9 11.9 16.13 9.056 15.597 5.159a.454.454 0 00-.315-.366c-.626-.2-1.682-.526-2.725-.802C11.491 3.71 10.51 3.5 10 3.5c-.51 0-1.49.21-2.557.491zm-.256-.966C8.23 2.749 9.337 2.5 10 2.5c.662 0 1.77.249 2.813.525 1.066.282 2.14.614 2.772.815.528.168.926.623 1.003 1.184.573 4.197-.756 7.307-2.367 9.365a11.192 11.192 0 01-2.418 2.3 6.942 6.942 0 01-1.007.586c-.27.124-.558.225-.796.225s-.527-.101-.796-.225a6.908 6.908 0 01-1.007-.586 11.192 11.192 0 01-2.418-2.3c-1.611-2.058-2.94-5.168-2.367-9.365A1.454 1.454 0 014.415 3.84a61.113 61.113 0 012.772-.815z\" clip-rule=\"evenodd\"/><path d=\"M11.5 8.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0z\"/><path d=\"M9.41 10.034a.5.5 0 01.494-.417h.156a.5.5 0 01.492.414l.347 2a.5.5 0 01-.493.585h-.835a.5.5 0 01-.493-.582l.333-2z\"/>'\n)\n\nexport const BIconShieldLockFill = /*#__PURE__*/ makeIcon(\n 'ShieldLockFill',\n '<path fill-rule=\"evenodd\" d=\"M7.187 3.025C8.23 2.749 9.337 2.5 10 2.5c.662 0 1.77.249 2.813.525a61.1 61.1 0 012.772.815c.527.168.926.623 1.003 1.184.573 4.197-.756 7.307-2.368 9.365a11.19 11.19 0 01-2.417 2.3 6.942 6.942 0 01-1.007.586c-.27.124-.558.225-.796.225s-.527-.101-.796-.225a6.908 6.908 0 01-1.007-.586 11.192 11.192 0 01-2.418-2.3c-1.611-2.058-2.94-5.168-2.367-9.365A1.454 1.454 0 014.415 3.84a61.105 61.105 0 012.772-.815zm3.328 6.884a1.5 1.5 0 10-1.06-.011.5.5 0 00-.044.136l-.333 2a.5.5 0 00.493.582h.835a.5.5 0 00.493-.585l-.347-2a.501.501 0 00-.037-.122z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconShieldShaded = /*#__PURE__*/ makeIcon(\n 'ShieldShaded',\n '<path fill-rule=\"evenodd\" d=\"M7.443 3.991a60.17 60.17 0 00-2.725.802.454.454 0 00-.315.366C3.87 9.056 5.1 11.9 6.567 13.773c.736.94 1.533 1.636 2.197 2.093.333.228.626.394.857.5.116.053.21.089.282.11A.73.73 0 0010 16.5a.774.774 0 00.097-.023c.072-.022.166-.058.282-.111a5.94 5.94 0 00.857-.5 10.198 10.198 0 002.197-2.093C14.9 11.9 16.13 9.056 15.597 5.159a.454.454 0 00-.315-.366c-.626-.2-1.682-.526-2.725-.802C11.491 3.71 10.51 3.5 10 3.5c-.51 0-1.49.21-2.557.491zm-.256-.966C8.23 2.749 9.337 2.5 10 2.5c.662 0 1.77.249 2.813.525 1.066.282 2.14.614 2.772.815.528.168.926.623 1.003 1.184.573 4.197-.756 7.307-2.367 9.365a11.192 11.192 0 01-2.418 2.3 6.942 6.942 0 01-1.007.586c-.27.124-.558.225-.796.225s-.526-.101-.796-.225a6.908 6.908 0 01-1.007-.586 11.192 11.192 0 01-2.418-2.3c-1.611-2.058-2.94-5.168-2.367-9.365A1.454 1.454 0 014.415 3.84a61.105 61.105 0 012.772-.815z\" clip-rule=\"evenodd\"/><path d=\"M10 4.25c.909 0 3.188.685 4.254 1.022a.94.94 0 01.656.773c.814 6.424-4.13 9.452-4.91 9.452V4.25z\"/>'\n)\n\nexport const BIconShift = /*#__PURE__*/ makeIcon(\n 'Shift',\n '<path fill-rule=\"evenodd\" d=\"M9.27 4.047a1 1 0 011.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H13.5v3a1 1 0 01-1 1h-5a1 1 0 01-1-1v-3H3.654c-.875 0-1.328-1.045-.73-1.684L9.27 4.047zm7.076 7.453L10 4.731 3.654 11.5H6.5a1 1 0 011 1v3h5v-3a1 1 0 011-1h2.846z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconShiftFill = /*#__PURE__*/ makeIcon(\n 'ShiftFill',\n '<path fill-rule=\"evenodd\" d=\"M9.27 4.047a1 1 0 011.46 0l6.345 6.769c.6.639.146 1.684-.73 1.684H13.5v3a1 1 0 01-1 1h-5a1 1 0 01-1-1v-3H3.654c-.875 0-1.328-1.045-.73-1.684L9.27 4.047z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconSkipBackward = /*#__PURE__*/ makeIcon(\n 'SkipBackward',\n '<path fill-rule=\"evenodd\" d=\"M2.5 5.5A.5.5 0 013 6v3.248l6.267-3.636c.52-.302 1.233.043 1.233.696v2.94l6.267-3.636c.52-.302 1.233.043 1.233.696v7.384c0 .653-.713.998-1.233.696L10.5 10.752v2.94c0 .653-.713.998-1.233.696L3 10.752V14a.5.5 0 01-1 0V6a.5.5 0 01.5-.5zm7 1.133L3.696 10 9.5 13.367V6.633zm7.5 0L11.196 10 17 13.367V6.633z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconSkipBackwardFill = /*#__PURE__*/ makeIcon(\n 'SkipBackwardFill',\n '<path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M14 6v8\"/><path d=\"M13.596 10.697l-6.363 3.692c-.54.313-1.233-.066-1.233-.697V6.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 010 1.393z\"/>'\n)\n\nexport const BIconSkipEnd = /*#__PURE__*/ makeIcon(\n 'SkipEnd',\n '<path fill-rule=\"evenodd\" d=\"M14 5.5a.5.5 0 01.5.5v8a.5.5 0 01-1 0V6a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12.804 10L7 6.633v6.734L12.804 10zm.792-.696a.802.802 0 010 1.392l-6.363 3.692C6.713 14.69 6 14.345 6 13.692V6.308c0-.653.713-.998 1.233-.696l6.363 3.692z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconSkipEndFill = /*#__PURE__*/ makeIcon(\n 'SkipEndFill',\n '<path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M2.5 6v8\"/><path d=\"M2.904 10.697l6.363 3.692c.54.313 1.233-.066 1.233-.697V6.308c0-.63-.693-1.01-1.233-.696L2.904 9.304a.802.802 0 000 1.393z\"/><path d=\"M10.404 10.697l6.363 3.692c.54.313 1.233-.066 1.233-.697V6.308c0-.63-.692-1.01-1.233-.696l-6.363 3.692a.802.802 0 000 1.393z\"/>'\n)\n\nexport const BIconSkipForward = /*#__PURE__*/ makeIcon(\n 'SkipForward',\n '<path fill-rule=\"evenodd\" d=\"M17.5 5.5a.5.5 0 01.5.5v8a.5.5 0 01-1 0v-3.248l-6.267 3.636c-.52.302-1.233-.043-1.233-.696v-2.94l-6.267 3.636C2.713 14.69 2 14.345 2 13.692V6.308c0-.653.713-.998 1.233-.696L9.5 9.248v-2.94c0-.653.713-.998 1.233-.696L17 9.248V6a.5.5 0 01.5-.5zM3 6.633v6.734L8.804 10 3 6.633zm7.5 0v6.734L16.304 10 10.5 6.633z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconSkipForwardFill = /*#__PURE__*/ makeIcon(\n 'SkipForwardFill',\n '<path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M17.5 6v8\"/><path d=\"M9.596 10.697l-6.363 3.692c-.54.313-1.233-.066-1.233-.697V6.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 010 1.393z\"/><path d=\"M17.096 10.697l-6.363 3.692c-.54.313-1.233-.066-1.233-.697V6.308c0-.63.693-1.01 1.233-.696l6.363 3.692a.802.802 0 010 1.393z\"/>'\n)\n\nexport const BIconSkipStart = /*#__PURE__*/ makeIcon(\n 'SkipStart',\n '<path fill-rule=\"evenodd\" d=\"M6.5 5.5A.5.5 0 006 6v8a.5.5 0 001 0V6a.5.5 0 00-.5-.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7.696 10L13.5 6.633v6.734L7.696 10zm-.792-.696a.802.802 0 000 1.392l6.363 3.692c.52.302 1.233-.043 1.233-.696V6.308c0-.653-.713-.998-1.233-.696L6.904 9.304z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconSkipStartFill = /*#__PURE__*/ makeIcon(\n 'SkipStartFill',\n '<path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M6.5 6v8\"/><path d=\"M6.903 10.697l6.364 3.692c.54.313 1.232-.066 1.232-.697V6.308c0-.63-.692-1.01-1.232-.696L6.903 9.304a.802.802 0 000 1.393z\"/>'\n)\n\nexport const BIconSpeaker = /*#__PURE__*/ makeIcon(\n 'Speaker',\n '<path d=\"M11 6a1 1 0 11-2 0 1 1 0 012 0zm-2.5 6.5a1.5 1.5 0 113 0 1.5 1.5 0 01-3 0z\"/><path fill-rule=\"evenodd\" d=\"M6 2a2 2 0 00-2 2v12a2 2 0 002 2h8a2 2 0 002-2V4a2 2 0 00-2-2H6zm6 4a2 2 0 11-4 0 2 2 0 014 0zm-2 3a3.5 3.5 0 100 7 3.5 3.5 0 000-7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconSquare = /*#__PURE__*/ makeIcon(\n 'Square',\n '<path fill-rule=\"evenodd\" d=\"M16 3H4a1 1 0 00-1 1v12a1 1 0 001 1h12a1 1 0 001-1V4a1 1 0 00-1-1zM4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconSquareFill = /*#__PURE__*/ makeIcon(\n 'SquareFill',\n '<rect width=\"16\" height=\"16\" x=\"2\" y=\"2\" rx=\"2\"/>'\n)\n\nexport const BIconSquareHalf = /*#__PURE__*/ makeIcon(\n 'SquareHalf',\n '<path fill-rule=\"evenodd\" d=\"M10 3H4a1 1 0 00-1 1v12a1 1 0 001 1h6V3zM4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconStar = /*#__PURE__*/ makeIcon(\n 'Star',\n '<path fill-rule=\"evenodd\" d=\"M4.866 16.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.523-3.356c.329-.314.158-.888-.283-.95l-4.898-.696-2.184-4.327a.513.513 0 00-.927 0L7.354 7.12l-4.898.696c-.441.062-.612.636-.282.95l3.522 3.356-.83 4.73zm4.905-2.767l-3.686 1.894.694-3.957a.565.565 0 00-.163-.505L3.71 8.745l4.052-.576a.525.525 0 00.393-.288l1.847-3.658 1.846 3.658c.08.157.226.264.393.288l4.053.575-2.907 2.77a.564.564 0 00-.163.506l.694 3.957-3.686-1.894a.503.503 0 00-.461 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconStarFill = /*#__PURE__*/ makeIcon(\n 'StarFill',\n '<path d=\"M5.612 17.443c-.386.198-.824-.149-.746-.592l.83-4.73-3.522-3.356c-.33-.314-.16-.888.282-.95l4.898-.696 2.184-4.327c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.283.95l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L10 15.187l-4.389 2.256z\"/>'\n)\n\nexport const BIconStarHalf = /*#__PURE__*/ makeIcon(\n 'StarHalf',\n '<path fill-rule=\"evenodd\" d=\"M7.354 7.119l2.184-4.327A.516.516 0 0110 2.5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.537.537 0 0118 8.32a.55.55 0 01-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L10 15.187l-4.389 2.256a.52.52 0 01-.146.05c-.341.06-.668-.254-.6-.642l.83-4.73-3.522-3.356a.55.55 0 01-.172-.403.59.59 0 01.084-.302.513.513 0 01.37-.245l4.898-.696zM10 14.027c.08 0 .16.018.232.056l3.686 1.894-.694-3.957a.564.564 0 01.163-.505l2.907-2.77-4.053-.576a.525.525 0 01-.393-.288l-1.847-3.658-.001.003v9.8z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconStop = /*#__PURE__*/ makeIcon(\n 'Stop',\n '<path fill-rule=\"evenodd\" d=\"M5.5 7A1.5 1.5 0 017 5.5h6A1.5 1.5 0 0114.5 7v6a1.5 1.5 0 01-1.5 1.5H7A1.5 1.5 0 015.5 13V7zM7 6.5a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h6a.5.5 0 00.5-.5V7a.5.5 0 00-.5-.5H7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconStopFill = /*#__PURE__*/ makeIcon(\n 'StopFill',\n '<path d=\"M7 5.5h6A1.5 1.5 0 0114.5 7v6a1.5 1.5 0 01-1.5 1.5H7A1.5 1.5 0 015.5 13V7A1.5 1.5 0 017 5.5z\"/>'\n)\n\nexport const BIconStopwatch = /*#__PURE__*/ makeIcon(\n 'Stopwatch',\n '<path fill-rule=\"evenodd\" d=\"M10 17a6 6 0 100-12 6 6 0 000 12zm0 1a7 7 0 100-14 7 7 0 000 14z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 6.5a.5.5 0 01.5.5v4a.5.5 0 01-.5.5H6.5a.5.5 0 010-1h3V7a.5.5 0 01.5-.5zm-2.5-4A.5.5 0 018 2h4a.5.5 0 010 1H8a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/><path d=\"M9 3h2v2H9V3z\"/>'\n)\n\nexport const BIconStopwatchFill = /*#__PURE__*/ makeIcon(\n 'StopwatchFill',\n '<path fill-rule=\"evenodd\" d=\"M7.5 2.5A.5.5 0 018 2h4a.5.5 0 010 1h-1v1.07A7.002 7.002 0 0110 18 7 7 0 019 4.07V3H8a.5.5 0 01-.5-.5zm3 4.5a.5.5 0 00-1 0v3.5h-3a.5.5 0 000 1H10a.5.5 0 00.5-.5V7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconSun = /*#__PURE__*/ makeIcon(\n 'Sun',\n '<path d=\"M5.5 10a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0z\"/><path fill-rule=\"evenodd\" d=\"M10.202 2.28a.25.25 0 00-.404 0l-.91 1.255a.25.25 0 01-.334.067L7.232 2.79a.25.25 0 00-.374.155l-.36 1.508a.25.25 0 01-.282.189l-1.532-.244a.25.25 0 00-.286.286l.244 1.532a.25.25 0 01-.189.282l-1.508.36a.25.25 0 00-.155.374l.812 1.322a.25.25 0 01-.067.333l-1.256.91a.25.25 0 000 .405l1.256.91a.25.25 0 01.067.334l-.812 1.322a.25.25 0 00.155.374l1.508.36a.25.25 0 01.19.282l-.245 1.532a.25.25 0 00.286.286l1.532-.244a.25.25 0 01.282.189l.36 1.508a.25.25 0 00.374.155l1.322-.812a.25.25 0 01.333.067l.91 1.256a.25.25 0 00.405 0l.91-1.256a.25.25 0 01.334-.067l1.322.812a.25.25 0 00.374-.155l.36-1.508a.25.25 0 01.282-.19l1.532.245a.25.25 0 00.286-.286l-.244-1.532a.25.25 0 01.189-.282l1.508-.36a.25.25 0 00.155-.374l-.812-1.322a.25.25 0 01.067-.333l1.256-.91a.25.25 0 000-.405l-1.256-.91a.25.25 0 01-.067-.334l.812-1.322a.25.25 0 00-.155-.374l-1.508-.36a.25.25 0 01-.19-.282l.245-1.532a.25.25 0 00-.286-.286l-1.532.244a.25.25 0 01-.282-.189l-.36-1.509a.25.25 0 00-.374-.154l-1.322.812a.25.25 0 01-.333-.067l-.91-1.256zM10 4.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTable = /*#__PURE__*/ makeIcon(\n 'Table',\n '<path fill-rule=\"evenodd\" d=\"M16 3H4a1 1 0 00-1 1v12a1 1 0 001 1h12a1 1 0 001-1V4a1 1 0 00-1-1zM4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M17 6H3V5h14v1z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7 17.5v-14h1v14H7zm5 0v-14h1v14h-1z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M17 10H3V9h14v1zm0 4H3v-1h14v1z\" clip-rule=\"evenodd\"/><path d=\"M2 4a2 2 0 012-2h12a2 2 0 012 2v2H2V4z\"/>'\n)\n\nexport const BIconTablet = /*#__PURE__*/ makeIcon(\n 'Tablet',\n '<path fill-rule=\"evenodd\" d=\"M14 3.5H6a1 1 0 00-1 1v11a1 1 0 001 1h8a1 1 0 001-1v-11a1 1 0 00-1-1zm-8-1a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2v-11a2 2 0 00-2-2H6z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 15.5a1 1 0 100-2 1 1 0 000 2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTabletLandscape = /*#__PURE__*/ makeIcon(\n 'TabletLandscape',\n '<path fill-rule=\"evenodd\" d=\"M3.5 6v8a1 1 0 001 1h11a1 1 0 001-1V6a1 1 0 00-1-1h-11a1 1 0 00-1 1zm-1 8a2 2 0 002 2h11a2 2 0 002-2V6a2 2 0 00-2-2h-11a2 2 0 00-2 2v8z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M15.5 10a1 1 0 10-2 0 1 1 0 002 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTag = /*#__PURE__*/ makeIcon(\n 'Tag',\n '<path fill-rule=\"evenodd\" d=\"M2.5 4A1.5 1.5 0 014 2.5h4.586a1.5 1.5 0 011.06.44l7 7a1.5 1.5 0 010 2.12l-4.585 4.586a1.5 1.5 0 01-2.122 0l-7-7a1.5 1.5 0 01-.439-1.06V4zM4 3.5a.5.5 0 00-.5.5v4.586a.5.5 0 00.146.353l7 7a.5.5 0 00.708 0l4.585-4.585a.5.5 0 000-.708l-7-7a.5.5 0 00-.353-.146H4z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M4.5 6.5a2 2 0 114 0 2 2 0 01-4 0zm2-1a1 1 0 100 2 1 1 0 000-2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTagFill = /*#__PURE__*/ makeIcon(\n 'TagFill',\n '<path fill-rule=\"evenodd\" d=\"M4 3a1 1 0 00-1 1v4.586a1 1 0 00.293.707l7 7a1 1 0 001.414 0l4.586-4.586a1 1 0 000-1.414l-7-7A1 1 0 008.586 3H4zm4 3.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTerminal = /*#__PURE__*/ makeIcon(\n 'Terminal',\n '<path fill-rule=\"evenodd\" d=\"M16 4H4a1 1 0 00-1 1v10a1 1 0 001 1h12a1 1 0 001-1V5a1 1 0 00-1-1zM4 3a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M8 11a.5.5 0 01.5-.5h3a.5.5 0 010 1h-3A.5.5 0 018 11zM5.146 6.146a.5.5 0 01.708 0l2 2a.5.5 0 010 .708l-2 2a.5.5 0 01-.708-.708L6.793 8.5 5.146 6.854a.5.5 0 010-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTerminalFill = /*#__PURE__*/ makeIcon(\n 'TerminalFill',\n '<path fill-rule=\"evenodd\" d=\"M2 5a2 2 0 012-2h12a2 2 0 012 2v10a2 2 0 01-2 2H4a2 2 0 01-2-2V5zm9.5 5.5h-3a.5.5 0 000 1h3a.5.5 0 000-1zm-6.354-.354L6.793 8.5 5.146 6.854a.5.5 0 11.708-.708l2 2a.5.5 0 010 .708l-2 2a.5.5 0 01-.708-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTextCenter = /*#__PURE__*/ makeIcon(\n 'TextCenter',\n '<path fill-rule=\"evenodd\" d=\"M6 14.5a.5.5 0 01.5-.5h7a.5.5 0 010 1h-7a.5.5 0 01-.5-.5zm-2-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm2-3a.5.5 0 01.5-.5h7a.5.5 0 010 1h-7a.5.5 0 01-.5-.5zm-2-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTextIndentLeft = /*#__PURE__*/ makeIcon(\n 'TextIndentLeft',\n '<path fill-rule=\"evenodd\" d=\"M4 5.5a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm.646 2.146a.5.5 0 01.708 0l2 2a.5.5 0 010 .708l-2 2a.5.5 0 01-.708-.708L6.293 10 4.646 8.354a.5.5 0 010-.708zM9 8.5a.5.5 0 01.5-.5h6a.5.5 0 010 1h-6a.5.5 0 01-.5-.5zm0 3a.5.5 0 01.5-.5h6a.5.5 0 010 1h-6a.5.5 0 01-.5-.5zm-5 3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTextIndentRight = /*#__PURE__*/ makeIcon(\n 'TextIndentRight',\n '<path fill-rule=\"evenodd\" d=\"M4 5.5a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm10.646 2.146a.5.5 0 01.708.708L13.707 10l1.647 1.646a.5.5 0 01-.708.708l-2-2a.5.5 0 010-.708l2-2zM4 8.5a.5.5 0 01.5-.5h6a.5.5 0 010 1h-6a.5.5 0 01-.5-.5zm0 3a.5.5 0 01.5-.5h6a.5.5 0 010 1h-6a.5.5 0 01-.5-.5zm0 3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTextLeft = /*#__PURE__*/ makeIcon(\n 'TextLeft',\n '<path fill-rule=\"evenodd\" d=\"M4 14.5a.5.5 0 01.5-.5h7a.5.5 0 010 1h-7a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h7a.5.5 0 010 1h-7a.5.5 0 01-.5-.5zm0-3a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTextRight = /*#__PURE__*/ makeIcon(\n 'TextRight',\n '<path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M8.5 14.5h7m-11-3h11m-7-3h7m-11-3h11\"/>'\n)\n\nexport const BIconThreeDots = /*#__PURE__*/ makeIcon(\n 'ThreeDots',\n '<path fill-rule=\"evenodd\" d=\"M5 11.5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm5 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm5 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconThreeDotsVertical = /*#__PURE__*/ makeIcon(\n 'ThreeDotsVertical',\n '<path fill-rule=\"evenodd\" d=\"M11.5 15a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zm0-5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zm0-5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconToggleOff = /*#__PURE__*/ makeIcon(\n 'ToggleOff',\n '<path fill-rule=\"evenodd\" d=\"M13 6a4 4 0 010 8h-3a4.992 4.992 0 002-4 4.992 4.992 0 00-2-4h3zm-6 8a4 4 0 110-8 4 4 0 010 8zm-5-4a5 5 0 005 5h6a5 5 0 000-10H7a5 5 0 00-5 5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconToggleOn = /*#__PURE__*/ makeIcon(\n 'ToggleOn',\n '<path fill-rule=\"evenodd\" d=\"M7 5a5 5 0 000 10h6a5 5 0 000-10H7zm6 9a4 4 0 100-8 4 4 0 000 8z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconToggles = /*#__PURE__*/ makeIcon(\n 'Toggles',\n '<path fill-rule=\"evenodd\" d=\"M13.5 3h-7a2.5 2.5 0 000 5h7a2.5 2.5 0 000-5zm-7-1a3.5 3.5 0 100 7h7a3.5 3.5 0 100-7h-7zm0 9a3.5 3.5 0 100 7h7a3.5 3.5 0 100-7h-7zm7 6a2.5 2.5 0 100-5 2.5 2.5 0 000 5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 5.5a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zM6.5 8a2.5 2.5 0 100-5 2.5 2.5 0 000 5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTools = /*#__PURE__*/ makeIcon(\n 'Tools',\n '<path fill-rule=\"evenodd\" d=\"M2 3l1-1 3.081 2.2a1 1 0 01.419.815v.07a1 1 0 00.293.708L12.5 11.5l.914-.305a1 1 0 011.023.242l3.356 3.356a1 1 0 010 1.414l-1.586 1.586a1 1 0 01-1.414 0l-3.356-3.356a1 1 0 01-.242-1.023l.305-.914-5.707-5.707a1 1 0 00-.707-.293h-.071a1 1 0 01-.814-.419L2 3zm11.354 9.646a.5.5 0 00-.708.708l3 3a.5.5 0 00.708-.708l-3-3z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M17.898 4.223a3.003 3.003 0 01-3.679 3.674L7.878 14.15a3 3 0 11-2.027-2.027l6.252-6.341a3 3 0 013.675-3.68l-2.142 2.142L14 6l1.757.364 2.141-2.141zm-13.37 9.019L5 13l.471.242.529.026.287.445.445.287.026.529L7 15l-.242.471-.026.529-.445.287-.287.445-.529.026L5 17l-.471-.242L4 16.732l-.287-.445L3.268 16l-.026-.529L3 15l.242-.471.026-.529.445-.287.287-.445.529-.026z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTrash = /*#__PURE__*/ makeIcon(\n 'Trash',\n '<path d=\"M7.5 7.5A.5.5 0 018 8v6a.5.5 0 01-1 0V8a.5.5 0 01.5-.5zm2.5 0a.5.5 0 01.5.5v6a.5.5 0 01-1 0V8a.5.5 0 01.5-.5zm3 .5a.5.5 0 00-1 0v6a.5.5 0 001 0V8z\"/><path fill-rule=\"evenodd\" d=\"M16.5 5a1 1 0 01-1 1H15v9a2 2 0 01-2 2H7a2 2 0 01-2-2V6h-.5a1 1 0 01-1-1V4a1 1 0 011-1H8a1 1 0 011-1h2a1 1 0 011 1h3.5a1 1 0 011 1v1zM6.118 6L6 6.059V15a1 1 0 001 1h6a1 1 0 001-1V6.059L13.882 6H6.118zM4.5 5V4h11v1h-11z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTrashFill = /*#__PURE__*/ makeIcon(\n 'TrashFill',\n '<path fill-rule=\"evenodd\" d=\"M4.5 3a1 1 0 00-1 1v1a1 1 0 001 1H5v9a2 2 0 002 2h6a2 2 0 002-2V6h.5a1 1 0 001-1V4a1 1 0 00-1-1H12a1 1 0 00-1-1H9a1 1 0 00-1 1H4.5zm3 4a.5.5 0 01.5.5v7a.5.5 0 01-1 0v-7a.5.5 0 01.5-.5zM10 7a.5.5 0 01.5.5v7a.5.5 0 01-1 0v-7A.5.5 0 0110 7zm3 .5a.5.5 0 00-1 0v7a.5.5 0 001 0v-7z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTriangle = /*#__PURE__*/ makeIcon(\n 'Triangle',\n '<path fill-rule=\"evenodd\" d=\"M9.938 4.016a.146.146 0 00-.054.057L3.027 15.74a.176.176 0 00-.002.183c.016.03.037.05.054.06.015.01.034.017.066.017h13.713a.12.12 0 00.066-.017.163.163 0 00.055-.06.176.176 0 00-.003-.183L10.12 4.073a.146.146 0 00-.054-.057.13.13 0 00-.063-.016.13.13 0 00-.064.016zm1.043-.45a1.13 1.13 0 00-1.96 0L2.166 15.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L10.982 3.566z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTriangleFill = /*#__PURE__*/ makeIcon(\n 'TriangleFill',\n '<path fill-rule=\"evenodd\" d=\"M9.022 3.566a1.13 1.13 0 011.96 0l6.857 11.667c.457.778-.092 1.767-.98 1.767H3.144c-.889 0-1.437-.99-.98-1.767L9.022 3.566z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTriangleHalf = /*#__PURE__*/ makeIcon(\n 'TriangleHalf',\n '<path fill-rule=\"evenodd\" d=\"M9.938 4.016a.146.146 0 00-.054.057L3.027 15.74a.176.176 0 00-.002.183c.016.03.037.05.054.06.015.01.034.017.066.017l6.857-.017V4a.13.13 0 00-.064.016zm1.043-.45a1.13 1.13 0 00-1.96 0L2.166 15.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L10.982 3.566z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTrophy = /*#__PURE__*/ makeIcon(\n 'Trophy',\n '<path d=\"M5 3h10c-.495 3.467-.5 10-5 10S5.495 6.467 5 3zm0 15a1 1 0 011-1h8a1 1 0 011 1H5zm2-1a1 1 0 011-1h4a1 1 0 011 1H7z\"/><path fill-rule=\"evenodd\" d=\"M14.5 5a2 2 0 100 4 2 2 0 000-4zm-3 2a3 3 0 116 0 3 3 0 01-6 0zm-6-2a2 2 0 100 4 2 2 0 000-4zm-3 2a3 3 0 116 0 3 3 0 01-6 0z\" clip-rule=\"evenodd\"/><path d=\"M9 12h2v4H9v-4z\"/><path d=\"M12 13c0 .552-.895 1-2 1s-2-.448-2-1 .895-1 2-1 2 .448 2 1z\"/>'\n)\n\nexport const BIconTv = /*#__PURE__*/ makeIcon(\n 'Tv',\n '<path fill-rule=\"evenodd\" d=\"M2.216 6H1.5v-.04l.005-.083a2.957 2.957 0 01.298-1.102c.154-.309.394-.633.763-.88C2.94 3.648 3.413 3.5 4 3.5h12.039l.083.005a2.958 2.958 0 011.102.298c.309.154.633.394.88.763.248.373.396.847.396 1.434v6H18h.5v.039l-.005.083a2.957 2.957 0 01-.298 1.102 2.257 2.257 0 01-.763.88c-.373.248-.847.396-1.434.396H3.961l-.083-.005a2.956 2.956 0 01-1.102-.298 2.254 2.254 0 01-.88-.763C1.648 13.06 1.5 12.588 1.5 12V6h.716zm.284.002v-.008l.003-.044a1.959 1.959 0 01.195-.726c.095-.191.23-.367.423-.495.19-.127.466-.229.879-.229h12.006l.044.003a1.958 1.958 0 01.726.195c.191.095.367.23.495.423.127.19.229.466.229.879v6.006l-.003.044a1.959 1.959 0 01-.195.726c-.095.191-.23.367-.423.495-.19.127-.466.229-.879.229H3.994l-.044-.003a1.96 1.96 0 01-.726-.195 1.256 1.256 0 01-.495-.423c-.127-.19-.229-.466-.229-.879V6.002zM4.003 13.5zm.497 2A.5.5 0 015 15h10a.5.5 0 010 1H5a.5.5 0 01-.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTvFill = /*#__PURE__*/ makeIcon(\n 'TvFill',\n '<path fill-rule=\"evenodd\" d=\"M4.5 15.5A.5.5 0 015 15h10a.5.5 0 010 1H5a.5.5 0 01-.5-.5zM4 4h12s2 0 2 2v6s0 2-2 2H4s-2 0-2-2V6s0-2 2-2z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconType = /*#__PURE__*/ makeIcon(\n 'Type',\n '<path d=\"M4.244 15.081l.944-2.803H8.66l.944 2.803h1.257L7.54 5.75H6.322L3 15.081h1.244zm2.7-7.923l1.395 4.157h-2.83L6.91 7.158h.034zm9.146 7.027h.035v.896h1.128v-4.956c0-1.51-1.114-2.345-2.646-2.345-1.736 0-2.59.916-2.666 2.174h1.108c.068-.718.595-1.19 1.517-1.19.971 0 1.518.52 1.518 1.463v.732H14.19c-1.647.007-2.522.8-2.522 2.058 0 1.319.957 2.18 2.345 2.18 1.06 0 1.716-.43 2.078-1.011zm-1.763.035c-.752 0-1.456-.397-1.456-1.244 0-.65.424-1.115 1.408-1.115h1.805v.834c0 .896-.752 1.525-1.757 1.525z\"/>'\n)\n\nexport const BIconTypeBold = /*#__PURE__*/ makeIcon(\n 'TypeBold',\n '<path d=\"M10.21 15c2.106 0 3.412-1.087 3.412-2.823 0-1.306-.984-2.283-2.324-2.386v-.055a2.176 2.176 0 001.852-2.14c0-1.51-1.162-2.46-3.014-2.46H5.843V15h4.368zM7.908 6.674h1.696c.963 0 1.517.451 1.517 1.244 0 .834-.629 1.32-1.73 1.32H7.908V6.673zm0 6.788v-2.864h1.73c1.216 0 1.88.492 1.88 1.415 0 .943-.643 1.449-1.832 1.449H7.907z\"/>'\n)\n\nexport const BIconTypeH1 = /*#__PURE__*/ makeIcon(\n 'TypeH1',\n '<path d=\"M10.637 15V5.669H9.379V9.62H4.758V5.67H3.5V15h1.258v-4.273h4.62V15h1.259zm5.329 0V5.669h-1.244L12.5 7.316v1.265l2.16-1.565h.062V15h1.244z\"/>'\n)\n\nexport const BIconTypeH2 = /*#__PURE__*/ makeIcon(\n 'TypeH2',\n '<path d=\"M9.638 15V5.669H8.38V9.62H3.759V5.67H2.5V15h1.258v-4.273h4.62V15h1.259zm3.022-6.733v-.048c0-.889.63-1.668 1.716-1.668.957 0 1.675.608 1.675 1.572 0 .855-.554 1.504-1.067 2.085l-3.513 3.999V15H17.5v-1.094h-4.245v-.075l2.481-2.844c.875-.998 1.586-1.784 1.586-2.953 0-1.463-1.155-2.556-2.919-2.556-1.941 0-2.966 1.326-2.966 2.74v.049h1.223z\"/>'\n)\n\nexport const BIconTypeH3 = /*#__PURE__*/ makeIcon(\n 'TypeH3',\n '<path d=\"M9.637 15V5.669H8.379V9.62H3.758V5.67H2.5V15h1.258v-4.273h4.62V15h1.259zm3.625-4.273h1.018c1.142 0 1.935.67 1.949 1.675.013 1.005-.78 1.737-2.01 1.73-1.08-.007-1.853-.588-1.935-1.32h-1.176c.069 1.327 1.224 2.386 3.083 2.386 1.935 0 3.343-1.155 3.309-2.789-.027-1.51-1.251-2.16-2.037-2.249v-.068c.704-.123 1.764-.91 1.723-2.229-.035-1.353-1.176-2.4-2.954-2.385-1.873.006-2.857 1.162-2.898 2.358h1.196c.062-.69.711-1.299 1.696-1.299.998 0 1.695.622 1.695 1.525.007.922-.718 1.592-1.695 1.592h-.964v1.073z\"/>'\n)\n\nexport const BIconTypeItalic = /*#__PURE__*/ makeIcon(\n 'TypeItalic',\n '<path d=\"M9.991 13.674l1.538-7.219c.123-.595.246-.71 1.347-.807l.11-.52H9.211l-.11.52c1.06.096 1.128.212 1.005.807L8.57 13.674c-.123.595-.246.71-1.346.806l-.11.52h3.774l.11-.52c-1.06-.095-1.129-.211-1.006-.806z\"/>'\n)\n\nexport const BIconTypeStrikethrough = /*#__PURE__*/ makeIcon(\n 'TypeStrikethrough',\n '<path d=\"M10.527 15.164c-2.153 0-3.589-1.107-3.705-2.81h1.23c.144 1.06 1.129 1.703 2.544 1.703 1.34 0 2.31-.705 2.31-1.675 0-.827-.547-1.374-1.914-1.675l-.946-.207h3.45c.468.437.675.994.675 1.697 0 1.826-1.436 2.967-3.644 2.967zM8.602 8.5H7.167a2.776 2.776 0 01-.099-.76c0-1.627 1.436-2.768 3.48-2.768 1.969 0 3.39 1.175 3.445 2.85h-1.23c-.11-1.08-.964-1.743-2.25-1.743-1.23 0-2.18.602-2.18 1.607 0 .31.083.581.27.814z\"/><path fill-rule=\"evenodd\" d=\"M17 10.5H3v-1h14v1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconTypeUnderline = /*#__PURE__*/ makeIcon(\n 'TypeUnderline',\n '<path d=\"M7.313 5.136h-1.23v6.405c0 2.105 1.47 3.623 3.917 3.623s3.917-1.518 3.917-3.623V5.136h-1.23v6.323c0 1.49-.978 2.57-2.687 2.57-1.709 0-2.687-1.08-2.687-2.57V5.136z\"/><path fill-rule=\"evenodd\" d=\"M14.5 17h-9v-1h9v1z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconUnlock = /*#__PURE__*/ makeIcon(\n 'Unlock',\n '<path fill-rule=\"evenodd\" d=\"M11.655 9H4.333c-.264 0-.398.068-.471.121a.73.73 0 00-.224.296 1.626 1.626 0 00-.138.59V15c0 .342.076.531.14.635.064.106.151.18.256.237a1.122 1.122 0 00.436.127l.013.001h7.322c.264 0 .398-.068.471-.121a.73.73 0 00.224-.296 1.627 1.627 0 00.138-.59V10c0-.342-.076-.531-.14-.635a.658.658 0 00-.255-.237 1.123 1.123 0 00-.45-.128zm.012-1H4.333C2.5 8 2.5 10 2.5 10v5c0 2 1.833 2 1.833 2h7.334c1.833 0 1.833-2 1.833-2v-5c0-2-1.833-2-1.833-2zM10.5 5a3.5 3.5 0 117 0v3h-1V5a2.5 2.5 0 00-5 0v3h-1V5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconUnlockFill = /*#__PURE__*/ makeIcon(\n 'UnlockFill',\n '<path d=\"M2.5 10a2 2 0 012-2h7a2 2 0 012 2v5a2 2 0 01-2 2h-7a2 2 0 01-2-2v-5z\"/><path fill-rule=\"evenodd\" d=\"M10.5 5a3.5 3.5 0 117 0v3h-1V5a2.5 2.5 0 00-5 0v3h-1V5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconUpload = /*#__PURE__*/ makeIcon(\n 'Upload',\n '<path fill-rule=\"evenodd\" d=\"M2.5 10a.5.5 0 01.5.5V14a1 1 0 001 1h12a1 1 0 001-1v-3.5a.5.5 0 011 0V14a2 2 0 01-2 2H4a2 2 0 01-2-2v-3.5a.5.5 0 01.5-.5zM7 6.854a.5.5 0 00.707 0L10 4.56l2.293 2.293A.5.5 0 1013 6.146L10.354 3.5a.5.5 0 00-.708 0L7 6.146a.5.5 0 000 .708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 4a.5.5 0 01.5.5v8a.5.5 0 01-1 0v-8A.5.5 0 0110 4z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconVolumeDown = /*#__PURE__*/ makeIcon(\n 'VolumeDown',\n '<path fill-rule=\"evenodd\" d=\"M10.717 5.55A.5.5 0 0111 6v8a.5.5 0 01-.812.39L7.825 12.5H5.5A.5.5 0 015 12V8a.5.5 0 01.5-.5h2.325l2.363-1.89a.5.5 0 01.529-.06zM10 7.04L8.312 8.39A.5.5 0 018 8.5H6v3h2a.5.5 0 01.312.11L10 12.96V7.04z\" clip-rule=\"evenodd\"/><path d=\"M12.707 13.182A4.486 4.486 0 0014.025 10a4.486 4.486 0 00-1.318-3.182L12 7.525A3.489 3.489 0 0113.025 10c0 .966-.392 1.841-1.025 2.475l.707.707z\"/>'\n)\n\nexport const BIconVolumeDownFill = /*#__PURE__*/ makeIcon(\n 'VolumeDownFill',\n '<path fill-rule=\"evenodd\" d=\"M10.717 5.55A.5.5 0 0111 6v8a.5.5 0 01-.812.39L7.825 12.5H5.5A.5.5 0 015 12V8a.5.5 0 01.5-.5h2.325l2.363-1.89a.5.5 0 01.529-.06z\" clip-rule=\"evenodd\"/><path d=\"M12.707 13.182A4.486 4.486 0 0014.025 10a4.486 4.486 0 00-1.318-3.182L12 7.525A3.489 3.489 0 0113.025 10c0 .966-.392 1.841-1.025 2.475l.707.707z\"/>'\n)\n\nexport const BIconVolumeMute = /*#__PURE__*/ makeIcon(\n 'VolumeMute',\n '<path fill-rule=\"evenodd\" d=\"M8.717 5.55A.5.5 0 019 6v8a.5.5 0 01-.812.39L5.825 12.5H3.5A.5.5 0 013 12V8a.5.5 0 01.5-.5h2.325l2.363-1.89a.5.5 0 01.529-.06zM8 7.04L6.312 8.39A.5.5 0 016 8.5H4v3h2a.5.5 0 01.312.11L8 12.96V7.04zm7.854.606a.5.5 0 010 .708l-4 4a.5.5 0 01-.708-.708l4-4a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M11.146 7.646a.5.5 0 000 .708l4 4a.5.5 0 00.708-.708l-4-4a.5.5 0 00-.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconVolumeMuteFill = /*#__PURE__*/ makeIcon(\n 'VolumeMuteFill',\n '<path fill-rule=\"evenodd\" d=\"M8.717 5.55A.5.5 0 019 6v8a.5.5 0 01-.812.39L5.825 12.5H3.5A.5.5 0 013 12V8a.5.5 0 01.5-.5h2.325l2.363-1.89a.5.5 0 01.529-.06zm7.137 1.596a.5.5 0 010 .708l-4 4a.5.5 0 01-.708-.708l4-4a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M11.146 7.146a.5.5 0 000 .708l4 4a.5.5 0 00.708-.708l-4-4a.5.5 0 00-.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconVolumeUp = /*#__PURE__*/ makeIcon(\n 'VolumeUp',\n '<path fill-rule=\"evenodd\" d=\"M8.717 5.55A.5.5 0 019 6v8a.5.5 0 01-.812.39L5.825 12.5H3.5A.5.5 0 013 12V8a.5.5 0 01.5-.5h2.325l2.363-1.89a.5.5 0 01.529-.06zM8 7.04L6.312 8.39A.5.5 0 016 8.5H4v3h2a.5.5 0 01.312.11L8 12.96V7.04z\" clip-rule=\"evenodd\"/><path d=\"M13.536 16.01a8.473 8.473 0 002.49-6.01 8.473 8.473 0 00-2.49-6.01l-.708.707A7.476 7.476 0 0115.025 10c0 2.071-.84 3.946-2.197 5.303l.708.707z\"/><path d=\"M12.121 14.596A6.48 6.48 0 0014.025 10a6.48 6.48 0 00-1.904-4.596l-.707.707A5.483 5.483 0 0113.025 10a5.483 5.483 0 01-1.61 3.89l.706.706z\"/><path d=\"M10.707 13.182A4.486 4.486 0 0012.025 10a4.486 4.486 0 00-1.318-3.182L10 7.525A3.489 3.489 0 0111.025 10c0 .966-.392 1.841-1.025 2.475l.707.707z\"/>'\n)\n\nexport const BIconVolumeUpFill = /*#__PURE__*/ makeIcon(\n 'VolumeUpFill',\n '<path d=\"M13.536 16.01a8.473 8.473 0 002.49-6.01 8.473 8.473 0 00-2.49-6.01l-.708.707A7.476 7.476 0 0115.025 10c0 2.071-.84 3.946-2.197 5.303l.708.707z\"/><path d=\"M12.121 14.596A6.48 6.48 0 0014.025 10a6.48 6.48 0 00-1.904-4.596l-.707.707A5.483 5.483 0 0113.025 10a5.483 5.483 0 01-1.61 3.89l.706.706z\"/><path d=\"M10.707 13.182A4.486 4.486 0 0012.025 10a4.486 4.486 0 00-1.318-3.182L10 7.525A3.489 3.489 0 0111.025 10c0 .966-.392 1.841-1.025 2.475l.707.707z\"/><path fill-rule=\"evenodd\" d=\"M8.717 5.55A.5.5 0 019 6v8a.5.5 0 01-.812.39L5.825 12.5H3.5A.5.5 0 013 12V8a.5.5 0 01.5-.5h2.325l2.363-1.89a.5.5 0 01.529-.06z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconWallet = /*#__PURE__*/ makeIcon(\n 'Wallet',\n '<path fill-rule=\"evenodd\" d=\"M3.5 5a.5.5 0 00-.5.5v2h5a.5.5 0 01.5.5c0 .253.08.644.306.958.207.288.557.542 1.194.542.637 0 .987-.254 1.194-.542.226-.314.306-.705.306-.958a.5.5 0 01.5-.5h5v-2a.5.5 0 00-.5-.5h-13zM17 8.5h-4.551a2.678 2.678 0 01-.443 1.042c-.393.546-1.043.958-2.006.958-.963 0-1.613-.412-2.006-.958A2.679 2.679 0 017.551 8.5H3v6a.5.5 0 00.5.5h13a.5.5 0 00.5-.5v-6zm-15-3A1.5 1.5 0 013.5 4h13A1.5 1.5 0 0118 5.5v9a1.5 1.5 0 01-1.5 1.5h-13A1.5 1.5 0 012 14.5v-9z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconWatch = /*#__PURE__*/ makeIcon(\n 'Watch',\n '<path fill-rule=\"evenodd\" d=\"M6 16.333v-1.86A5.985 5.985 0 014 10c0-1.777.772-3.374 2-4.472V3.667C6 2.747 6.746 2 7.667 2h4.666C13.253 2 14 2.746 14 3.667v1.86A5.985 5.985 0 0116 10a5.985 5.985 0 01-2 4.472v1.861c0 .92-.746 1.667-1.667 1.667H7.667C6.747 18 6 17.254 6 16.333zM15 10a5 5 0 10-10 0 5 5 0 0010 0z\" clip-rule=\"evenodd\"/><rect width=\"1\" height=\"2\" x=\"15.5\" y=\"9\" rx=\".5\"/><path fill-rule=\"evenodd\" d=\"M10 6.5a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H8a.5.5 0 010-1h1.5V7a.5.5 0 01.5-.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconWifi = /*#__PURE__*/ makeIcon(\n 'Wifi',\n '<path fill-rule=\"evenodd\" d=\"M8.858 13.858A1.991 1.991 0 0110 13.5c.425 0 .818.132 1.142.358L10 15l-1.142-1.142z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.731 14.024l.269.269.269-.269a1.506 1.506 0 00-.538 0zm-1.159-.576A2.49 2.49 0 0110 13c.53 0 1.023.165 1.428.448a.5.5 0 01.068.763l-1.143 1.143a.5.5 0 01-.707 0L8.504 14.21a.5.5 0 01.354-.853v.5l-.286-.41zM10 11.5a4.478 4.478 0 00-2.7.9.5.5 0 01-.6-.8c.919-.69 2.062-1.1 3.3-1.1s2.381.41 3.3 1.1a.5.5 0 01-.6.8 4.478 4.478 0 00-2.7-.9zm0-3c-1.833 0-3.51.657-4.814 1.748a.5.5 0 11-.642-.766A8.468 8.468 0 0110 7.5c2.076 0 3.98.745 5.456 1.982a.5.5 0 01-.642.766A7.468 7.468 0 0010 8.5z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M10 5.5c-2.657 0-5.082.986-6.932 2.613a.5.5 0 11-.66-.75A11.458 11.458 0 0110 4.5c2.91 0 5.567 1.08 7.592 2.862a.5.5 0 11-.66.751A10.458 10.458 0 0010 5.5z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconWindow = /*#__PURE__*/ makeIcon(\n 'Window',\n '<path fill-rule=\"evenodd\" d=\"M16 4H4a1 1 0 00-1 1v10a1 1 0 001 1h12a1 1 0 001-1V5a1 1 0 00-1-1zM4 3a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M17 8H3V7h14v1z\" clip-rule=\"evenodd\"/><path d=\"M5 5.5a.5.5 0 11-1 0 .5.5 0 011 0zm1.5 0a.5.5 0 11-1 0 .5.5 0 011 0zm1.5 0a.5.5 0 11-1 0 .5.5 0 011 0z\"/>'\n)\n\nexport const BIconWrench = /*#__PURE__*/ makeIcon(\n 'Wrench',\n '<path fill-rule=\"evenodd\" d=\"M2.102 4.223A3.004 3.004 0 005 8c.27 0 .532-.036.78-.103l6.342 6.252A3.003 3.003 0 0015 18a3 3 0 10-.851-5.878L7.897 5.781A3.004 3.004 0 004.223 2.1l2.141 2.142L6 6l-1.757.364-2.141-2.141zm13.37 9.019L15 13l-.471.242-.529.026-.287.445-.445.287-.026.529L13 15l.242.471.026.529.445.287.287.445.529.026L15 17l.471-.242.529-.026.287-.445.445-.287.026-.529L17 15l-.242-.471-.026-.529-.445-.287-.287-.445-.529-.026z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconX = /*#__PURE__*/ makeIcon(\n 'X',\n '<path fill-rule=\"evenodd\" d=\"M5.646 5.646a.5.5 0 000 .708l8 8a.5.5 0 00.708-.708l-8-8a.5.5 0 00-.708 0z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M14.354 5.646a.5.5 0 010 .708l-8 8a.5.5 0 01-.708-.708l8-8a.5.5 0 01.708 0z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconXCircle = /*#__PURE__*/ makeIcon(\n 'XCircle',\n '<path fill-rule=\"evenodd\" d=\"M10 17a7 7 0 100-14 7 7 0 000 14zm0 1a8 8 0 100-16 8 8 0 000 16z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M12.646 13.354l-6-6 .708-.708 6 6-.708.708z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M7.354 13.354l6-6-.708-.708-6 6 .708.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconXCircleFill = /*#__PURE__*/ makeIcon(\n 'XCircleFill',\n '<path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM7.354 6.646L10 9.293l2.646-2.647a.5.5 0 01.708.708L10.707 10l2.647 2.646a.5.5 0 01-.708.708L10 10.707l-2.646 2.647a.5.5 0 01-.708-.708L9.293 10 6.646 7.354a.5.5 0 11.708-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconXOctagon = /*#__PURE__*/ makeIcon(\n 'XOctagon',\n '<path fill-rule=\"evenodd\" d=\"M6.54 2.146A.5.5 0 016.893 2h6.214a.5.5 0 01.353.146l4.394 4.394a.5.5 0 01.146.353v6.214a.5.5 0 01-.146.353l-4.394 4.394a.5.5 0 01-.353.146H6.893a.5.5 0 01-.353-.146L2.146 13.46A.5.5 0 012 13.107V6.893a.5.5 0 01.146-.353L6.54 2.146zM7.1 3L3 7.1v5.8L7.1 17h5.8l4.1-4.1V7.1L12.9 3H7.1z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.293 10L6.646 7.354l.708-.708L10 9.293l2.646-2.647.708.708L10.707 10l2.647 2.646-.707.708L10 10.707l-2.646 2.647-.708-.707L9.293 10z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconXOctagonFill = /*#__PURE__*/ makeIcon(\n 'XOctagonFill',\n '<path fill-rule=\"evenodd\" d=\"M13.46 2.146A.5.5 0 0013.107 2H6.893a.5.5 0 00-.353.146L2.146 6.54A.5.5 0 002 6.893v6.214a.5.5 0 00.146.353l4.394 4.394a.5.5 0 00.353.146h6.214a.5.5 0 00.353-.146l4.394-4.394a.5.5 0 00.146-.353V6.893a.5.5 0 00-.146-.353L13.46 2.146zm-6.106 4.5L10 9.293l2.646-2.647a.5.5 0 01.708.708L10.707 10l2.647 2.646a.5.5 0 01-.708.708L10 10.707l-2.646 2.647a.5.5 0 01-.708-.708L9.293 10 6.646 7.354a.5.5 0 11.708-.708z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconXSquare = /*#__PURE__*/ makeIcon(\n 'XSquare',\n '<path fill-rule=\"evenodd\" d=\"M16 3H4a1 1 0 00-1 1v12a1 1 0 001 1h12a1 1 0 001-1V4a1 1 0 00-1-1zM4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H4z\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M9.293 10L6.646 7.354l.708-.708L10 9.293l2.646-2.647.708.708L10.707 10l2.647 2.646-.708.708L10 10.707l-2.646 2.647-.708-.707L9.293 10z\" clip-rule=\"evenodd\"/>'\n)\n\nexport const BIconXSquareFill = /*#__PURE__*/ makeIcon(\n 'XSquareFill',\n '<path fill-rule=\"evenodd\" d=\"M4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H4zm3.354 4.646L10 9.293l2.646-2.647a.5.5 0 01.708.708L10.707 10l2.647 2.646a.5.5 0 01-.708.708L10 10.707l-2.646 2.647a.5.5 0 01-.708-.708L9.293 10 6.646 7.354a.5.5 0 11.708-.708z\" clip-rule=\"evenodd\"/>'\n)\n\n// --- END AUTO-GENERATED FILE ---\n","import Vue from '../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { commonIconProps, BVIconBase } from './helpers/icon-base'\n\n// @vue/component\nexport const BIconstack = /*#__PURE__*/ Vue.extend({\n name: 'BIconstack',\n functional: true,\n props: { ...commonIconProps },\n render(h, { data, props, children }) {\n return h(\n BVIconBase,\n mergeData(data, { staticClass: 'b-iconstack', props: { ...props, stacked: false } }),\n children\n )\n }\n})\n","import 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 {\n createDate,\n createDateFormatter,\n datesEqual,\n firstDateOfMonth,\n formatYMD,\n lastDateOfMonth,\n oneMonthAgo,\n oneMonthAhead,\n oneYearAgo,\n oneYearAhead,\n parseYMD,\n resolveLocale\n} from '../../utils/date'\nimport { requestAF } from '../../utils/dom'\nimport { isArray, isFunction, isPlainObject, isString } from '../../utils/inspect'\nimport { toInteger } from '../../utils/number'\nimport { toString } from '../../utils/string'\nimport idMixin from '../../mixins/id'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport { BIconChevronLeft, BIconCircleFill } from '../../icons/icons'\nimport { BIconstack } from '../../icons/iconstack'\n\n// --- Constants ---\n\nconst NAME = 'BCalendar'\n\n// Key Codes\nconst { UP, DOWN, LEFT, RIGHT, PAGEUP, PAGEDOWN, HOME, END, ENTER, SPACE } = KeyCodes\n\n// Languages that are RTL\nconst RTL_LANGS = [\n 'ar',\n 'az',\n 'ckb',\n 'fa',\n 'he',\n 'ks',\n 'lrc',\n 'mzn',\n 'ps',\n 'sd',\n 'te',\n 'ug',\n 'ur',\n 'yi'\n].map(locale => locale.toLowerCase())\n\n// --- Helper utilities ---\n\nexport const isLocaleRTL = locale => {\n // Determines if the locale is RTL (only single locale supported)\n const parts = toString(locale)\n .toLowerCase()\n .replace(/-u-.+/, '')\n .split('-')\n const locale1 = parts.slice(0, 2).join('-')\n const locale2 = parts[0]\n return arrayIncludes(RTL_LANGS, locale1) || arrayIncludes(RTL_LANGS, locale2)\n}\n\n// --- BCalendar component ---\n\n// @vue/component\nexport const BCalendar = 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 // And also for some validation libraries to work\n prop: 'value',\n event: 'input'\n },\n props: {\n value: {\n type: [String, Date]\n // default: null\n },\n valueAsDate: {\n // Always return the `v-model` value as a date object\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n },\n min: {\n type: [String, Date]\n // default: null\n },\n max: {\n type: [String, Date]\n // default: null\n },\n dateDisabledFn: {\n type: Function\n // default: null\n },\n startWeekday: {\n // `0` (Sunday), `1` (Monday), ... `6` (Saturday)\n // Day of week to start calendar on\n type: [Number, String],\n default: 0\n },\n locale: {\n // Locale(s) to use\n // Default is to use page/browser default setting\n type: [String, Array]\n // default: null\n },\n direction: {\n // 'ltr', 'rtl', or `null` (for auto detect)\n type: String\n // default: null\n },\n selectedVariant: {\n // Variant color to use for the selected date\n type: String,\n default: 'primary'\n },\n todayVariant: {\n // Variant color to use for today's date (defaults to `variant`)\n type: String\n // default: null\n },\n noHighlightToday: {\n // Disable highlighting today's date\n type: Boolean,\n default: false\n },\n dateInfoFn: {\n // Function to set a class of (classes) on the date cell\n // if passed a string or an array\n // TODO:\n // If the function returns an object, look for class prop for classes,\n // and other props for handling events/details/descriptions\n type: Function\n // default: null\n },\n width: {\n // Has no effect if prop `block` is set\n type: String,\n default: '270px'\n },\n block: {\n // Makes calendar the full width of its parent container\n type: Boolean,\n default: false\n },\n hideHeader: {\n // When true makes the selected date header `sr-only`\n type: Boolean,\n default: false\n },\n hidden: {\n // When `true`, renders a comment node, but keeps the component instance active\n // Mainly for <b-form-date>, so that we can get the component's value and locale\n // But we might just use separate date formatters, using the resolved locale\n // (adjusted for the gregorian calendar)\n type: Boolean,\n default: false\n },\n ariaControls: {\n type: String\n // default: null\n },\n roleDescription: {\n type: String\n // default: null\n },\n // Labels for buttons and keyboard shortcuts\n labelPrevYear: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelPrevYear')\n },\n labelPrevMonth: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelPrevMonth')\n },\n labelCurrentMonth: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelCurrentMonth')\n },\n labelNextMonth: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelNextMonth')\n },\n labelNextYear: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelNextYear')\n },\n labelToday: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelToday')\n },\n labelSelected: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelSelected')\n },\n labelNoDateSelected: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelNoDateSelected')\n },\n labelCalendar: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelCalendar')\n },\n labelNav: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelNav')\n },\n labelHelp: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelHelp')\n }\n },\n data() {\n const selected = formatYMD(this.value) || ''\n return {\n // Selected date\n selectedYMD: selected,\n // Date in calendar grid that has `tabindex` of `0`\n activeYMD: selected || formatYMD(this.getToday()),\n // Will be true if the calendar grid has/contains focus\n gridHasFocus: false,\n // Flag to enable the `aria-live` region(s) after mount\n // to prevent screen reader \"outbursts\" when mounting\n isLive: false\n }\n },\n computed: {\n // TODO: Use computed props to convert `YYYY-MM-DD` to `Date` object\n selectedDate() {\n // Selected as a `Date` object\n return parseYMD(this.selectedYMD)\n },\n activeDate() {\n // Active as a `Date` object\n return parseYMD(this.activeYMD)\n },\n computedMin() {\n return parseYMD(this.min)\n },\n computedMax() {\n return parseYMD(this.max)\n },\n computedWeekStarts() {\n // `startWeekday` is a prop (constrained to `0` through `6`)\n return Math.max(toInteger(this.startWeekday) || 0, 0) % 7\n },\n computedLocale() {\n // Returns the resolved locale used by the calendar\n return resolveLocale(concat(this.locale).filter(identity), 'gregory')\n },\n calendarLocale() {\n // This locale enforces the gregorian calendar (for use in formatter functions)\n // Needed because IE 11 resolves `ar-IR` as islamic-civil calendar\n // and IE 11 (and some other browsers) do not support the `calendar` option\n // And we currently only support the gregorian calendar\n const fmt = new Intl.DateTimeFormat(this.computedLocale, { calendar: 'gregory' })\n const calendar = fmt.resolvedOptions().calendar\n let locale = fmt.resolvedOptions().locale\n /* istanbul ignore if: mainly for IE 11 and a few other browsers, hard to test in JSDOM */\n if (calendar !== 'gregory') {\n // Ensure the locale requests the gregorian calendar\n // Mainly for IE 11, and currently we can't handle non-gregorian calendars\n // TODO: Should we always return this value?\n locale = locale.replace(/-u-.+$/i, '').concat('-u-ca-gregory')\n }\n return locale\n },\n calendarYear() {\n return this.activeDate.getFullYear()\n },\n calendarMonth() {\n return this.activeDate.getMonth()\n },\n calendarFirstDay() {\n return createDate(this.calendarYear, this.calendarMonth, 1)\n },\n calendarDaysInMonth() {\n // We create a new date as to not mutate the original\n const date = createDate(this.calendarFirstDay)\n date.setMonth(date.getMonth() + 1, 0)\n return date.getDate()\n },\n computedVariant() {\n return `btn-${this.selectedVariant || 'primary'}`\n },\n computedTodayVariant() {\n return `btn-outline-${this.todayVariant || this.selectedVariant || 'primary'}`\n },\n isRTL() {\n // `true` if the language requested is RTL\n const dir = toString(this.direction).toLowerCase()\n if (dir === 'rtl') {\n /* istanbul ignore next */\n return true\n } else if (dir === 'ltr') {\n /* istanbul ignore next */\n return false\n }\n return isLocaleRTL(this.computedLocale)\n },\n context() {\n const selectedYMD = this.selectedYMD\n const selectedDate = parseYMD(selectedYMD)\n const activeYMD = this.activeYMD\n const activeDate = parseYMD(activeYMD)\n return {\n // The current value of the `v-model`\n selectedYMD: selectedYMD,\n selectedDate: selectedDate,\n selectedFormatted: selectedDate\n ? this.formatDateString(selectedDate)\n : this.labelNoDateSelected,\n // Which date cell is considered active due to navigation\n activeYMD: activeYMD,\n activeDate: activeDate,\n activeFormatted: activeDate ? this.formatDateString(activeDate) : '',\n // `true` if the date is disabled (when using keyboard navigation)\n disabled: this.dateDisabled(activeDate),\n // Locales used in formatting dates\n locale: this.computedLocale,\n calendarLocale: this.calendarLocale,\n rtl: this.isRTL\n }\n },\n // Computed props that return a function reference\n dateOutOfRange() {\n // Check wether a date is within the min/max range\n // returns a new function ref if the pops change\n // We do this as we need to trigger the calendar computed prop\n // to update when these props update\n const min = this.computedMin\n const max = this.computedMax\n return date => {\n // Handle both `YYYY-MM-DD` and `Date` objects\n date = parseYMD(date)\n return (min && date < min) || (max && date > max)\n }\n },\n dateDisabled() {\n // Returns a function for validating if a date is within range\n // We grab this variables first to ensure a new function ref\n // is generated when the props value changes\n // We do this as we need to trigger the calendar computed prop\n // to update when these props update\n const rangeFn = this.dateOutOfRange\n const disabledFn = isFunction(this.dateDisabledFn) ? this.dateDisabledFn : () => false\n // Return the function ref\n return date => {\n // Handle both `YYYY-MM-DD` and `Date` objects\n date = parseYMD(date)\n const ymd = formatYMD(date)\n return !!(rangeFn(date) || disabledFn(ymd, date))\n }\n },\n // Computed props that return date formatter functions\n formatDateString() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'long',\n calendar: 'gregory'\n })\n },\n formatYearMonth() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, {\n year: 'numeric',\n month: 'long',\n calendar: 'gregory'\n })\n },\n formatWeekdayName() {\n return createDateFormatter(this.calendarLocale, { weekday: 'long', calendar: 'gregory' })\n },\n formatWeekdayNameShort() {\n // Used as the header cells\n return createDateFormatter(this.calendarLocale, { weekday: 'short', calendar: 'gregory' })\n },\n formatDay() {\n return createDateFormatter(this.calendarLocale, { day: 'numeric', calendar: 'gregory' })\n },\n // Disabled states for the nav buttons\n prevYearDisabled() {\n const min = this.computedMin\n return this.disabled || (min && lastDateOfMonth(oneYearAgo(this.activeDate)) < min)\n },\n prevMonthDisabled() {\n const min = this.computedMin\n return this.disabled || (min && lastDateOfMonth(oneMonthAgo(this.activeDate)) < min)\n },\n thisMonthDisabled() {\n // TODO: We could/should check if today is out of range\n return this.disabled\n },\n nextMonthDisabled() {\n const max = this.computedMax\n return this.disabled || (max && firstDateOfMonth(oneMonthAhead(this.activeDate)) > max)\n },\n nextYearDisabled() {\n const max = this.computedMax\n return this.disabled || (max && firstDateOfMonth(oneYearAhead(this.activeDate)) > max)\n },\n // Calendar generation\n calendar() {\n const matrix = []\n const firstDay = this.calendarFirstDay\n const calendarYear = firstDay.getFullYear()\n const calendarMonth = firstDay.getMonth()\n const daysInMonth = this.calendarDaysInMonth\n const startIndex = firstDay.getDay() // `0`..`6`\n const weekOffset = (this.computedWeekStarts > startIndex ? 7 : 0) - this.computedWeekStarts\n // TODO: Change `dateInfoFn` to handle events and notes as well as classes\n const dateInfoFn = isFunction(this.dateInfoFn) ? this.dateInfoFn : () => ({})\n // Build the calendar matrix\n let currentDay = 0 - weekOffset - startIndex\n for (let week = 0; week < 6 && currentDay < daysInMonth; week++) {\n // For each week\n matrix[week] = []\n // The following could be a map function\n for (let j = 0; j < 7; j++) {\n // For each day in week\n currentDay++\n const date = createDate(calendarYear, calendarMonth, currentDay)\n const month = date.getMonth()\n const dayYMD = formatYMD(date)\n const dayDisabled = this.dateDisabled(date)\n // TODO: This could be a normalizer method\n let dateInfo = dateInfoFn(dayYMD, parseYMD(dayYMD))\n dateInfo =\n isString(dateInfo) || isArray(dateInfo)\n ? { class: dateInfo }\n : isPlainObject(dateInfo)\n ? { class: '', ...dateInfo }\n : { class: '' }\n matrix[week].push({\n ymd: dayYMD,\n // Cell content\n day: this.formatDay(date),\n label: this.formatDateString(date),\n // Flags for styling\n isThisMonth: month === calendarMonth,\n isDisabled: dayDisabled,\n // TODO: Handle other dateInfo properties such as notes/events\n info: dateInfo\n })\n }\n }\n return matrix\n },\n calendarHeadings() {\n return this.calendar[0].map(d => {\n return {\n text: this.formatWeekdayNameShort(parseYMD(d.ymd)),\n label: this.formatWeekdayName(parseYMD(d.ymd))\n }\n })\n }\n },\n watch: {\n value(newVal, oldVal) {\n const selected = formatYMD(newVal) || ''\n const old = formatYMD(oldVal) || ''\n if (!datesEqual(selected, old)) {\n this.activeYMD = selected || this.activeYMD\n this.selectedYMD = selected\n }\n },\n selectedYMD(newYMD, oldYMD) {\n // TODO:\n // Should we compare to `formatYMD(this.value)` and emit\n // only if they are different?\n if (newYMD !== oldYMD) {\n this.$emit('input', this.valueAsDate ? parseYMD(newYMD) || null : newYMD || '')\n }\n },\n context(newVal, oldVal) {\n if (!looseEqual(newVal, oldVal)) {\n this.$emit('context', newVal)\n }\n },\n hidden(newVal) {\n // Reset the active focused day when hidden\n this.activeYMD = this.selectedYMD || formatYMD(this.value) || formatYMD(this.getToday())\n // Enable/disable the live regions\n this.setLive(!newVal)\n }\n },\n created() {\n this.$nextTick(() => {\n this.$emit('context', this.context)\n })\n },\n mounted() {\n this.setLive(true)\n },\n activated() /* istanbul ignore next */ {\n this.setLive(true)\n },\n deactivated() /* istanbul ignore next */ {\n this.setLive(false)\n },\n beforeDestroy() {\n this.setLive(false)\n },\n methods: {\n // Public method(s)\n focus() {\n if (!this.disabled) {\n try {\n this.$refs.grid.focus()\n } catch {}\n }\n },\n blur() {\n try {\n this.$refs.grid.blur()\n } catch {}\n },\n // Private methods\n setLive(on) {\n if (on) {\n this.$nextTick(() => {\n requestAF(() => {\n this.isLive = true\n })\n })\n } else {\n this.isLive = false\n }\n },\n getToday() {\n return parseYMD(createDate())\n },\n constrainDate(date) {\n // Constrains a date between min and max\n // returns a new `Date` object instance\n date = parseYMD(date)\n const min = this.computedMin || date\n const max = this.computedMax || date\n return createDate(date < min ? min : date > max ? max : date)\n },\n emitSelected(date) {\n // Performed in a `$nextTick()` to (probably) ensure\n // the input event has emitted first\n this.$nextTick(() => {\n this.$emit('selected', formatYMD(date) || '', parseYMD(date) || null)\n })\n },\n // Event handlers\n setGridFocusFlag(evt) {\n // Sets the gridHasFocus flag to make date \"button\" look focused\n this.gridHasFocus = !this.disabled && evt.type === 'focus'\n },\n onKeydownWrapper(evt) {\n // Calendar keyboard navigation\n // Handles PAGEUP/PAGEDOWN/END/HOME/LEFT/UP/RIGHT/DOWN\n // Focuses grid after updating\n const keyCode = evt.keyCode\n const altKey = evt.altKey\n if (!arrayIncludes([PAGEUP, PAGEDOWN, END, HOME, LEFT, UP, RIGHT, DOWN], keyCode)) {\n /* istanbul ignore next */\n return\n }\n evt.preventDefault()\n evt.stopPropagation()\n let activeDate = createDate(this.activeDate)\n let checkDate = createDate(this.activeDate)\n const day = activeDate.getDate()\n const isRTL = this.isRTL\n if (keyCode === PAGEUP) {\n // PAGEUP - Previous month/year\n activeDate = (altKey ? oneYearAgo : oneMonthAgo)(activeDate)\n // We check the first day of month to be in rage\n checkDate = createDate(activeDate)\n checkDate.setDate(1)\n } else if (keyCode === PAGEDOWN) {\n // PAGEDOWN - Next month/year\n activeDate = (altKey ? oneYearAhead : oneMonthAhead)(activeDate)\n // We check the last day of month to be in rage\n checkDate = createDate(activeDate)\n checkDate.setMonth(checkDate.getMonth() + 1)\n checkDate.setDate(0)\n } else if (keyCode === LEFT) {\n // LEFT - Previous day (or next day for RTL)\n activeDate.setDate(day + (isRTL ? 1 : -1))\n checkDate = activeDate\n } else if (keyCode === RIGHT) {\n // RIGHT - Next day (or previous day for RTL)\n activeDate.setDate(day + (isRTL ? -1 : 1))\n checkDate = activeDate\n } else if (keyCode === UP) {\n // UP - Previous week\n activeDate.setDate(day - 7)\n checkDate = activeDate\n } else if (keyCode === DOWN) {\n // DOWN - Next week\n activeDate.setDate(day + 7)\n checkDate = activeDate\n } else if (keyCode === HOME) {\n // HOME - Today\n activeDate = this.getToday()\n checkDate = activeDate\n } else if (keyCode === END) {\n // END - Selected date, or today if no selected date\n activeDate = parseYMD(this.selectedDate) || this.getToday()\n checkDate = activeDate\n }\n if (!this.dateOutOfRange(checkDate) && !datesEqual(activeDate, this.activeDate)) {\n // We only jump to date if within min/max\n // We don't check for individual disabled dates though (via user function)\n this.activeYMD = formatYMD(activeDate)\n }\n // Ensure grid is focused\n this.focus()\n },\n onKeydownGrid(evt) {\n // Pressing enter/space on grid to select active date\n const keyCode = evt.keyCode\n const activeDate = this.activeDate\n if (keyCode === ENTER || keyCode === SPACE) {\n evt.preventDefault()\n evt.stopPropagation()\n if (!this.disabled && !this.readonly && !this.dateDisabled(activeDate)) {\n this.selectedYMD = formatYMD(activeDate)\n this.emitSelected(activeDate)\n }\n // Ensure grid is focused\n this.focus()\n }\n },\n onClickDay(day) {\n // Clicking on a date \"button\" to select it\n // TODO: Change to lookup the `data-data` attribute\n const selectedDate = this.selectedDate\n const activeDate = this.activeDate\n const clickedDate = parseYMD(day.ymd)\n if (!this.disabled && !day.isDisabled && !this.dateDisabled(clickedDate)) {\n if (!this.readonly) {\n // If readonly mode, we don't set the selected date, just the active date\n // If the clicked date is equal to the already selected date, we don't update the model\n this.selectedYMD = formatYMD(\n datesEqual(clickedDate, selectedDate) ? selectedDate : clickedDate\n )\n this.emitSelected(clickedDate)\n }\n this.activeYMD = formatYMD(\n datesEqual(clickedDate, activeDate) ? activeDate : createDate(clickedDate)\n )\n // Ensure grid is focused\n this.focus()\n }\n },\n gotoPrevYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAgo(this.activeDate)))\n },\n gotoPrevMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAgo(this.activeDate)))\n },\n gotoCurrentMonth() {\n // TODO: Maybe this goto date should be configurable?\n this.activeYMD = formatYMD(this.getToday())\n },\n gotoNextMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAhead(this.activeDate)))\n },\n gotoNextYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAhead(this.activeDate)))\n }\n },\n render(h) {\n // If hidden prop is set, render just a placeholder node\n if (this.hidden) {\n return h()\n }\n\n const isRTL = this.isRTL\n const todayYMD = formatYMD(this.getToday())\n const selectedYMD = this.selectedYMD\n const activeYMD = this.activeYMD\n const highlightToday = !this.noHighlightToday\n const safeId = this.safeId\n // Flag for making the `aria-live` regions live\n const isLive = this.isLive\n // Pre-compute some IDs\n const idWidget = safeId()\n const idValue = safeId('_calendar-value_')\n const idNav = safeId('_calendar-nav_')\n const idGrid = safeId('_calendar-grid_')\n const idGridCaption = safeId('_calendar-grid-caption_')\n const idGridHelp = safeId('_calendar-grid-help_')\n const idActive = activeYMD ? safeId(`_cell-${activeYMD}_`) : null\n\n // Header showing current selected date\n let $header = h(\n 'output',\n {\n staticClass: 'd-block text-center rounded border small p-1 mb-1',\n class: { 'text-muted': this.disabled, readonly: this.readonly || this.disabled },\n attrs: {\n id: idValue,\n for: idGrid,\n role: 'status',\n // Mainly for testing purposes, as we do not know\n // the exact format `Intl` will format the date string\n 'data-selected': toString(selectedYMD),\n // We wait until after mount to enable `aria-live`\n // to prevent initial announcement on page render\n 'aria-live': isLive ? 'polite' : 'off',\n 'aria-atomic': isLive ? 'true' : null\n }\n },\n this.selectedDate\n ? [\n // We use `bdi` elements here in case the label doesn't match the locale\n // Although IE 11 does not deal with <BDI> at all (equivalent to a span)\n h('bdi', { staticClass: 'sr-only' }, ` (${toString(this.labelSelected)}) `),\n h('bdi', {}, this.formatDateString(this.selectedDate))\n ]\n : this.labelNoDateSelected || '\\u00a0' // '&nbsp;'\n )\n $header = h(\n 'header',\n {\n class: this.hideHeader ? 'sr-only' : 'mb-1',\n attrs: { title: this.selectedDate ? this.labelSelectedDate || null : null }\n },\n [$header]\n )\n\n // Content for the date navigation buttons\n const $prevYearIcon = h(BIconstack, { props: { shiftV: 0.5, flipH: isRTL } }, [\n h(BIconChevronLeft, { props: { shiftH: -2 } }),\n h(BIconChevronLeft, { props: { shiftH: 2 } })\n ])\n const $prevMonthIcon = h(BIconChevronLeft, { props: { shiftV: 0.5, flipH: isRTL } })\n const $thisMonthIcon = h(BIconCircleFill, { props: { shiftV: 0.5 } })\n const $nextMonthIcon = h(BIconChevronLeft, { props: { shiftV: 0.5, flipH: !isRTL } })\n const $nextYearIcon = h(BIconstack, { props: { shiftV: 0.5, flipH: !isRTL } }, [\n h(BIconChevronLeft, { props: { shiftH: -2 } }),\n h(BIconChevronLeft, { props: { shiftH: 2 } })\n ])\n\n // Utility to create the date navigation buttons\n const makeNavBtn = (content, label, handler, btnDisabled, shortcut) => {\n return h(\n 'button',\n {\n staticClass: 'btn btn-sm btn-outline-secondary border-0 flex-fill p-1 mx-1',\n class: { disabled: btnDisabled },\n attrs: {\n title: label || null,\n type: 'button',\n 'aria-label': label || null,\n 'aria-disabled': btnDisabled ? 'true' : null,\n 'aria-keyshortcuts': shortcut || null\n },\n on: btnDisabled ? {} : { click: handler }\n },\n [h('div', { attrs: { 'aria-hidden': 'true' } }, [content])]\n )\n }\n\n // Generate the date navigation buttons\n const $nav = h(\n 'div',\n {\n staticClass: 'b-calendar-nav d-flex mx-n1 mb-1',\n attrs: {\n id: idNav,\n role: 'group',\n 'aria-hidden': this.disabled ? 'true' : null,\n 'aria-label': this.labelNav || null,\n 'aria-controls': idGrid\n }\n },\n [\n makeNavBtn(\n $prevYearIcon,\n this.labelPrevYear,\n this.gotoPrevYear,\n this.prevYearDisabled,\n 'Alt+PageDown'\n ),\n makeNavBtn(\n $prevMonthIcon,\n this.labelPrevMonth,\n this.gotoPrevMonth,\n this.prevMonthDisabled,\n 'PageDown'\n ),\n makeNavBtn(\n $thisMonthIcon,\n this.labelCurrentMonth,\n this.gotoCurrentMonth,\n this.thisMonthDisabled,\n 'Home'\n ),\n makeNavBtn(\n $nextMonthIcon,\n this.labelNextMonth,\n this.gotoNextMonth,\n this.nextMonthDisabled,\n 'PageUp'\n ),\n makeNavBtn(\n $nextYearIcon,\n this.labelNextYear,\n this.gotoNextYear,\n this.nextYearDisabled,\n 'Alt+PageUp'\n )\n ]\n )\n\n // Caption for calendar grid\n const $gridCaption = h(\n 'header',\n {\n key: 'grid-caption',\n staticClass: 'text-center font-weight-bold p-1 m-0',\n class: { 'text-muted': this.disabled },\n attrs: {\n id: idGridCaption,\n 'aria-live': isLive ? 'polite' : null,\n 'aria-atomic': isLive ? 'true' : null\n }\n },\n this.formatYearMonth(this.calendarFirstDay)\n )\n\n // Calendar weekday headings\n const $gridWeekDays = h(\n 'div',\n { staticClass: 'row no-gutters border-bottom', attrs: { 'aria-hidden': 'true' } },\n this.calendarHeadings.map((d, idx) => {\n return h(\n 'small',\n {\n key: idx,\n staticClass: 'col',\n class: { 'text-muted': this.disabled },\n attrs: {\n title: d.label === d.text ? null : d.label,\n 'aria-label': d.label\n }\n },\n d.text\n )\n })\n )\n\n // Calendar day grid\n let $gridBody = this.calendar.map(week => {\n const $cells = week.map((day, dIndex) => {\n const isSelected = day.ymd === selectedYMD\n const isActive = day.ymd === activeYMD\n const isToday = day.ymd === todayYMD\n const idCell = safeId(`_cell-${day.ymd}_`)\n // \"fake\" button\n const $btn = h(\n 'span',\n {\n staticClass: 'btn border-0 rounded-circle text-nowrap',\n // Should we add some classes to signify if today/selected/etc?\n class: {\n // Give the fake button a focus ring\n focus: isActive && this.gridHasFocus,\n // Styling\n disabled: day.isDisabled || this.disabled,\n active: isSelected, // makes the button look \"pressed\"\n // Selected date style (need to computed from variant)\n [this.computedVariant]: isSelected,\n // Today day style (if not selected), same variant color as selected date\n [this.computedTodayVariant]:\n isToday && highlightToday && !isSelected && day.isThisMonth,\n // Non selected/today styling\n 'btn-outline-light': !(isToday && highlightToday) && !isSelected && !isActive,\n 'btn-light': !(isToday && highlightToday) && !isSelected && isActive,\n // Text styling\n 'text-muted': !day.isThisMonth && !isSelected,\n 'text-dark':\n !(isToday && highlightToday) && !isSelected && !isActive && day.isThisMonth,\n 'font-weight-bold': (isSelected || day.isThisMonth) && !day.isDisabled\n },\n on: { click: () => this.onClickDay(day) }\n },\n day.day\n )\n return h(\n 'div', // Cell with button\n {\n key: dIndex,\n staticClass: 'col p-0',\n class: day.isDisabled ? 'bg-light' : day.info.class || '',\n attrs: {\n id: idCell,\n role: 'button',\n 'data-date': day.ymd, // Primarily for testing purposes\n // Only days in the month are presented as buttons to screen readers\n 'aria-hidden': day.isThisMonth ? null : 'true',\n 'aria-disabled': day.isDisabled || this.disabled ? 'true' : null,\n 'aria-label': [\n day.label,\n isSelected ? `(${this.labelSelected})` : null,\n isToday ? `(${this.labelToday})` : null\n ]\n .filter(identity)\n .join(' '),\n // NVDA doesn't convey `aria-selected`, but does `aria-current`,\n // ChromeVox doesn't convey `aria-current`, but does `aria-selected`,\n // so we set both attributes for robustness\n 'aria-selected': isSelected ? 'true' : null,\n 'aria-current': isSelected ? 'date' : null\n }\n },\n [$btn]\n )\n })\n // Return the week \"row\"\n // We use the first day of the weeks YMD value as a\n // key for efficient DOM patching / element re-use\n return h('div', { key: week[0].ymd, staticClass: 'row no-gutters' }, $cells)\n })\n $gridBody = h(\n 'div',\n {\n // A key is only required on the body if we add in transition support\n // key: this.activeYMD.slice(0, -3),\n staticClass: 'b-calendar-grid-body',\n style: this.disabled ? { pointerEvents: 'none' } : {}\n },\n $gridBody\n )\n\n const $gridHelp = h(\n 'footer',\n {\n staticClass: 'border-top small text-muted text-center bg-light',\n attrs: {\n id: idGridHelp\n }\n },\n [h('div', { staticClass: 'small' }, this.labelHelp)]\n )\n\n const $grid = h(\n 'div',\n {\n ref: 'grid',\n staticClass: 'form-control h-auto text-center p-0 mb-0',\n attrs: {\n id: idGrid,\n role: 'application',\n tabindex: this.disabled ? null : '0',\n 'data-month': activeYMD.slice(0, -3), // `YYYY-MM`, mainly for testing\n // tabindex: this.disabled ? null : '0',\n 'aria-roledescription': this.labelCalendar || null,\n 'aria-labelledby': idGridCaption,\n 'aria-describedby': idGridHelp,\n // `aria-readonly` is not considered valid on `role=\"application\"`\n // https://www.w3.org/TR/wai-aria-1.1/#aria-readonly\n // 'aria-readonly': this.readonly && !this.disabled ? 'true' : null,\n 'aria-disabled': this.disabled ? 'true' : null,\n 'aria-activedescendant': idActive\n },\n on: {\n keydown: this.onKeydownGrid,\n focus: this.setGridFocusFlag,\n blur: this.setGridFocusFlag\n }\n },\n [$gridCaption, $gridWeekDays, $gridBody, $gridHelp]\n )\n\n // Optional bottom slot\n let $slot = this.normalizeSlot('default')\n $slot = $slot ? h('footer', { staticClass: 'mt-2' }, $slot) : h()\n\n const $widget = h(\n 'div',\n {\n class: this.block ? 'd-block' : 'd-inline-block',\n style: this.block ? {} : { width: this.width },\n attrs: {\n id: idWidget,\n dir: isRTL ? 'rtl' : 'ltr',\n lang: this.computedLocale || null,\n role: 'group',\n 'aria-disabled': this.disabled ? 'true' : null,\n // If datepicker controls an input, this will specify the ID of the input\n 'aria-controls': this.ariaControls || null,\n // This should be a prop (so it can be changed to Date picker, etc, localized\n 'aria-roledescription': this.roleDescription || null,\n 'aria-describedby': [\n // Should the attr (if present) go last?\n // Or should this attr be a prop?\n this.$attrs['aria-describedby'],\n idValue,\n idGridHelp\n ]\n .filter(identity)\n .join(' ')\n },\n on: {\n keydown: this.onKeydownWrapper\n }\n },\n [$header, $nav, $grid, $slot]\n )\n\n // Wrap in an outer div that can be styled\n return h(\n 'div',\n {\n staticClass: 'b-calendar',\n // We use a style here rather than class `d-inline-block` so that users can\n // override the display value (`d-*` classes use the `!important` flag)\n style: this.block ? {} : { display: 'inline-block' }\n },\n [$widget]\n )\n }\n})\n","import { BCalendar } from './calendar'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst CalendarPlugin = /*#__PURE__*/ pluginFactory({\n components: { BCalendar }\n})\n\nexport { CalendarPlugin, BCalendar }\n","import { upperFirst } from './string'\n\n/**\n * @param {string} prefix\n * @param {string} value\n */\nconst prefixPropName = (prefix, value) => prefix + upperFirst(value)\n\nexport default prefixPropName\n","import { lowerFirst } from './string'\n\n/**\n * @param {string} prefix\n * @param {string} value\n */\nconst unprefixPropName = (prefix, value) => lowerFirst(value.replace(prefix, ''))\n\nexport default unprefixPropName\n","import identity from './identity'\nimport { isArray, isObject } from './inspect'\nimport { clone } from './object'\n\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 */\nconst copyProps = (props, transformFn = identity) => {\n if (isArray(props)) {\n return props.map(transformFn)\n }\n // Props as an object.\n const copied = {}\n\n for (const 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\n","// @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}\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {\n title: {\n type: String,\n default: ''\n },\n titleTag: {\n type: String,\n default: 'h4'\n }\n}\n\n// @vue/component\nexport const BCardTitle = /*#__PURE__*/ Vue.extend({\n name: 'BCardTitle',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.titleTag,\n mergeData(data, {\n staticClass: 'card-title'\n }),\n children || props.title\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { getComponentConfig } from '../../utils/config'\n\nconst NAME = 'BCardSubTitle'\n\nexport const 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: () => getComponentConfig(NAME, 'subTitleTextVariant')\n }\n}\n\n// @vue/component\nexport const BCardSubTitle = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.subTitleTag,\n mergeData(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? `text-${props.subTitleTextVariant}` : null]\n }),\n children || props.subTitle\n )\n }\n})\n","import 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'\n\nexport const props = {\n // Import common card props and prefix them with `body-`\n ...copyProps(cardMixin.props, prefixPropName.bind(null, 'body')),\n bodyClass: {\n type: [String, Object, Array],\n default: null\n },\n ...titleProps,\n ...subTitleProps,\n overlay: {\n type: Boolean,\n default: false\n }\n}\n\n// @vue/component\nexport const BCardBody = /*#__PURE__*/ Vue.extend({\n name: 'BCardBody',\n functional: true,\n props,\n render(h, { props, data, children }) {\n let cardTitle = h()\n let cardSubTitle = h()\n const cardContent = children || [h()]\n\n if (props.title) {\n cardTitle = h(BCardTitle, { props: pluckProps(titleProps, props) })\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(\n props.bodyTag,\n mergeData(data, {\n staticClass: 'card-body',\n class: [\n {\n 'card-img-overlay': props.overlay,\n [`bg-${props.bodyBgVariant}`]: props.bodyBgVariant,\n [`border-${props.bodyBorderVariant}`]: props.bodyBorderVariant,\n [`text-${props.bodyTextVariant}`]: props.bodyTextVariant\n },\n props.bodyClass || {}\n ]\n }),\n [cardTitle, cardSubTitle, ...cardContent]\n )\n }\n})\n","import 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'\n\nexport const props = {\n ...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}\n\n// @vue/component\nexport const BCardHeader = /*#__PURE__*/ Vue.extend({\n name: 'BCardHeader',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.headerTag,\n mergeData(data, {\n staticClass: 'card-header',\n class: [\n props.headerClass,\n {\n [`bg-${props.headerBgVariant}`]: props.headerBgVariant,\n [`border-${props.headerBorderVariant}`]: props.headerBorderVariant,\n [`text-${props.headerTextVariant}`]: props.headerTextVariant\n }\n ]\n }),\n children || [h('div', { domProps: htmlOrText(props.headerHtml, props.header) })]\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nimport prefixPropName from '../../utils/prefix-prop-name'\nimport copyProps from '../../utils/copy-props'\nimport { htmlOrText } from '../../utils/html'\nimport cardMixin from '../../mixins/card'\n\nexport const props = {\n ...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}\n\n// @vue/component\nexport const BCardFooter = /*#__PURE__*/ Vue.extend({\n name: 'BCardFooter',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.footerTag,\n mergeData(data, {\n staticClass: 'card-footer',\n class: [\n props.footerClass,\n {\n [`bg-${props.footerBgVariant}`]: props.footerBgVariant,\n [`border-${props.footerBorderVariant}`]: props.footerBorderVariant,\n [`text-${props.footerTextVariant}`]: props.footerTextVariant\n }\n ]\n }),\n children || [h('div', { domProps: htmlOrText(props.footerHtml, props.footer) })]\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const 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}\n\n// @vue/component\nexport const BCardImg = /*#__PURE__*/ Vue.extend({\n name: 'BCardImg',\n functional: true,\n props,\n render(h, { props, data }) {\n let baseClass = 'card-img'\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(\n 'img',\n 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 }\n})\n","import 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'\n\nconst cardImgProps = copyProps(imgProps, prefixPropName.bind(null, 'img'))\ncardImgProps.imgSrc.required = false\n\nexport const props = {\n ...bodyProps,\n ...headerProps,\n ...footerProps,\n ...cardImgProps,\n ...copyProps(cardMixin.props),\n align: {\n type: String,\n default: null\n },\n noBody: {\n type: Boolean,\n default: false\n }\n}\n\n// @vue/component\nexport const BCard = /*#__PURE__*/ Vue.extend({\n name: 'BCard',\n functional: true,\n props,\n render(h, { props, data, slots, scopedSlots }) {\n const $slots = slots()\n // Vue < 2.6.x may return undefined for scopedSlots\n const $scopedSlots = scopedSlots || {}\n\n // Create placeholder elements for each section\n let imgFirst = h()\n let header = h()\n let content = h()\n let footer = h()\n let imgLast = h()\n\n if (props.imgSrc) {\n const img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unPrefixPropName.bind(null, 'img'))\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(\n BCardHeader,\n { props: pluckProps(headerProps, props) },\n normalizeSlot('header', {}, $scopedSlots, $slots)\n )\n }\n\n content = normalizeSlot('default', {}, $scopedSlots, $slots) || []\n if (!props.noBody) {\n // Wrap content in card-body\n content = [h(BCardBody, { props: pluckProps(bodyProps, props) }, [...content])]\n }\n\n if (props.footer || hasNormalizedSlot('footer', $scopedSlots, $slots)) {\n footer = h(\n BCardFooter,\n {\n props: pluckProps(footerProps, props)\n },\n normalizeSlot('footer', {}, $scopedSlots, $slots)\n )\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'card',\n class: {\n 'flex-row': props.imgLeft || props.imgStart,\n 'flex-row-reverse':\n (props.imgRight || props.imgEnd) && !(props.imgLeft || props.imgStart),\n [`text-${props.align}`]: props.align,\n [`bg-${props.bgVariant}`]: props.bgVariant,\n [`border-${props.borderVariant}`]: props.borderVariant,\n [`text-${props.textVariant}`]: props.textVariant\n }\n }),\n [imgFirst, header, ...content, footer, imgLast]\n )\n }\n})\n","// v-b-visible\n// Private visibility check directive\n// Based on IntersectionObserver\n//\n// Usage:\n// v-b-visibility.<margin>.<once>=\"<callback>\"\n//\n// Value:\n// <callback>: method to be called when visibility state changes, receives one arg:\n// true: element is visible\n// false: element is not visible\n// null: IntersectionObserver not supported\n//\n// Modifiers:\n// <margin>: a positive decimal value of pixels away from viewport edge\n// before being considered \"visible\". default is 0\n// <once>: keyword 'once', meaning when the element becomes visible and\n// callback is called observation/notification will stop.\n//\n// When used in a render function:\n// export default {\n// directives: { 'b-visible': VBVisible },\n// render(h) {\n// h(\n// 'div',\n// {\n// directives: [\n// { name: 'b-visible', value=this.callback, modifiers: { '123':true, 'once':true } }\n// ]\n// }\n// )\n// }\n\nimport looseEqual from '../../utils/loose-equal'\nimport { requestAF } from '../../utils/dom'\nimport { isFunction } from '../../utils/inspect'\nimport { clone, keys } from '../../utils/object'\n\nconst OBSERVER_PROP_NAME = '__bv__visibility_observer'\n\nconst onlyDgitsRE = /^\\d+$/\n\nclass VisibilityObserver {\n constructor(el, options, vnode) {\n this.el = el\n this.callback = options.callback\n this.margin = options.margin || 0\n this.once = options.once || false\n this.observer = null\n this.visible = undefined\n this.doneOnce = false\n // Create the observer instance (if possible)\n this.createObserver(vnode)\n }\n\n createObserver(vnode) {\n // Remove any previous observer\n if (this.observer) {\n /* istanbul ignore next */\n this.stop()\n }\n\n // Should only be called once and `callback` prop should be a function\n if (this.doneOnce || !isFunction(this.callback)) {\n /* istanbul ignore next */\n return\n }\n\n // Create the observer instance\n try {\n // Future: Possibly add in other modifiers for left/right/top/bottom\n // offsets, root element reference, and thresholds\n this.observer = new IntersectionObserver(this.handler.bind(this), {\n // `null` = 'viewport'\n root: null,\n // Pixels away from view port to consider \"visible\"\n rootMargin: this.margin,\n // Intersection ratio of el and root (as a value from 0 to 1)\n threshold: 0\n })\n } catch {\n // No IntersectionObserver support, so just stop trying to observe\n this.doneOnce = true\n this.observer = undefined\n this.callback(null)\n return\n }\n\n // Start observing in a `$nextTick()` (to allow DOM to complete rendering)\n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n vnode.context.$nextTick(() => {\n requestAF(() => {\n // Placed in an `if` just in case we were destroyed before\n // this `requestAnimationFrame` runs\n if (this.observer) {\n this.observer.observe(this.el)\n }\n })\n })\n }\n\n handler(entries) /* istanbul ignore next: IntersectionObserver not supported in JSDOM */ {\n const entry = entries ? entries[0] : {}\n const isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0)\n if (isIntersecting !== this.visible) {\n this.visible = isIntersecting\n this.callback(isIntersecting)\n if (this.once && this.visible) {\n this.doneOnce = true\n this.stop()\n }\n }\n }\n\n stop() {\n const observer = this.observer\n /* istanbul ignore next */\n if (observer && observer.disconnect) {\n observer.disconnect()\n }\n this.observer = null\n }\n}\n\nconst destroy = el => {\n const observer = el[OBSERVER_PROP_NAME]\n if (observer && observer.stop) {\n observer.stop()\n }\n delete el[OBSERVER_PROP_NAME]\n}\n\nconst bind = (el, { value, modifiers }, vnode) => {\n // `value` is the callback function\n const options = {\n margin: '0px',\n once: false,\n callback: value\n }\n // Parse modifiers\n keys(modifiers).forEach(mod => {\n /* istanbul ignore else: Until <b-img-lazy> is switched to use this directive */\n if (onlyDgitsRE.test(mod)) {\n options.margin = `${mod}px`\n } else if (mod.toLowerCase() === 'once') {\n options.once = true\n }\n })\n // Destroy any previous observer\n destroy(el)\n // Create new observer\n el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options, vnode)\n // Store the current modifiers on the object (cloned)\n el[OBSERVER_PROP_NAME]._prevModifiers = clone(modifiers)\n}\n\n// When the directive options may have been updated (or element)\nconst componentUpdated = (el, { value, oldValue, modifiers }, vnode) => {\n // Compare value/oldValue and modifiers to see if anything has changed\n // and if so, destroy old observer and create new observer\n /* istanbul ignore next */\n modifiers = clone(modifiers)\n /* istanbul ignore next */\n if (\n el &&\n (value !== oldValue ||\n !el[OBSERVER_PROP_NAME] ||\n !looseEqual(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers))\n ) {\n // Re-bind on element\n bind(el, { value, modifiers }, vnode)\n }\n}\n\n// When directive un-binds from element\nconst unbind = el => {\n // Remove the observer\n destroy(el)\n}\n\n// Export the directive\nexport const VBVisible = {\n bind,\n componentUpdated,\n unbind\n}\n","import 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'\n\n// --- Constants --\n\nconst NAME = 'BImg'\n\n// Blank image with fill template\nconst BLANK_TEMPLATE =\n '<svg width=\"%{w}\" height=\"%{h}\" ' +\n 'xmlns=\"http://www.w3.org/2000/svg\" ' +\n 'viewBox=\"0 0 %{w} %{h}\" preserveAspectRatio=\"none\">' +\n '<rect width=\"100%\" height=\"100%\" style=\"fill:%{f};\"></rect>' +\n '</svg>'\n\nexport const 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: () => getComponentConfig(NAME, 'blankColor')\n }\n}\n\n// --- Helper methods ---\n\nconst makeBlankImgSrc = (width, height, color) => {\n const src = encodeURIComponent(\n BLANK_TEMPLATE.replace('%{w}', toString(width))\n .replace('%{h}', toString(height))\n .replace('%{f}', color)\n )\n return `data:image/svg+xml;charset=UTF-8,${src}`\n}\n\n// @vue/component\nexport const BImg = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data }) {\n let src = props.src\n let width = toInteger(props.width) || null\n let height = toInteger(props.height) || null\n let align = null\n let block = props.block\n let srcset = concat(props.srcset)\n .filter(identity)\n .join(',')\n let sizes = concat(props.sizes)\n .filter(identity)\n .join(',')\n if (props.blank) {\n if (!height && width) {\n height = width\n } else if (!width && height) {\n width = height\n }\n if (!width && !height) {\n width = 1\n height = 1\n }\n // Make a blank SVG image\n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent')\n // Disable srcset and sizes\n srcset = null\n sizes = null\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 return h(\n 'img',\n 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: {\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 [`rounded-${props.rounded}`]: isString(props.rounded) && props.rounded !== '',\n [align]: align,\n 'd-block': block\n }\n })\n )\n }\n})\n","import 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'\n\nconst NAME = 'BImgLazy'\n\nexport const 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: () => getComponentConfig(NAME, 'blankColor')\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}\n\n// @vue/component\nexport const BImgLazy = /*#__PURE__*/ Vue.extend({\n name: NAME,\n directives: {\n bVisible: VBVisible\n },\n props,\n data() {\n return {\n isShown: this.show\n }\n },\n computed: {\n computedSrc() {\n return !this.blankSrc || this.isShown ? this.src : this.blankSrc\n },\n computedBlank() {\n return !(this.isShown || this.blankSrc)\n },\n computedWidth() {\n return this.isShown ? this.width : this.blankWidth || this.width\n },\n computedHeight() {\n return this.isShown ? this.height : this.blankHeight || this.height\n },\n computedSrcset() {\n const srcset = concat(this.srcset)\n .filter(identity)\n .join(',')\n return !this.blankSrc || this.isShown ? srcset : null\n },\n computedSizes() {\n const sizes = concat(this.sizes)\n .filter(identity)\n .join(',')\n return !this.blankSrc || this.isShown ? sizes : null\n }\n },\n watch: {\n show(newVal, oldVal) {\n if (newVal !== oldVal) {\n // If IntersectionObserver support is not available, image is always shown\n const visible = hasIntersectionObserverSupport ? newVal : true\n this.isShown = visible\n if (visible !== newVal) {\n // Ensure the show prop is synced (when no IntersectionObserver)\n this.$nextTick(this.updateShowProp)\n }\n }\n },\n isShown(newVal, oldVal) {\n if (newVal !== oldVal) {\n // Update synched show prop\n this.updateShowProp()\n }\n }\n },\n mounted() {\n // If IntersectionObserver is not available, image is always shown\n this.isShown = hasIntersectionObserverSupport ? this.show : true\n },\n methods: {\n updateShowProp() {\n this.$emit('update:show', this.isShown)\n },\n 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(h) {\n const directives = []\n if (!this.isShown) {\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: {\n // Root margin from viewport\n [`${toInteger(this.offset) || 0}`]: true,\n // Once the image is shown, stop observing\n once: true\n }\n })\n }\n\n return h(BImg, {\n 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})\n","import 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'\n\n// 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\nconst lazyProps = omit(imgLazyProps, [\n 'left',\n 'right',\n 'center',\n 'block',\n 'rounded',\n 'thumbnail',\n 'fluid',\n 'fluidGrow'\n])\n\nexport const props = {\n ...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}\n\n// @vue/component\nexport const BCardImgLazy = /*#__PURE__*/ Vue.extend({\n name: 'BCardImgLazy',\n functional: true,\n props,\n render(h, { props, data }) {\n let baseClass = 'card-img'\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 // False out the left/center/right props before passing to b-img-lazy\n const lazyProps = { ...props, left: false, right: false, center: false }\n return h(\n BImgLazy,\n mergeData(data, {\n class: [baseClass],\n props: lazyProps\n })\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {\n textTag: {\n type: String,\n default: 'p'\n }\n}\n\n// @vue/component\nexport const BCardText = /*#__PURE__*/ Vue.extend({\n name: 'BCardText',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(props.textTag, mergeData(data, { staticClass: 'card-text' }), children)\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const 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}\n\n// @vue/component\nexport const BCardGroup = /*#__PURE__*/ Vue.extend({\n name: 'BCardGroup',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n mergeData(data, {\n class: props.deck ? 'card-deck' : props.columns ? 'card-columns' : 'card-group'\n }),\n children\n )\n }\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'\n\nconst CardPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BCard,\n BCardHeader,\n BCardBody,\n BCardTitle,\n BCardSubTitle,\n BCardFooter,\n BCardImg,\n BCardImgLazy,\n BCardText,\n BCardGroup\n }\n})\n\nexport {\n CardPlugin,\n BCard,\n BCardHeader,\n BCardBody,\n BCardTitle,\n BCardSubTitle,\n BCardFooter,\n BCardImg,\n BCardImgLazy,\n BCardText,\n BCardGroup\n}\n","const noop = () => {}\n\nexport default noop\n","import { MutationObs, isElement } from './dom'\nimport { warnNoMutationObserverSupport } from './warn'\n\n/**\n * Observe a DOM element changes, falls back to eventListener mode\n * @param {Element} el The DOM element to observe\n * @param {Function} callback callback to be called on change\n * @param {object} [options={childList: true, subtree: true}] observe options\n * @see http://stackoverflow.com/questions/3219758\n */\nconst observeDom = (\n el,\n callback,\n options\n) => /* istanbul ignore next: difficult to test in JSDOM */ {\n // Handle cases where we might be passed a Vue instance\n el = el ? el.$el || el : null\n\n // Early exit when we have no element\n /* istanbul ignore next: difficult to test in JSDOM */\n if (!isElement(el)) {\n return null\n }\n\n // Exit and throw a warning when `MutationObserver` isn't available\n if (warnNoMutationObserverSupport('observeDom')) {\n return null\n }\n\n // Define a new observer\n const obs = new MutationObs(mutations => {\n let changed = false\n\n // A mutation can contain several change records, so we loop\n // through them to see what has changed\n // We break out of the loop early if any \"significant\" change\n // has been detected\n for (let i = 0; i < mutations.length && !changed; i++) {\n // The mutation record\n const mutation = mutations[i]\n // Mutation type\n const type = mutation.type\n // DOM node (could be any DOM node type - HTMLElement, Text, comment, etc.)\n const target = mutation.target\n\n // Detect whether a change happened based on type and target\n if (type === 'characterData' && target.nodeType === Node.TEXT_NODE) {\n // We ignore nodes that are not TEXT (i.e. comments, etc)\n // as they don't change layout\n changed = true\n } else if (type === 'attributes') {\n changed = true\n } else if (\n type === 'childList' &&\n (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0)\n ) {\n // This includes HTMLElement and text nodes being\n // added/removed/re-arranged\n changed = true\n }\n }\n\n // We only call the callback if a change that could affect\n // layout/size truely happened\n if (changed) {\n callback()\n }\n })\n\n // Have the observer observe foo for changes in children, etc\n obs.observe(el, { childList: true, subtree: true, ...options })\n\n // We return a reference to the observer so that `obs.disconnect()`\n // can be called if necessary\n // To reduce overhead when the root element is hidden\n return obs\n}\n\nexport default observeDom\n","import { hasPassiveEventSupport } from './env'\nimport { isObject } from './inspect'\n\n// --- Constants ---\n\nexport const EVENT_OPTIONS_PASSIVE = { passive: true }\nexport const EVENT_OPTIONS_NO_CAPTURE = { passive: true, capture: false }\n\n// --- Utils ---\n\n// Normalize event options based on support of passive option\n// Exported only for testing purposes\nexport const parseEventOptions = options => {\n /* istanbul ignore else: can't test in JSDOM, as it supports passive */\n if (hasPassiveEventSupport) {\n return isObject(options) ? options : { capture: !!options || false }\n } else {\n // Need to translate to actual Boolean value\n return !!(isObject(options) ? options.capture : options)\n }\n}\n\n// Attach an event listener to an element\nexport const eventOn = (el, evtName, handler, options) => {\n if (el && el.addEventListener) {\n el.addEventListener(evtName, handler, parseEventOptions(options))\n }\n}\n\n// Remove an event listener from an element\nexport const eventOff = (el, evtName, handler, options) => {\n if (el && el.removeEventListener) {\n el.removeEventListener(evtName, handler, parseEventOptions(options))\n }\n}\n\n// Utility method to add/remove a event listener based on first argument (boolean)\n// It passes all other arguments to the `eventOn()` or `eventOff` method\nexport const eventOnOff = (on, ...args) => {\n const method = on ? eventOn : eventOff\n method(...args)\n}\n","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'\n\nconst NAME = 'BCarousel'\n\n// Slide directional classes\nconst 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}\n\n// Fallback Transition duration (with a little buffer) in ms\nconst TRANS_DURATION = 600 + 50\n\n// Time for mouse compat events to fire after touch\nconst TOUCH_EVENT_COMPAT_WAIT = 500\n\n// Number of pixels to consider touch move a swipe\nconst SWIPE_THRESHOLD = 40\n\n// PointerEvent pointer types\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n// Transition Event names\nconst TransitionEndEvents = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'otransitionend oTransitionEnd',\n transition: 'transitionend'\n}\n\n// Return the browser specific transitionEnd event name\nconst getTransitionEndEvent = el => {\n for (const name in TransitionEndEvents) {\n if (!isUndefined(el.style[name])) {\n return TransitionEndEvents[name]\n }\n }\n // Fallback\n /* istanbul ignore next */\n return null\n}\n\n// @vue/component\nexport const BCarousel = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [idMixin, normalizeSlotMixin],\n provide() {\n return { bvCarousel: this }\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n labelPrev: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelPrev')\n },\n labelNext: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelNext')\n },\n labelGotoSlide: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelGotoSlide')\n },\n labelIndicators: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelIndicators')\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]\n // default: undefined\n },\n imgHeight: {\n // Sniffed by carousel-slide\n type: [Number, String]\n // default: undefined\n },\n background: {\n type: String\n // default: undefined\n },\n value: {\n type: Number,\n default: 0\n }\n },\n 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() {\n return this.slides.length\n }\n },\n watch: {\n value(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.setSlide(toInteger(newVal) || 0)\n }\n },\n interval(newVal, oldVal) {\n if (newVal === oldVal) {\n /* istanbul ignore next */\n return\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(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit(newVal ? 'paused' : 'unpaused')\n }\n },\n index(to, from) {\n if (to === from || this.isSliding) {\n /* istanbul ignore next */\n return\n }\n this.doSlide(to, from)\n }\n },\n created() {\n // Create private non-reactive props\n this._intervalId = null\n this._animationTimeout = null\n this._touchTimeout = null\n // Set initial paused state\n this.isPaused = !(toInteger(this.interval) > 0)\n },\n mounted() {\n // Cache current browser transitionend event name\n this.transitionEndEvent = getTransitionEndEvent(this.$el) || null\n // Get all slides\n this.updateSlides()\n // Observe child changes so we can update slide list\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() {\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(slide, direction = null) {\n // Don't animate when page is not visible\n /* istanbul ignore if: difficult to test */\n if (isBrowser && document.visibilityState && document.hidden) {\n return\n }\n const noWrap = this.noWrap\n const numSlides = this.numSlides\n // Make sure we have an integer (you never know!)\n slide = Math.floor(slide)\n // Don't do anything if nothing to slide to\n if (numSlides === 0) {\n return\n }\n // Don't change slide while transitioning, wait until transition is done\n if (this.isSliding) {\n // Schedule slide after sliding complete\n this.$once('sliding-end', () => this.setSlide(slide, direction))\n return\n }\n this.direction = direction\n // Set new slide index\n // Wrap around if necessary (if no-wrap not enabled)\n this.index =\n slide >= numSlides\n ? noWrap\n ? numSlides - 1\n : 0\n : slide < 0\n ? noWrap\n ? 0\n : numSlides - 1\n : slide\n // Ensure the v-model is synched up if no-wrap is enabled\n // and user tried to slide pass either ends\n if (noWrap && this.index !== slide && this.index !== this.value) {\n this.$emit('input', this.index)\n }\n },\n // Previous slide\n prev() {\n this.setSlide(this.index - 1, 'prev')\n },\n // Next slide\n next() {\n this.setSlide(this.index + 1, 'next')\n },\n // Pause auto rotation\n pause(evt) {\n if (!evt) {\n this.isPaused = true\n }\n if (this._intervalId) {\n clearInterval(this._intervalId)\n this._intervalId = null\n }\n },\n // Start auto rotate slides\n start(evt) {\n if (!evt) {\n this.isPaused = false\n }\n /* istanbul ignore next: most likely will never happen, but just in case */\n if (this._intervalId) {\n clearInterval(this._intervalId)\n this._intervalId = null\n }\n // Don't start if no interval, or less than 2 slides\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() /* istanbul ignore next: difficult to test */ {\n if (!this.$el.contains(document.activeElement)) {\n this.start()\n }\n },\n doSlide(to, from) {\n const isCycling = Boolean(this.interval)\n // Determine sliding direction\n const direction = this.calcDirection(this.direction, from, to)\n const overlayClass = direction.overlayClass\n const dirClass = direction.dirClass\n // Determine current and next slides\n const currentSlide = this.slides[from]\n const nextSlide = this.slides[to]\n // Don't do anything if there aren't any slides to slide to\n if (!currentSlide || !nextSlide) {\n /* istanbul ignore next */\n return\n }\n // Start animating\n this.isSliding = true\n if (isCycling) {\n this.pause(false)\n }\n this.$emit('sliding-start', to)\n // Update v-model\n this.$emit('input', this.index)\n if (this.noAnimation) {\n addClass(nextSlide, 'active')\n removeClass(currentSlide, 'active')\n this.isSliding = false\n // Notify ourselves that we're done sliding (slid)\n this.$nextTick(() => this.$emit('sliding-end', to))\n } else {\n addClass(nextSlide, overlayClass)\n // Trigger a reflow of next slide\n reflow(nextSlide)\n addClass(currentSlide, dirClass)\n addClass(nextSlide, dirClass)\n // Transition End handler\n let called = false\n /* istanbul ignore next: difficult to test */\n const onceTransEnd = () => {\n if (called) {\n return\n }\n called = true\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n if (this.transitionEndEvent) {\n const events = this.transitionEndEvent.split(/\\s+/)\n events.forEach(evt =>\n eventOff(currentSlide, evt, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE)\n )\n }\n this._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 this.isSliding = false\n this.direction = null\n // Notify ourselves that we're done sliding (slid)\n this.$nextTick(() => this.$emit('sliding-end', to))\n }\n // Set up transitionend handler\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n if (this.transitionEndEvent) {\n const events = this.transitionEndEvent.split(/\\s+/)\n events.forEach(event =>\n eventOn(currentSlide, event, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE)\n )\n }\n // Fallback to setTimeout()\n this._animationTimeout = setTimeout(onceTransEnd, TRANS_DURATION)\n }\n if (isCycling) {\n this.start(false)\n }\n },\n // Update slide list\n updateSlides() {\n this.pause(true)\n // Get all slides as DOM elements\n this.slides = selectAll('.carousel-item', this.$refs.inner)\n const numSlides = this.slides.length\n // Keep slide number in range\n const index = Math.max(0, Math.min(Math.floor(this.index), numSlides - 1))\n this.slides.forEach((slide, idx) => {\n const n = idx + 1\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 setAttr(slide, 'aria-posinset', String(n))\n setAttr(slide, 'aria-setsize', String(numSlides))\n })\n // Set slide as active\n this.setSlide(index)\n this.start(this.isPaused)\n },\n calcDirection(direction = null, curIndex = 0, nextIndex = 0) {\n if (!direction) {\n return nextIndex > curIndex ? DIRECTION.next : DIRECTION.prev\n }\n return DIRECTION[direction]\n },\n handleClick(evt, fn) {\n const keyCode = evt.keyCode\n if (evt.type === 'click' || keyCode === KeyCodes.SPACE || keyCode === KeyCodes.ENTER) {\n evt.preventDefault()\n evt.stopPropagation()\n fn()\n }\n },\n handleSwipe() /* istanbul ignore next: JSDOM doesn't support touch events */ {\n const absDeltaX = Math.abs(this.touchDeltaX)\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n const direction = absDeltaX / this.touchDeltaX\n // Reset touch delta X\n // https://github.com/twbs/bootstrap/pull/28558\n this.touchDeltaX = 0\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(evt) /* istanbul ignore next: JSDOM doesn't support touch events */ {\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(evt) /* istanbul ignore next: JSDOM doesn't support touch events */ {\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(evt) /* istanbul ignore next: JSDOM doesn't support touch events */ {\n if (hasPointerEventSupport && PointerType[evt.pointerType.toUpperCase()]) {\n this.touchDeltaX = evt.clientX - this.touchStartX\n }\n this.handleSwipe()\n // 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 this.pause(false)\n if (this._touchTimeout) {\n clearTimeout(this._touchTimeout)\n }\n this._touchTimeout = setTimeout(\n this.start,\n TOUCH_EVENT_COMPAT_WAIT + Math.max(1000, this.interval)\n )\n }\n },\n render(h) {\n // Wrapper for slides\n const inner = h(\n 'div',\n {\n ref: 'inner',\n class: ['carousel-inner'],\n attrs: {\n id: this.safeId('__BV_inner_'),\n role: 'list'\n }\n },\n [this.normalizeSlot('default')]\n )\n\n // Prev and next controls\n let controls = h()\n if (this.controls) {\n const prevHandler = evt => {\n /* istanbul ignore next */\n if (!this.isSliding) {\n this.handleClick(evt, this.prev)\n } else {\n evt.preventDefault()\n }\n }\n const nextHandler = evt => {\n /* istanbul ignore next */\n if (!this.isSliding) {\n this.handleClick(evt, this.next)\n } else {\n evt.preventDefault()\n }\n }\n controls = [\n h(\n 'a',\n {\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 },\n [\n h('span', { class: ['carousel-control-prev-icon'], attrs: { 'aria-hidden': 'true' } }),\n h('span', { class: ['sr-only'] }, [this.labelPrev])\n ]\n ),\n h(\n 'a',\n {\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 },\n [\n h('span', { class: ['carousel-control-next-icon'], attrs: { 'aria-hidden': 'true' } }),\n h('span', { class: ['sr-only'] }, [this.labelNext])\n ]\n )\n ]\n }\n\n // Indicators\n const indicators = h(\n 'ol',\n {\n class: ['carousel-indicators'],\n directives: [\n { name: 'show', rawName: 'v-show', value: this.indicators, 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 },\n this.slides.map((slide, n) => {\n return h('li', {\n key: `slide_${n}`,\n class: { active: n === this.index },\n attrs: {\n role: 'button',\n id: this.safeId(`__BV_indicator_${n + 1}_`),\n tabindex: this.indicators ? '0' : '-1',\n 'aria-current': n === this.index ? 'true' : 'false',\n 'aria-label': `${this.labelGotoSlide} ${n + 1}`,\n 'aria-describedby': this.slides[n].id || null,\n 'aria-controls': this.safeId('__BV_inner_')\n },\n on: {\n click: evt => {\n this.handleClick(evt, () => {\n this.setSlide(n)\n })\n },\n keydown: evt => {\n this.handleClick(evt, () => {\n this.setSlide(n)\n })\n }\n }\n })\n })\n )\n\n const 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: evt => {\n if (/input|textarea/i.test(evt.target.tagName)) {\n /* istanbul ignore next */\n return\n }\n const keyCode = evt.keyCode\n if (keyCode === KeyCodes.LEFT || keyCode === KeyCodes.RIGHT) {\n evt.preventDefault()\n evt.stopPropagation()\n this[keyCode === KeyCodes.LEFT ? 'prev' : 'next']()\n }\n }\n }\n // Touch support event handlers for environment\n if (!this.noTouch && hasTouchSupport) {\n // Attach appropriate listeners (prepend event name with '&' for passive mode)\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 }\n\n // Return the carousel\n return h(\n 'div',\n {\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: { background: this.background },\n attrs: {\n role: 'region',\n id: this.safeId(),\n 'aria-busy': this.isSliding ? 'true' : 'false'\n },\n on\n },\n [inner, controls, indicators]\n )\n }\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'\n\nexport const props = {\n imgSrc: {\n type: String\n // default: undefined\n },\n imgAlt: {\n type: String\n // default: undefined\n },\n imgWidth: {\n type: [Number, String]\n // default: undefined\n },\n imgHeight: {\n type: [Number, String]\n // default: undefined\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}\n\n// @vue/component\nexport const BCarouselSlide = /*#__PURE__*/ Vue.extend({\n name: 'BCarouselSlide',\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n bvCarousel: {\n default() {\n return {\n // Explicitly disable touch if not a child of carousel\n noTouch: true\n }\n }\n }\n },\n props,\n computed: {\n contentClasses() {\n return [\n this.contentVisibleUp ? 'd-none' : '',\n this.contentVisibleUp ? `d-${this.contentVisibleUp}-block` : ''\n ]\n },\n computedWidth() {\n // Use local width, or try parent width\n return this.imgWidth || this.bvCarousel.imgWidth || null\n },\n computedHeight() {\n // Use local height, or try parent height\n return this.imgHeight || this.bvCarousel.imgHeight || null\n }\n },\n render(h) {\n const noDrag = !this.bvCarousel.noTouch && hasTouchSupport\n\n let img = this.normalizeSlot('img')\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 ? {\n 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 let content = h()\n\n const contentChildren = [\n this.caption || this.captionHtml\n ? h(this.captionTag, {\n domProps: htmlOrText(this.captionHtml, this.caption)\n })\n : false,\n this.text || this.textHtml\n ? h(this.textTag, { domProps: htmlOrText(this.textHtml, this.text) })\n : false,\n this.normalizeSlot('default') || false\n ]\n\n if (contentChildren.some(Boolean)) {\n content = h(\n this.contentTag,\n { staticClass: 'carousel-caption', class: this.contentClasses },\n contentChildren.map(i => i || h())\n )\n }\n\n return h(\n 'div',\n {\n staticClass: 'carousel-item',\n style: { background: this.background || this.bvCarousel.background || null },\n attrs: { id: this.safeId(), role: 'listitem' }\n },\n [img, content]\n )\n }\n})\n","import { BCarousel } from './carousel'\nimport { BCarouselSlide } from './carousel-slide'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst CarouselPlugin = /*#__PURE*/ pluginFactory({\n components: {\n BCarousel,\n BCarouselSlide\n }\n})\n\nexport { CarouselPlugin, BCarousel, BCarouselSlide }\n","// 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'\n\n// Transition event handler helpers\nconst onEnter = el => {\n el.style.height = 0\n // Animaton frame delay neeeded for `appear` to work\n requestAF(() => {\n reflow(el)\n el.style.height = `${el.scrollHeight}px`\n })\n}\n\nconst onAfterEnter = el => {\n el.style.height = null\n}\n\nconst onLeave = el => {\n el.style.height = 'auto'\n el.style.display = 'block'\n el.style.height = `${getBCR(el).height}px`\n reflow(el)\n el.style.height = 0\n}\n\nconst onAfterLeave = el => {\n el.style.height = null\n}\n\n// Default transition props\n// `appear` will use the enter classes\nconst 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}\n\n// Default transition handlers\n// `appear` will use the enter handlers\nconst TRANSITION_HANDLERS = {\n enter: onEnter,\n afterEnter: onAfterEnter,\n leave: onLeave,\n afterLeave: onAfterLeave\n}\n\n// @vue/component\nexport const 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(h, { props, data, children }) {\n return h(\n 'transition',\n // We merge in the `appear` prop last\n mergeData(data, { props: TRANSITION_PROPS, on: TRANSITION_HANDLERS }, { props }),\n // Note: `<tranition>` supports a single root element only\n children\n )\n }\n})\n","/**\n * Issue #569: collapse::toggle::state triggered too many times\n * @link https://github.com/bootstrap-vue/bootstrap-vue/issues/569\n */\n\n// @vue/component\nexport default {\n methods: {\n /**\n * Safely register event listeners on the root Vue node.\n * While Vue automatically removes listeners for individual components,\n * when a component registers a listener on root and is destroyed,\n * this orphans a callback because the node is gone,\n * but the root does not clear the callback.\n *\n * When registering a $root listener, it also registers a listener on\n * the component's `beforeDestroy` hook to automatically remove the\n * event listener from the $root instance.\n *\n * @param {string} event\n * @param {function} callback\n * @chainable\n */\n listenOnRoot(event, callback) {\n this.$root.$on(event, callback)\n this.$on('hook:beforeDestroy', () => {\n this.$root.$off(event, callback)\n })\n // Return this for easy chaining\n return this\n },\n\n /**\n * Safely register a $once event listener on the root Vue node.\n * While Vue automatically removes listeners for individual components,\n * when a component registers a listener on root and is destroyed,\n * this orphans a callback because the node is gone,\n * but the root does not clear the callback.\n *\n * When registering a $root listener, it also registers a listener on\n * the component's `beforeDestroy` hook to automatically remove the\n * event listener from the $root instance.\n *\n * @param {string} event\n * @param {function} callback\n * @chainable\n */\n listenOnRootOnce(event, callback) {\n this.$root.$once(event, callback)\n this.$on('hook:beforeDestroy', () => {\n this.$root.$off(event, callback)\n })\n // Return this for easy chaining\n return this\n },\n\n /**\n * Convenience method for calling vm.$emit on vm.$root.\n * @param {string} event\n * @param {*} args\n * @chainable\n */\n emitOnRoot(event, ...args) {\n this.$root.$emit(event, ...args)\n // Return this for easy chaining\n return this\n }\n }\n}\n","import Vue from '../../utils/vue'\nimport { isBrowser } from '../../utils/env'\nimport { addClass, hasClass, removeClass, closest, matches, getCS } from '../../utils/dom'\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOnOff } from '../../utils/events'\nimport { BVCollapse } from '../../utils/bv-collapse'\nimport idMixin from '../../mixins/id'\nimport listenOnRootMixin from '../../mixins/listen-on-root'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\n// Events we emit on $root\nconst EVENT_STATE = 'bv::collapse::state'\nconst EVENT_ACCORDION = 'bv::collapse::accordion'\n// Private event we emit on `$root` to ensure the toggle state is\n// always synced. It gets emitted even if the state has not changed!\n// This event is NOT to be documented as people should not be using it\nconst EVENT_STATE_SYNC = 'bv::collapse::sync::state'\n// Events we listen to on `$root`\nconst EVENT_TOGGLE = 'bv::toggle::collapse'\nconst EVENT_STATE_REQUEST = 'bv::request::collapse::state'\n\n// @vue/component\nexport const 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() {\n return {\n show: this.visible,\n transitioning: false\n }\n },\n computed: {\n 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(newVal) {\n if (newVal !== this.show) {\n this.show = newVal\n }\n },\n show(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.emitState()\n }\n }\n },\n created() {\n this.show = this.visible\n },\n mounted() {\n this.show = this.visible\n // Listen for toggle events to open/close us\n this.listenOnRoot(EVENT_TOGGLE, this.handleToggleEvt)\n // Listen to other collapses for accordion events\n this.listenOnRoot(EVENT_ACCORDION, this.handleAccordionEvt)\n if (this.isNav) {\n // Set up handlers\n this.setWindowEvents(true)\n this.handleResize()\n }\n this.$nextTick(() => {\n this.emitState()\n })\n // Listen for \"Sync state\" requests from `v-b-toggle`\n this.listenOnRoot(EVENT_STATE_REQUEST, id => {\n if (id === this.safeId()) {\n this.$nextTick(this.emitSync)\n }\n })\n },\n 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() /* istanbul ignore next */ {\n if (this.isNav) {\n this.setWindowEvents(false)\n }\n },\n activated() /* istanbul ignore next */ {\n if (this.isNav) {\n this.setWindowEvents(true)\n }\n this.emitSync()\n },\n beforeDestroy() {\n // Trigger state emit if needed\n this.show = false\n if (this.isNav && isBrowser) {\n this.setWindowEvents(false)\n }\n },\n methods: {\n 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() {\n this.show = !this.show\n },\n onEnter() {\n this.transitioning = true\n // This should be moved out so we can add cancellable events\n this.$emit('show')\n },\n onAfterEnter() {\n this.transitioning = false\n this.$emit('shown')\n },\n onLeave() {\n this.transitioning = true\n // This should be moved out so we can add cancellable events\n this.$emit('hide')\n },\n onAfterLeave() {\n this.transitioning = false\n this.$emit('hidden')\n },\n emitState() {\n this.$emit('input', this.show)\n // Let `v-b-toggle` know the state of this collapse\n this.$root.$emit(EVENT_STATE, this.safeId(), this.show)\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() {\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() {\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 const restore = hasClass(this.$el, 'show')\n removeClass(this.$el, 'show')\n const isBlock = getCS(this.$el).display === 'block'\n if (restore) {\n addClass(this.$el, 'show')\n }\n return isBlock\n },\n clickHandler(evt) {\n // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n const el = evt.target\n if (!this.isNav || !el || getCS(this.$el).display !== 'block') {\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n return\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(target) {\n if (target !== this.safeId()) {\n return\n }\n this.toggle()\n },\n handleAccordionEvt(openedId, accordion) {\n if (!this.accordion || accordion !== this.accordion) {\n return\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() {\n // Handler for orientation/resize to set collapsed state in nav/navbar\n this.show = getCS(this.$el).display === 'block'\n }\n },\n render(h) {\n const scope = {\n visible: this.show,\n close: () => (this.show = false)\n }\n const content = h(\n this.tag,\n {\n class: this.classObject,\n directives: [{ name: 'show', value: this.show }],\n attrs: { id: this.safeId() },\n on: { click: this.clickHandler }\n },\n [this.normalizeSlot('default', scope)]\n )\n return h(\n BVCollapse,\n {\n props: { appear: this.appear },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n },\n [content]\n )\n }\n})\n","import { keys } from './object'\nimport { eventOn, eventOff } from './events'\n\nconst allListenTypes = { hover: true, click: true, focus: true }\n\nconst BVBoundListeners = '__BV_boundEventListeners__'\n\nconst getTargets = binding => {\n const targets = keys(binding.modifiers || {}).filter(t => !allListenTypes[t])\n\n if (binding.value) {\n targets.push(binding.value)\n }\n\n return targets\n}\n\nconst bindTargets = (vnode, binding, listenTypes, fn) => {\n const targets = getTargets(binding)\n\n const listener = () => {\n fn({ targets, vnode })\n }\n\n keys(allListenTypes).forEach(type => {\n if (listenTypes[type] || binding.modifiers[type]) {\n eventOn(vnode.elm, type, listener)\n const boundListeners = vnode.elm[BVBoundListeners] || {}\n boundListeners[type] = boundListeners[type] || []\n boundListeners[type].push(listener)\n vnode.elm[BVBoundListeners] = boundListeners\n }\n })\n\n // Return the list of targets\n return targets\n}\n\nconst unbindTargets = (vnode, binding, listenTypes) => {\n keys(allListenTypes).forEach(type => {\n if (listenTypes[type] || binding.modifiers[type]) {\n const boundListeners = vnode.elm[BVBoundListeners] && vnode.elm[BVBoundListeners][type]\n if (boundListeners) {\n boundListeners.forEach(listener => eventOff(vnode.elm, type, listener))\n delete vnode.elm[BVBoundListeners][type]\n }\n }\n })\n}\n\nexport { bindTargets, unbindTargets, getTargets }\n\nexport default bindTargets\n","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'\n\n// Target listen types\nconst listenTypes = { click: true }\n\n// Property key for handler storage\nconst BV_TOGGLE = '__BV_toggle__'\nconst BV_TOGGLE_STATE = '__BV_toggle_STATE__'\nconst BV_TOGGLE_CONTROLS = '__BV_toggle_CONTROLS__'\nconst BV_TOGGLE_TARGETS = '__BV_toggle_TARGETS__'\n\n// Emitted control event for collapse (emitted to collapse)\nconst EVENT_TOGGLE = 'bv::toggle::collapse'\n\n// Listen to event for toggle state update (emitted by collapse)\nconst EVENT_STATE = 'bv::collapse::state'\n\n// 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.\nconst EVENT_STATE_SYNC = 'bv::collapse::sync::state'\n// Private event we send to collapse to request state update sync event\nconst EVENT_STATE_REQUEST = 'bv::request::collapse::state'\n\n// Reset and remove a property from the provided element\nconst resetProp = (el, prop) => {\n el[prop] = null\n delete el[prop]\n}\n\n// Handle targets update\nconst handleTargets = ({ targets, vnode }) => {\n targets.forEach(target => {\n vnode.context.$root.$emit(EVENT_TOGGLE, target)\n })\n}\n\n// Handle directive updates\n/* istanbul ignore next: not easy to test */\nconst 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 const targets = bindTargets(vnode, binding, listenTypes, handleTargets)\n // Update targets array to element\n el[BV_TOGGLE_TARGETS] = targets\n // Add aria attributes to element\n el[BV_TOGGLE_CONTROLS] = targets.join(' ')\n // ensure aria-controls is up to date\n setAttr(el, 'aria-controls', el[BV_TOGGLE_CONTROLS])\n // Request a state update from targets so that we can ensure\n // expanded state is correct\n targets.forEach(target => {\n vnode.context.$root.$emit(EVENT_STATE_REQUEST, target)\n })\n }\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 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 setAttr(el, 'aria-controls', el[BV_TOGGLE_CONTROLS])\n}\n\n/*\n * Export our directive\n */\nexport const VBToggle = {\n bind(el, binding, vnode) {\n const targets = bindTargets(vnode, binding, listenTypes, handleTargets)\n if (isBrowser && vnode.context && targets.length > 0) {\n // Add targets array to element\n el[BV_TOGGLE_TARGETS] = targets\n // Add aria attributes to element\n el[BV_TOGGLE_CONTROLS] = targets.join(' ')\n // State is initially collapsed until we receive a state event\n el[BV_TOGGLE_STATE] = false\n setAttr(el, 'aria-controls', el[BV_TOGGLE_CONTROLS])\n setAttr(el, 'aria-expanded', 'false')\n // If element is not a button, we add `role=\"button\"` for accessibility\n if (el.tagName !== 'BUTTON' && !hasAttr(el, 'role')) {\n setAttr(el, 'role', 'button')\n }\n\n // Toggle state handler\n const toggleDirectiveHandler = (id, state) => {\n const targets = el[BV_TOGGLE_TARGETS] || []\n if (targets.indexOf(id) !== -1) {\n // Set aria-expanded state\n setAttr(el, 'aria-expanded', state ? 'true' : 'false')\n // Set/Clear 'collapsed' class state\n el[BV_TOGGLE_STATE] = state\n if (state) {\n removeClass(el, 'collapsed')\n } else {\n addClass(el, 'collapsed')\n }\n }\n }\n\n // Store the toggle handler on the element\n el[BV_TOGGLE] = toggleDirectiveHandler\n\n // Listen for toggle state changes (public)\n vnode.context.$root.$on(EVENT_STATE, el[BV_TOGGLE])\n // Listen for toggle state sync (private)\n vnode.context.$root.$on(EVENT_STATE_SYNC, el[BV_TOGGLE])\n }\n },\n componentUpdated: handleUpdate,\n updated: handleUpdate,\n unbind(el, binding, vnode) /* istanbul ignore next */ {\n unbindTargets(vnode, binding, listenTypes)\n // Remove our $root listener\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 }\n // Reset custom props\n resetProp(el, BV_TOGGLE)\n resetProp(el, BV_TOGGLE_STATE)\n resetProp(el, BV_TOGGLE_CONTROLS)\n resetProp(el, BV_TOGGLE_TARGETS)\n // Reset classes/attrs\n removeClass(el, 'collapsed')\n removeAttr(el, 'aria-expanded')\n removeAttr(el, 'aria-controls')\n removeAttr(el, 'role')\n }\n}\n","import { BCollapse } from './collapse'\nimport { VBToggle } from '../../directives/toggle/toggle'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst CollapsePlugin = /*#__PURE__*/ pluginFactory({\n components: { BCollapse },\n directives: { VBToggle }\n})\n\nexport { CollapsePlugin, BCollapse }\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","import { assign, defineProperty, defineProperties, readonlyDescriptor } from './object'\n\nclass BvEvent {\n constructor(type, eventInit = {}) {\n // Start by emulating native Event constructor\n if (!type) {\n /* istanbul ignore next */\n throw new TypeError(\n `Failed to construct '${this.constructor.name}'. 1 argument required, ${\n arguments.length\n } given.`\n )\n }\n\n // Merge defaults first, the eventInit, and the type last\n // so it can't be overwritten\n assign(this, BvEvent.Defaults, this.constructor.Defaults, eventInit, { type })\n\n // Freeze some props as readonly, but leave them enumerable\n defineProperties(this, {\n type: readonlyDescriptor(),\n cancelable: readonlyDescriptor(),\n nativeEvent: readonlyDescriptor(),\n target: readonlyDescriptor(),\n relatedTarget: readonlyDescriptor(),\n vueTarget: readonlyDescriptor(),\n componentId: readonlyDescriptor()\n })\n\n // Create a private variable using closure scoping\n let defaultPrevented = false\n // Recreate preventDefault method. One way setter\n this.preventDefault = function preventDefault() {\n if (this.cancelable) {\n defaultPrevented = true\n }\n }\n\n // Create `defaultPrevented` publicly accessible prop that\n // can only be altered by the preventDefault method\n defineProperty(this, 'defaultPrevented', {\n enumerable: true,\n get() {\n return defaultPrevented\n }\n })\n }\n\n static get Defaults() {\n return {\n type: '',\n cancelable: true,\n nativeEvent: null,\n target: null,\n relatedTarget: null,\n vueTarget: null,\n componentId: null\n }\n }\n}\n\n// Named Exports\nexport { BvEvent }\n","import { contains } from '../utils/dom'\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOn, eventOff } from '../utils/events'\n\n// @vue/component\nexport default {\n data() {\n return {\n listenForClickOut: false\n }\n },\n watch: {\n listenForClickOut(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(\n this.clickOutElement,\n this.clickOutEventName,\n this._clickOutHandler,\n EVENT_OPTIONS_NO_CAPTURE\n )\n if (newValue) {\n eventOn(\n this.clickOutElement,\n this.clickOutEventName,\n this._clickOutHandler,\n EVENT_OPTIONS_NO_CAPTURE\n )\n }\n }\n }\n },\n beforeCreate() {\n // Declare non-reactive properties\n this.clickOutElement = null\n this.clickOutEventName = null\n },\n mounted() {\n if (!this.clickOutElement) {\n this.clickOutElement = document\n }\n if (!this.clickOutEventName) {\n this.clickOutEventName = 'click'\n }\n if (this.listenForClickOut) {\n eventOn(\n this.clickOutElement,\n this.clickOutEventName,\n this._clickOutHandler,\n EVENT_OPTIONS_NO_CAPTURE\n )\n }\n },\n beforeDestroy() /* istanbul ignore next */ {\n eventOff(\n this.clickOutElement,\n this.clickOutEventName,\n this._clickOutHandler,\n EVENT_OPTIONS_NO_CAPTURE\n )\n },\n methods: {\n isClickOut(evt) {\n return !contains(this.$el, evt.target)\n },\n _clickOutHandler(evt) {\n if (this.clickOutHandler && this.isClickOut(evt)) {\n this.clickOutHandler(evt)\n }\n }\n }\n}\n","import { EVENT_OPTIONS_NO_CAPTURE, eventOn, eventOff } from '../utils/events'\n\n// @vue/component\nexport default {\n data() {\n return {\n listenForFocusIn: false\n }\n },\n watch: {\n listenForFocusIn(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE)\n if (newValue) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE)\n }\n }\n }\n },\n beforeCreate() {\n // Declare non-reactive properties\n this.focusInElement = null\n },\n mounted() {\n if (!this.focusInElement) {\n this.focusInElement = document\n }\n if (this.listenForFocusIn) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE)\n }\n },\n beforeDestroy() /* istanbul ignore next */ {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE)\n },\n methods: {\n _focusInHandler(evt) {\n if (this.focusInHandler) {\n this.focusInHandler(evt)\n }\n }\n }\n}\n","import Popper from 'popper.js'\nimport KeyCodes from '../utils/key-codes'\nimport { BvEvent } from '../utils/bv-event.class'\nimport { closest, contains, isVisible, requestAF, selectAll } from '../utils/dom'\nimport { isNull } from '../utils/inspect'\nimport { HTMLElement } from '../utils/safe-types'\nimport { warn } from '../utils/warn'\nimport clickOutMixin from './click-out'\nimport focusInMixin from './focus-in'\nimport idMixin from './id'\n\n// Return an array of visible items\nconst filterVisibles = els => (els || []).filter(isVisible)\n\n// Root dropdown event names\nconst ROOT_DROPDOWN_PREFIX = 'bv::dropdown::'\nconst ROOT_DROPDOWN_SHOWN = `${ROOT_DROPDOWN_PREFIX}shown`\nconst ROOT_DROPDOWN_HIDDEN = `${ROOT_DROPDOWN_PREFIX}hidden`\n\n// Dropdown item CSS selectors\nconst Selector = {\n FORM_CHILD: '.dropdown form',\n ITEM_SELECTOR: ['.dropdown-item', '.b-dropdown-form']\n .map(selector => `${selector}:not(.disabled):not([disabled])`)\n .join(', ')\n}\n\n// Popper attachment positions\nconst AttachmentMap = {\n // Dropup left align\n TOP: 'top-start',\n // Dropup right align\n TOPEND: 'top-end',\n // Dropdown left align\n BOTTOM: 'bottom-start',\n // Dropdown right align\n BOTTOMEND: 'bottom-end',\n // Dropright left align\n RIGHT: 'right-start',\n // Dropright right align\n RIGHTEND: 'right-end',\n // Dropleft left align\n LEFT: 'left-start',\n // Dropleft right align\n LEFTEND: 'left-end'\n}\n\n// @vue/component\nexport default {\n mixins: [idMixin, clickOutMixin, focusInMixin],\n provide() {\n return { bvDropdown: this }\n },\n inject: {\n bvNavbar: { default: null }\n },\n props: {\n disabled: {\n type: Boolean,\n default: false\n },\n dropup: {\n // place on top if possible\n type: Boolean,\n default: false\n },\n dropright: {\n // place right if possible\n type: Boolean,\n default: false\n },\n dropleft: {\n // place left if possible\n type: Boolean,\n default: false\n },\n right: {\n // Right align menu (default is left align)\n type: Boolean,\n default: false\n },\n offset: {\n // Number of pixels to offset menu, or a CSS unit value (i.e. 1px, 1rem, etc)\n type: [Number, String],\n default: 0\n },\n noFlip: {\n // Disable auto-flipping of menu from bottom<=>top\n type: Boolean,\n default: false\n },\n popperOpts: {\n // type: Object,\n default: () => {}\n },\n boundary: {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n type: [String, HTMLElement],\n default: 'scrollParent'\n }\n },\n data() {\n return {\n visible: false,\n visibleChangePrevented: false\n }\n },\n computed: {\n inNavbar() {\n return !isNull(this.bvNavbar)\n },\n toggler() {\n const toggle = this.$refs.toggle\n return toggle ? toggle.$el || toggle : null\n },\n directionClass() {\n if (this.dropup) {\n return 'dropup'\n } else if (this.dropright) {\n return 'dropright'\n } else if (this.dropleft) {\n return 'dropleft'\n }\n return ''\n }\n },\n watch: {\n visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false\n return\n }\n\n if (newValue !== oldValue) {\n const evtName = newValue ? 'show' : 'hide'\n const bvEvt = new BvEvent(evtName, {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.menu,\n relatedTarget: null,\n componentId: this.safeId ? this.safeId() : this.id || null\n })\n this.emitEvent(bvEvt)\n if (bvEvt.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true\n this.visible = oldValue\n // Just in case a child element triggered `this.hide(true)`\n this.$off('hidden', this.focusToggler)\n return\n }\n if (evtName === 'show') {\n this.showMenu()\n } else {\n this.hideMenu()\n }\n }\n },\n disabled(newValue, oldValue) {\n if (newValue !== oldValue && newValue && this.visible) {\n // Hide dropdown if disabled changes to true\n this.visible = false\n }\n }\n },\n created() {\n // Create non-reactive property\n this.$_popper = null\n },\n deactivated() /* istanbul ignore next: not easy to test */ {\n // In case we are inside a `<keep-alive>`\n this.visible = false\n this.whileOpenListen(false)\n this.destroyPopper()\n },\n beforeDestroy() {\n this.visible = false\n this.whileOpenListen(false)\n this.destroyPopper()\n },\n methods: {\n // Event emitter\n emitEvent(bvEvt) {\n const { type } = bvEvt\n this.$emit(type, bvEvt)\n this.$root.$emit(`${ROOT_DROPDOWN_PREFIX}${type}`, bvEvt)\n },\n showMenu() {\n if (this.disabled) {\n /* istanbul ignore next */\n return\n }\n\n // Only instantiate Popper.js when dropdown is not in `<b-navbar>`\n if (!this.inNavbar) {\n if (typeof Popper === 'undefined') {\n /* istanbul ignore next */\n warn('Popper.js not found. Falling back to CSS positioning', 'BDropdown')\n } else {\n // For dropup with alignment we use the parent element as popper container\n let el = (this.dropup && this.right) || this.split ? this.$el : this.$refs.toggle\n // Make sure we have a reference to an element, not a component!\n el = el.$el || el\n // Instantiate Popper.js\n this.createPopper(el)\n }\n }\n\n // Ensure other menus are closed\n this.$root.$emit(ROOT_DROPDOWN_SHOWN, this)\n\n // Enable listeners\n this.whileOpenListen(true)\n\n // Wrap in `$nextTick()` to ensure menu is fully rendered/shown\n this.$nextTick(() => {\n // Focus on the menu container on show\n this.focusMenu()\n // Emit the shown event\n this.$emit('shown')\n })\n },\n hideMenu() {\n this.whileOpenListen(false)\n this.$root.$emit(ROOT_DROPDOWN_HIDDEN, this)\n this.$emit('hidden')\n this.destroyPopper()\n },\n createPopper(element) {\n this.destroyPopper()\n this.$_popper = new Popper(element, this.$refs.menu, this.getPopperConfig())\n },\n destroyPopper() {\n // Ensure popper event listeners are removed cleanly\n if (this.$_popper) {\n this.$_popper.destroy()\n }\n this.$_popper = null\n },\n updatePopper() /* istanbul ignore next: not easy to test */ {\n // Instructs popper to re-computes the dropdown position\n // usefull if the content changes size\n try {\n this.$_popper.scheduleUpdate()\n } catch {}\n },\n getPopperConfig() {\n let placement = AttachmentMap.BOTTOM\n if (this.dropup) {\n placement = this.right ? AttachmentMap.TOPEND : AttachmentMap.TOP\n } else if (this.dropright) {\n placement = AttachmentMap.RIGHT\n } else if (this.dropleft) {\n placement = AttachmentMap.LEFT\n } else if (this.right) {\n placement = AttachmentMap.BOTTOMEND\n }\n const popperConfig = {\n placement,\n modifiers: {\n offset: { offset: this.offset || 0 },\n flip: { enabled: !this.noFlip }\n }\n }\n if (this.boundary) {\n popperConfig.modifiers.preventOverflow = { boundariesElement: this.boundary }\n }\n return { ...popperConfig, ...(this.popperOpts || {}) }\n },\n // Turn listeners on/off while open\n whileOpenListen(isOpen) {\n // Hide the dropdown when clicked outside\n this.listenForClickOut = isOpen\n // Hide the dropdown when it loses focus\n this.listenForFocusIn = isOpen\n // Hide the dropdown when another dropdown is opened\n const method = isOpen ? '$on' : '$off'\n this.$root[method](ROOT_DROPDOWN_SHOWN, this.rootCloseListener)\n },\n rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false\n }\n },\n show() {\n // Public method to show dropdown\n if (this.disabled) {\n return\n }\n // Wrap in a `requestAF()` to allow any previous\n // click handling to occur first\n requestAF(() => {\n this.visible = true\n })\n },\n hide(refocus = false) {\n // Public method to hide dropdown\n if (this.disabled) {\n /* istanbul ignore next */\n return\n }\n this.visible = false\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once('hidden', this.focusToggler)\n }\n },\n // Called only by a button that toggles the menu\n toggle(evt) {\n evt = evt || {}\n // Early exit when not a click event or ENTER, SPACE or DOWN were pressed\n const { type, keyCode } = evt\n if (\n type !== 'click' &&\n !(\n type === 'keydown' &&\n [KeyCodes.ENTER, KeyCodes.SPACE, KeyCodes.DOWN].indexOf(keyCode) !== -1\n )\n ) {\n /* istanbul ignore next */\n return\n }\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false\n return\n }\n this.$emit('toggle', evt)\n evt.preventDefault()\n evt.stopPropagation()\n // Toggle visibility\n if (this.visible) {\n this.hide(true)\n } else {\n this.show()\n }\n },\n // Mousedown handler for the toggle\n onMousedown(evt) /* istanbul ignore next */ {\n // We prevent the 'mousedown' event for the toggle to stop the\n // 'focusin' event from being fired\n // The event would otherwise be picked up by the global 'focusin'\n // listener and there is no cross-browser solution to detect it\n // relates to the toggle click\n // The 'click' event will still be fired and we handle closing\n // other dropdowns there too\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/4328\n evt.preventDefault()\n },\n // Called from dropdown menu context\n onKeydown(evt) {\n const { keyCode } = evt\n if (keyCode === KeyCodes.ESC) {\n // Close on ESC\n this.onEsc(evt)\n } else if (keyCode === KeyCodes.DOWN) {\n // Down Arrow\n this.focusNext(evt, false)\n } else if (keyCode === KeyCodes.UP) {\n // Up Arrow\n this.focusNext(evt, true)\n }\n },\n // If user presses ESC, close the menu\n onEsc(evt) {\n if (this.visible) {\n this.visible = false\n evt.preventDefault()\n evt.stopPropagation()\n // Return focus to original trigger button\n this.$once('hidden', this.focusToggler)\n }\n },\n // Called only in split button mode, for the split button\n onSplitClick(evt) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false\n return\n }\n this.$emit('click', evt)\n },\n // Shared hide handler between click-out and focus-in events\n hideHandler(evt) {\n const { target } = evt\n if (this.visible && !contains(this.$refs.menu, target) && !contains(this.toggler, target)) {\n this.hide()\n }\n },\n // Document click-out listener\n clickOutHandler(evt) {\n this.hideHandler(evt)\n },\n // Document focus-in listener\n focusInHandler(evt) {\n this.hideHandler(evt)\n },\n // Keyboard nav\n focusNext(evt, up) {\n // Ignore key up/down on form elements\n const { target } = evt\n if (!this.visible || (evt && closest(Selector.FORM_CHILD, target))) {\n /* istanbul ignore next: should never happen */\n return\n }\n evt.preventDefault()\n evt.stopPropagation()\n this.$nextTick(() => {\n const items = this.getItems()\n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return\n }\n let index = items.indexOf(target)\n if (up && index > 0) {\n index--\n } else if (!up && index < items.length - 1) {\n index++\n }\n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0\n }\n this.focusItem(index, items)\n })\n },\n focusItem(idx, items) {\n const el = items.find((el, i) => i === idx)\n if (el && el.focus) {\n el.focus()\n }\n },\n getItems() {\n // Get all items\n return filterVisibles(selectAll(Selector.ITEM_SELECTOR, this.$refs.menu))\n },\n focusMenu() {\n try {\n this.$refs.menu.focus()\n } catch {}\n },\n focusToggler() {\n this.$nextTick(() => {\n const toggler = this.toggler\n if (toggler && toggler.focus) {\n toggler.focus()\n }\n })\n }\n }\n}\n","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'\n\nconst NAME = 'BDropdown'\n\nexport const 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: () => getComponentConfig(NAME, 'size')\n },\n variant: {\n type: String,\n default: () => getComponentConfig(NAME, 'variant')\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: () => getComponentConfig(NAME, 'toggleText')\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\n // default: undefined\n },\n splitTo: {\n type: [String, Object]\n // default: undefined\n },\n splitVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'splitVariant')\n },\n splitClass: {\n type: [String, Array, Object],\n default: null\n },\n splitButtonType: {\n type: String,\n default: 'button',\n validator: value => arrayIncludes(['button', 'submit', 'reset'], value)\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}\n\n// @vue/component\nexport const BDropdown = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props,\n computed: {\n dropdownClasses() {\n return [\n this.directionClass,\n {\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 },\n menuClasses() {\n return [\n this.menuClass,\n {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }\n ]\n },\n toggleClasses() {\n return [\n this.toggleClass,\n {\n 'dropdown-toggle-split': this.split,\n 'dropdown-toggle-no-caret': this.noCaret && !this.split\n }\n ]\n }\n },\n render(h) {\n let split = h()\n const buttonContent = this.normalizeSlot('button-content') || this.html || stripTags(this.text)\n if (this.split) {\n const btnProps = {\n variant: this.splitVariant || this.variant,\n size: this.size,\n block: this.block,\n disabled: this.disabled\n }\n // We add these as needed due to router-link issues with defined property with undefined/null values\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 split = h(\n BButton,\n {\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 },\n [buttonContent]\n )\n }\n const toggle = h(\n BButton,\n {\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', { class: ['sr-only'] }, [this.toggleText]) : buttonContent]\n )\n const menu = h(\n 'ul',\n {\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', { hide: this.hide }) : [h()]\n )\n return h(\n 'div',\n {\n staticClass: 'dropdown b-dropdown',\n class: this.dropdownClasses,\n attrs: { id: this.safeId() }\n },\n [split, toggle, menu]\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { requestAF } from '../../utils/dom'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport { BLink, propsFactory as linkPropsFactory } from '../link/link'\n\nexport const props = linkPropsFactory()\n\n// @vue/component\nexport const BDropdownItem = /*#__PURE__*/ Vue.extend({\n name: 'BDropdownItem',\n mixins: [normalizeSlotMixin],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: {\n ...props,\n variant: {\n type: String,\n default: null\n }\n },\n methods: {\n closeDropdown() {\n // Close on next animation frame to allow <b-link> time to process\n requestAF(() => {\n if (this.bvDropdown) {\n this.bvDropdown.hide(true)\n }\n })\n },\n onClick(evt) {\n this.$emit('click', evt)\n this.closeDropdown()\n }\n },\n render(h) {\n return h('li', { attrs: { role: 'presentation' } }, [\n h(\n BLink,\n {\n props: this.$props,\n staticClass: 'dropdown-item',\n class: {\n [`text-${this.variant}`]: this.variant && !(this.active || this.disabled)\n },\n attrs: { ...this.$attrs, role: 'menuitem' },\n on: { click: this.onClick },\n ref: 'item'\n },\n this.normalizeSlot('default')\n )\n ])\n }\n})\n","import Vue from '../../utils/vue'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\nexport const props = {\n active: {\n type: Boolean,\n default: false\n },\n activeClass: {\n type: String,\n default: 'active'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: null\n }\n}\n\n// @vue/component\nexport const BDropdownItemButton = /*#__PURE__*/ Vue.extend({\n name: 'BDropdownItemButton',\n mixins: [normalizeSlotMixin],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props,\n methods: {\n closeDropdown() {\n if (this.bvDropdown) {\n this.bvDropdown.hide(true)\n }\n },\n onClick(evt) {\n this.$emit('click', evt)\n this.closeDropdown()\n }\n },\n render(h) {\n return h('li', { attrs: { role: 'presentation' } }, [\n h(\n 'button',\n {\n staticClass: 'dropdown-item',\n class: {\n [this.activeClass]: this.active,\n [`text-${this.variant}`]: this.variant && !(this.active || this.disabled)\n },\n attrs: {\n ...this.$attrs,\n role: 'menuitem',\n type: 'button',\n disabled: this.disabled\n },\n on: { click: this.onClick },\n ref: 'button'\n },\n this.normalizeSlot('default')\n )\n ])\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const 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}\n\n// @vue/component\nexport const BDropdownHeader = /*#__PURE__*/ Vue.extend({\n name: 'BDropdownHeader',\n functional: true,\n props,\n render(h, { props, data, children }) {\n const $attrs = data.attrs || {}\n data.attrs = {}\n return h('li', mergeData(data, { attrs: { role: 'presentation' } }), [\n h(\n props.tag,\n {\n staticClass: 'dropdown-header',\n class: {\n [`text-${props.variant}`]: props.variant\n },\n attrs: {\n ...$attrs,\n id: props.id || null,\n role: 'heading'\n },\n ref: 'header'\n },\n children\n )\n ])\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {\n tag: {\n type: String,\n default: 'hr'\n }\n}\n\n// @vue/component\nexport const BDropdownDivider = /*#__PURE__*/ Vue.extend({\n name: 'BDropdownDivider',\n functional: true,\n props,\n render(h, { props, data }) {\n const $attrs = data.attrs || {}\n data.attrs = {}\n return h('li', mergeData(data, { attrs: { role: 'presentation' } }), [\n h(props.tag, {\n staticClass: 'dropdown-divider',\n attrs: {\n ...$attrs,\n role: 'separator',\n 'aria-orientation': 'horizontal'\n },\n ref: 'divider'\n })\n ])\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const 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}\n\n// @vue/component\nexport const BForm = /*#__PURE__*/ Vue.extend({\n name: 'BForm',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n 'form',\n 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 }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { BForm, props as formProps } from '../form/form'\n\n// @vue/component\nexport const BDropdownForm = /*#__PURE__*/ Vue.extend({\n name: 'BDropdownForm',\n functional: true,\n props: {\n ...formProps,\n disabled: {\n type: Boolean,\n default: false\n },\n formClass: {\n type: [String, Object, Array],\n default: null\n }\n },\n render(h, { props, data, children }) {\n const $attrs = data.attrs || {}\n const $listeners = data.on || {}\n data.attrs = {}\n data.on = {}\n return h('li', mergeData(data, { attrs: { role: 'presentation' } }), [\n h(\n BForm,\n {\n ref: 'form',\n staticClass: 'b-dropdown-form',\n class: [props.formClass, { disabled: props.disabled }],\n props,\n attrs: {\n ...$attrs,\n disabled: props.disabled,\n // Tab index of -1 for keyboard navigation\n tabindex: props.disabled ? null : '-1'\n },\n on: $listeners\n },\n children\n )\n ])\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\n// @vue/component\nexport const 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(h, { props, data, children }) {\n const $attrs = data.attrs || {}\n data.attrs = {}\n return h('li', mergeData(data, { attrs: { role: 'presentation' } }), [\n h(\n props.tag,\n {\n staticClass: 'b-dropdown-text',\n class: {\n [`text-${props.variant}`]: props.variant\n },\n props,\n attrs: $attrs,\n ref: 'text'\n },\n children\n )\n ])\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot'\n\nexport const 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}\n\n// @vue/component\nexport const BDropdownGroup = /*#__PURE__*/ Vue.extend({\n name: 'BDropdownGroup',\n functional: true,\n props,\n render(h, { props, data, slots, scopedSlots }) {\n const $slots = slots()\n const $scopedSlots = scopedSlots || {}\n const $attrs = data.attrs || {}\n data.attrs = {}\n let header\n let headerId = null\n\n if (hasNormalizedSlot('header', $scopedSlots, $slots) || props.header) {\n headerId = props.id ? `_bv_${props.id}_group_dd_header` : null\n header = h(\n props.headerTag,\n {\n staticClass: 'dropdown-header',\n class: [props.headerClasses, { [`text-${props.variant}`]: props.variant }],\n attrs: {\n id: headerId,\n role: 'heading'\n }\n },\n normalizeSlot('header', {}, $scopedSlots, $slots) || props.header\n )\n }\n\n const adb = [headerId, props.ariaDescribedBy]\n .filter(Boolean)\n .join(' ')\n .trim()\n\n return h('li', mergeData(data, { attrs: { role: 'presentation' } }), [\n header || h(),\n h(\n 'ul',\n {\n staticClass: 'list-unstyled',\n attrs: {\n ...$attrs,\n id: props.id || null,\n role: 'group',\n 'aria-describedby': adb || null\n }\n },\n normalizeSlot('default', {}, $scopedSlots, $slots)\n )\n ])\n }\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'\n\nconst DropdownPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BDropdown,\n BDd: BDropdown,\n BDropdownItem,\n BDdItem: BDropdownItem,\n BDropdownItemButton,\n BDropdownItemBtn: BDropdownItemButton,\n BDdItemButton: BDropdownItemButton,\n BDdItemBtn: BDropdownItemButton,\n BDropdownHeader,\n BDdHeader: BDropdownHeader,\n BDropdownDivider,\n BDdDivider: BDropdownDivider,\n BDropdownForm,\n BDdForm: BDropdownForm,\n BDropdownText,\n BDdText: BDropdownText,\n BDropdownGroup,\n BDdGroup: BDropdownGroup\n }\n})\n\nexport {\n DropdownPlugin,\n BDropdown,\n BDropdownItem,\n BDropdownItemButton,\n BDropdownHeader,\n BDropdownDivider,\n BDropdownForm,\n BDropdownText,\n BDropdownGroup\n}\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { arrayIncludes } from '../../utils/array'\n\nexport const props = {\n type: {\n type: String,\n default: 'iframe',\n validator: str =>\n arrayIncludes(['iframe', 'embed', 'video', 'object', 'img', 'b-img', 'b-img-lazy'], str)\n },\n tag: {\n type: String,\n default: 'div'\n },\n aspect: {\n type: String,\n default: '16by9'\n }\n}\n\n// @vue/component\nexport const BEmbed = /*#__PURE__*/ Vue.extend({\n name: 'BEmbed',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n {\n ref: data.ref,\n staticClass: 'embed-responsive',\n class: {\n [`embed-responsive-${props.aspect}`]: props.aspect\n }\n },\n [h(props.type, mergeData(data, { ref: '', staticClass: 'embed-responsive-item' }), children)]\n )\n }\n})\n","import { BEmbed } from './embed'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst EmbedPlugin = /*#__PURE__*/ pluginFactory({\n components: { BEmbed }\n})\n\nexport { EmbedPlugin, BEmbed }\n","import get from '../utils/get'\nimport { stripTags } from '../utils/html'\nimport { isArray, isPlainObject, isUndefined } from '../utils/inspect'\nimport { keys } from '../utils/object'\nimport { warn } from '../utils/warn'\n\nconst OPTIONS_OBJECT_DEPRECATED_MSG =\n 'Setting prop \"options\" to an object is deprecated. Use the array format instead.'\n\n// @vue/component\nexport default {\n props: {\n options: {\n type: [Array, Object],\n default: () => []\n },\n valueField: {\n type: String,\n default: 'value'\n },\n textField: {\n type: String,\n default: 'text'\n },\n htmlField: {\n type: String,\n default: 'html'\n },\n disabledField: {\n type: String,\n default: 'disabled'\n }\n },\n computed: {\n formOptions() {\n const options = this.options\n // Normalize the given options array\n if (isArray(options)) {\n return options.map(option => this.normalizeOption(option))\n }\n // Deprecate the object options format\n warn(OPTIONS_OBJECT_DEPRECATED_MSG, this.$options.name)\n // Normalize a `options` object to an array of options\n return keys(options).map(key => this.normalizeOption(options[key] || {}, key))\n }\n },\n methods: {\n normalizeOption(option, key = null) {\n // When the option is an object, normalize it\n if (isPlainObject(option)) {\n const value = get(option, this.valueField)\n const text = get(option, this.textField)\n return {\n value: isUndefined(value) ? key || text : value,\n text: stripTags(String(isUndefined(text) ? key : text)),\n html: get(option, this.htmlField),\n disabled: Boolean(get(option, this.disabledField))\n }\n }\n // Otherwise create an `<option>` object from the given value\n return {\n value: key || option,\n text: stripTags(String(option)),\n disabled: false\n }\n }\n }\n}\n","import Vue from '../../utils/vue'\nimport formOptionsMixin from '../../mixins/form-options'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport { htmlOrText } from '../../utils/html'\n\n// @vue/component\nexport const 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(h) {\n const options = this.formOptions.map((option, index) => {\n return h('option', {\n key: `option_${index}_opt`,\n attrs: { disabled: option.disabled },\n domProps: { ...htmlOrText(option.html, option.text), value: option.value }\n })\n })\n return h('datalist', { attrs: { id: this.id } }, [options, this.normalizeSlot('default')])\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { getComponentConfig } from '../../utils/config'\n\nconst NAME = 'BFormText'\n\nexport const props = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'small'\n },\n textVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'textVariant')\n },\n inline: {\n type: Boolean,\n default: false\n }\n}\n\n// @vue/component\nexport const BFormText = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n mergeData(data, {\n class: {\n 'form-text': !props.inline,\n [`text-${props.textVariant}`]: props.textVariant\n },\n attrs: {\n id: props.id\n }\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'div'\n },\n tooltip: {\n type: Boolean,\n default: false\n },\n forceShow: {\n type: Boolean,\n default: false\n },\n state: {\n type: Boolean,\n default: null\n },\n ariaLive: {\n type: String,\n default: null\n },\n role: {\n type: String,\n default: null\n }\n}\n\n// @vue/component\nexport const BFormInvalidFeedback = /*#__PURE__*/ Vue.extend({\n name: 'BFormInvalidFeedback',\n functional: true,\n props,\n render(h, { props, data, children }) {\n const show = props.forceShow === true || props.state === false\n return h(\n props.tag,\n mergeData(data, {\n class: {\n 'invalid-feedback': !props.tooltip,\n 'invalid-tooltip': props.tooltip,\n 'd-block': show\n },\n attrs: {\n id: props.id,\n role: props.role,\n 'aria-live': props.ariaLive,\n 'aria-atomic': props.ariaLive ? 'true' : null\n }\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'div'\n },\n tooltip: {\n type: Boolean,\n default: false\n },\n forceShow: {\n type: Boolean,\n default: false\n },\n state: {\n type: Boolean,\n default: null\n },\n ariaLive: {\n type: String,\n default: null\n },\n role: {\n type: String,\n default: null\n }\n}\n\n// @vue/component\nexport const BFormValidFeedback = /*#__PURE__*/ Vue.extend({\n name: 'BFormValidFeedback',\n functional: true,\n props,\n render(h, { props, data, children }) {\n const show = props.forceShow === true || props.state === true\n return h(\n props.tag,\n mergeData(data, {\n class: {\n 'valid-feedback': !props.tooltip,\n 'valid-tooltip': props.tooltip,\n 'd-block': show\n },\n attrs: {\n id: props.id,\n role: props.role,\n 'aria-live': props.ariaLive,\n 'aria-atomic': props.ariaLive ? 'true' : null\n }\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {\n tag: {\n type: String,\n default: 'div'\n }\n}\n\n// @vue/component\nexport const BFormRow = /*#__PURE__*/ Vue.extend({\n name: 'BFormRow',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'form-row'\n }),\n children\n )\n }\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'\n\nconst FormPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BForm,\n BFormDatalist,\n BDatalist: BFormDatalist,\n BFormText,\n BFormInvalidFeedback,\n BFormFeedback: BFormInvalidFeedback,\n BFormValidFeedback,\n // Added here for convenience\n BFormRow\n }\n})\n\n// BFormRow is not exported here as a named export, as it is exported by Layout\nexport { FormPlugin, BForm, BFormDatalist, BFormText, BFormInvalidFeedback, BFormValidFeedback }\n","import looseEqual from './loose-equal'\n\nconst looseIndexOf = (arr, val) => {\n // Assumes that the first argument is an array\n for (let i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) {\n return i\n }\n }\n return -1\n}\n\nexport default looseIndexOf\n","import { matches, select, isVisible, requestAF } from '../utils/dom'\n\nconst SELECTOR = 'input, textarea, select'\n\n// @vue/component\nexport default {\n props: {\n name: {\n type: String\n // default: undefined\n },\n id: {\n type: String\n // default: undefined\n },\n disabled: {\n type: Boolean\n },\n required: {\n type: Boolean,\n default: false\n },\n form: {\n type: String,\n default: null\n },\n autofocus: {\n type: Boolean,\n default: false\n }\n },\n mounted() {\n this.handleAutofocus()\n },\n activated() /* istanbul ignore next */ {\n this.handleAutofocus()\n },\n methods: {\n handleAutofocus() {\n this.$nextTick(() => {\n requestAF(() => {\n let el = this.$el\n if (this.autofocus && isVisible(el)) {\n if (!matches(el, SELECTOR)) {\n el = select(SELECTOR, el)\n }\n el && el.focus && el.focus()\n }\n })\n })\n }\n }\n}\n","import normalizeSlotMixin from './normalize-slot'\n\n// @vue/component\nexport default {\n mixins: [normalizeSlotMixin],\n inheritAttrs: false,\n model: {\n prop: 'checked',\n event: 'input'\n },\n props: {\n value: {\n // Value when checked\n // type: Object,\n // default: undefined\n },\n checked: {\n // This is the v-model\n // type: Object,\n // default: undefined\n },\n inline: {\n type: Boolean,\n default: false\n },\n plain: {\n type: Boolean,\n default: false\n },\n button: {\n // Only applicable in standalone mode (non group)\n type: Boolean,\n default: false\n },\n buttonVariant: {\n // Only applicable when rendered with button style\n type: String,\n default: null\n },\n ariaLabel: {\n // Placed on the input if present.\n type: String,\n default: null\n },\n ariaLabelledby: {\n // Placed on the input if present.\n type: String,\n default: null\n }\n },\n data() {\n return {\n localChecked: this.isGroup ? this.bvGroup.checked : this.checked,\n hasFocus: false\n }\n },\n computed: {\n computedLocalChecked: {\n get() {\n return this.isGroup ? this.bvGroup.localChecked : this.localChecked\n },\n set(val) {\n if (this.isGroup) {\n this.bvGroup.localChecked = val\n } else {\n this.localChecked = val\n }\n }\n },\n isGroup() {\n // Is this check/radio a child of check-group or radio-group?\n return Boolean(this.bvGroup)\n },\n isBtnMode() {\n // Support button style in single input mode\n return this.isGroup ? this.bvGroup.buttons : this.button\n },\n isPlain() {\n return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain\n },\n isCustom() {\n return this.isBtnMode ? false : !this.isPlain\n },\n isSwitch() {\n // Custom switch styling (checkboxes only)\n return this.isBtnMode || this.isRadio || this.isPlain\n ? false\n : this.isGroup\n ? this.bvGroup.switches\n : this.switch\n },\n isInline() {\n return this.isGroup ? this.bvGroup.inline : this.inline\n },\n isDisabled() {\n // Child can be disabled while parent isn't, but is always disabled if group is\n return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled\n },\n isRequired() {\n // Required only works when a name is provided for the input(s)\n // Child can only be required when parent is\n // Groups will always have a name (either user supplied or auto generated)\n return this.getName && (this.isGroup ? this.bvGroup.required : this.required)\n },\n getName() {\n // Group name preferred over local name\n return (this.isGroup ? this.bvGroup.groupName : this.name) || null\n },\n getForm() {\n return (this.isGroup ? this.bvGroup.form : this.form) || null\n },\n getSize() {\n return (this.isGroup ? this.bvGroup.size : this.size) || ''\n },\n getState() {\n return this.isGroup ? this.bvGroup.computedState : this.computedState\n },\n getButtonVariant() {\n // Local variant preferred over group variant\n if (this.buttonVariant) {\n return this.buttonVariant\n } else if (this.isGroup && this.bvGroup.buttonVariant) {\n return this.bvGroup.buttonVariant\n }\n // default variant\n return 'secondary'\n },\n buttonClasses() {\n // Same for radio & check\n return [\n 'btn',\n `btn-${this.getButtonVariant}`,\n {\n [`btn-${this.getSize}`]: this.getSize,\n // 'disabled' class makes \"button\" look disabled\n disabled: this.isDisabled,\n // 'active' class makes \"button\" look pressed\n active: this.isChecked,\n // Focus class makes button look focused\n focus: this.hasFocus\n }\n ]\n }\n },\n watch: {\n checked(newVal) {\n this.computedLocalChecked = newVal\n }\n },\n methods: {\n handleFocus(evt) {\n // When in buttons mode, we need to add 'focus' class to label when input focused\n // As it is the hidden input which has actual focus\n if (evt.target) {\n if (evt.type === 'focus') {\n this.hasFocus = true\n } else if (evt.type === 'blur') {\n this.hasFocus = false\n }\n }\n },\n // Convenience methods for focusing the input\n focus() {\n if (!this.isDisabled && this.$refs.input && this.$refs.input.focus) {\n this.$refs.input.focus()\n }\n },\n blur() {\n if (!this.isDisabled && this.$refs.input && this.$refs.input.blur) {\n this.$refs.input.blur()\n }\n }\n },\n render(h) {\n const defaultSlot = this.normalizeSlot('default')\n\n // Generate the input element\n const on = { change: this.handleChange }\n if (this.isBtnMode) {\n // Handlers for focus styling when in button mode\n on.focus = on.blur = this.handleFocus\n }\n const input = h('input', {\n ref: 'input',\n key: 'input',\n on,\n class: {\n 'form-check-input': this.isPlain,\n 'custom-control-input': this.isCustom,\n 'is-valid': this.getState === true && !this.isBtnMode,\n 'is-invalid': this.getState === false && !this.isBtnMode,\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n 'position-static': this.isPlain && !defaultSlot\n },\n directives: [\n {\n name: 'model',\n rawName: 'v-model',\n value: this.computedLocalChecked,\n expression: 'computedLocalChecked'\n }\n ],\n attrs: {\n ...this.$attrs,\n id: this.safeId(),\n type: this.isRadio ? 'radio' : 'checkbox',\n name: this.getName,\n form: this.getForm,\n disabled: this.isDisabled,\n required: this.isRequired,\n autocomplete: 'off',\n 'aria-required': this.isRequired || null,\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || null\n },\n domProps: {\n value: this.value,\n checked: this.isChecked\n }\n })\n\n if (this.isBtnMode) {\n // Button mode\n let button = h('label', { class: this.buttonClasses }, [input, defaultSlot])\n if (!this.isGroup) {\n // Standalone button mode, so wrap in 'btn-group-toggle'\n // and flag it as inline-block to mimic regular buttons\n button = h('div', { class: ['btn-group-toggle', 'd-inline-block'] }, [button])\n }\n return button\n } else {\n // Not button mode\n let label = h()\n // If no label content in plain mode we dont render the label\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n if (!(this.isPlain && !defaultSlot)) {\n label = h(\n 'label',\n {\n class: {\n 'form-check-label': this.isPlain,\n 'custom-control-label': this.isCustom\n },\n attrs: { for: this.safeId() }\n },\n defaultSlot\n )\n }\n // Wrap it in a div\n return h(\n 'div',\n {\n class: {\n 'form-check': this.isPlain,\n 'form-check-inline': this.isPlain && this.isInline,\n 'custom-control': this.isCustom,\n 'custom-control-inline': this.isCustom && this.isInline,\n 'custom-checkbox': this.isCustom && this.isCheck && !this.isSwitch,\n 'custom-switch': this.isSwitch,\n 'custom-radio': this.isCustom && this.isRadio,\n // Temporary until Bootstrap v4 supports sizing (most likely in V5)\n [`b-custom-control-${this.getSize}`]: Boolean(this.getSize && !this.isBtnMode)\n }\n },\n [input, label]\n )\n }\n }\n}\n","import { getComponentConfig } from '../utils/config'\n\n// @vue/component\nexport default {\n props: {\n size: {\n type: String,\n default: () => getComponentConfig('formControls', 'size')\n }\n },\n computed: {\n sizeFormClass() {\n return [this.size ? `form-control-${this.size}` : null]\n },\n sizeBtnClass() /* istanbul ignore next: don't think this is used */ {\n return [this.size ? `btn-${this.size}` : null]\n }\n }\n}\n","/* Form control contextual state class computation\n *\n * Returned class is either 'is-valid' or 'is-invalid' based on the 'state' prop\n * state can be one of five values:\n * - true for is-valid\n * - false for is-invalid\n * - null for no contextual state\n */\nimport { isBoolean } from '../utils/inspect'\n\n// @vue/component\nexport default {\n props: {\n state: {\n // Tri-state prop: true, false, null (or undefined)\n type: Boolean,\n default: null\n }\n },\n computed: {\n computedState() {\n // If not a boolean, ensure that value is null\n return isBoolean(this.state) ? this.state : null\n },\n stateClass() {\n const state = this.computedState\n return state === true ? 'is-valid' : state === false ? 'is-invalid' : null\n }\n }\n}\n","import Vue from '../../utils/vue'\nimport looseEqual from '../../utils/loose-equal'\nimport looseIndexOf from '../../utils/loose-index-of'\nimport { isArray } from '../../utils/inspect'\nimport formMixin from '../../mixins/form'\nimport formRadioCheckMixin from '../../mixins/form-radio-check'\nimport formSizeMixin from '../../mixins/form-size'\nimport formStateMixin from '../../mixins/form-state'\nimport idMixin from '../../mixins/id'\n\n// @vue/component\nexport const BFormCheckbox = /*#__PURE__*/ Vue.extend({\n name: 'BFormCheckbox',\n mixins: [\n formRadioCheckMixin, // Includes shared render function\n idMixin,\n formMixin,\n formSizeMixin,\n formStateMixin\n ],\n inject: {\n bvGroup: {\n from: 'bvCheckGroup',\n default: false\n }\n },\n props: {\n value: {\n // type: [String, Number, Boolean, Object],\n default: true\n },\n uncheckedValue: {\n // type: [String, Number, Boolean, Object],\n // Not applicable in multi-check mode\n default: false\n },\n indeterminate: {\n // Not applicable in multi-check mode\n type: Boolean,\n default: false\n },\n switch: {\n // Custom switch styling\n type: Boolean,\n default: false\n },\n checked: {\n // v-model (Array when multiple checkboxes have same name)\n // type: [String, Number, Boolean, Object, Array],\n default: null\n }\n },\n computed: {\n isChecked() {\n const checked = this.computedLocalChecked\n const value = this.value\n if (isArray(checked)) {\n return looseIndexOf(checked, value) > -1\n } else {\n return looseEqual(checked, value)\n }\n },\n isRadio() {\n return false\n },\n isCheck() {\n return true\n }\n },\n watch: {\n computedLocalChecked(newVal) {\n this.$emit('input', newVal)\n if (this.$refs && this.$refs.input) {\n this.$emit('update:indeterminate', this.$refs.input.indeterminate)\n }\n },\n indeterminate(newVal) {\n this.setIndeterminate(newVal)\n }\n },\n mounted() {\n // Set initial indeterminate state\n this.setIndeterminate(this.indeterminate)\n },\n methods: {\n handleChange({ target: { checked, indeterminate } }) {\n let localChecked = this.computedLocalChecked\n const value = this.value\n const isArr = isArray(localChecked)\n const uncheckedValue = isArr ? null : this.uncheckedValue\n // Update computedLocalChecked\n if (isArr) {\n const idx = looseIndexOf(localChecked, value)\n if (checked && idx < 0) {\n // Add value to array\n localChecked = localChecked.concat(value)\n } else if (!checked && idx > -1) {\n // Remove value from array\n localChecked = localChecked.slice(0, idx).concat(localChecked.slice(idx + 1))\n }\n } else {\n localChecked = checked ? value : uncheckedValue\n }\n this.computedLocalChecked = localChecked\n // Change is only emitted on user interaction\n this.$emit('change', checked ? value : uncheckedValue)\n // If this is a child of form-checkbox-group, we emit a change event on it as well\n if (this.isGroup) {\n this.bvGroup.$emit('change', localChecked)\n }\n this.$emit('update:indeterminate', indeterminate)\n },\n setIndeterminate(state) {\n // Indeterminate only supported in single checkbox mode\n if (isArray(this.computedLocalChecked)) {\n state = false\n }\n if (this.$refs && this.$refs.input) {\n this.$refs.input.indeterminate = state\n // Emit update event to prop\n this.$emit('update:indeterminate', state)\n }\n }\n }\n})\n","import Vue from '../../utils/vue'\nimport idMixin from '../../mixins/id'\nimport formMixin from '../../mixins/form'\nimport formStateMixin from '../../mixins/form-state'\nimport formSizeMixin from '../../mixins/form-size'\nimport formRadioCheckMixin from '../../mixins/form-radio-check'\nimport looseEqual from '../../utils/loose-equal'\n\n// @vue/component\nexport const BFormRadio = /*#__PURE__*/ Vue.extend({\n name: 'BFormRadio',\n mixins: [\n idMixin,\n formRadioCheckMixin, // Includes shared render function\n formMixin,\n formSizeMixin,\n formStateMixin\n ],\n inject: {\n bvGroup: {\n from: 'bvRadioGroup',\n default: false\n }\n },\n props: {\n checked: {\n // v-model\n // type: [String, Number, Boolean, Object],\n default: null\n }\n },\n computed: {\n // Radio Groups can only have a single value, so determining if checked is simple\n isChecked() {\n return looseEqual(this.value, this.computedLocalChecked)\n },\n // Flags for form-radio-check mixin\n isRadio() {\n return true\n },\n isCheck() {\n return false\n }\n },\n watch: {\n // Radio Groups can only have a single value, so our watchers are simple\n computedLocalChecked() {\n this.$emit('input', this.computedLocalChecked)\n }\n },\n methods: {\n handleChange({ target: { checked } }) {\n const value = this.value\n this.computedLocalChecked = value\n // Change is only emitted on user interaction\n this.$emit('change', checked ? value : null)\n // If this is a child of form-radio-group, we emit a change event on it as well\n if (this.isGroup) {\n this.bvGroup.$emit('change', checked ? value : null)\n }\n }\n }\n})\n","import { htmlOrText } from '../utils/html'\nimport normalizeSlotMixin from './normalize-slot'\nimport { BFormCheckbox } from '../components/form-checkbox/form-checkbox'\nimport { BFormRadio } from '../components/form-radio/form-radio'\n\n// @vue/component\nexport default {\n mixins: [normalizeSlotMixin],\n model: {\n prop: 'checked',\n event: 'input'\n },\n props: {\n validated: {\n type: Boolean,\n default: false\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n },\n stacked: {\n type: Boolean,\n default: false\n },\n plain: {\n type: Boolean,\n default: false\n },\n buttons: {\n // Render as button style\n type: Boolean,\n default: false\n },\n buttonVariant: {\n // Only applicable when rendered with button style\n type: String,\n default: 'secondary'\n }\n },\n computed: {\n inline() {\n return !this.stacked\n },\n groupName() {\n // Checks/Radios tied to the same model must have the same name,\n // especially for ARIA accessibility.\n return this.name || this.safeId()\n },\n groupClasses() {\n if (this.buttons) {\n return [\n 'btn-group-toggle',\n this.inline ? 'btn-group' : 'btn-group-vertical',\n this.size ? `btn-group-${this.size}` : '',\n this.validated ? `was-validated` : ''\n ]\n }\n return [this.validated ? `was-validated` : '']\n },\n computedAriaInvalid() {\n const ariaInvalid = this.ariaInvalid\n if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {\n return 'true'\n }\n return this.computedState === false ? 'true' : null\n }\n },\n watch: {\n checked(newVal) {\n this.localChecked = newVal\n },\n localChecked(newVal) {\n this.$emit('input', newVal)\n }\n },\n render(h) {\n const inputs = this.formOptions.map((option, idx) => {\n const uid = `_BV_option_${idx}_`\n return h(\n this.isRadioGroup ? BFormRadio : BFormCheckbox,\n {\n key: uid,\n props: {\n id: this.safeId(uid),\n value: option.value,\n // Individual radios or checks can be disabled in a group\n disabled: option.disabled || false\n // We don't need to include these, since the input's will know they are inside here\n // name: this.groupName,\n // form: this.form || null,\n // required: Boolean(this.name && this.required)\n }\n },\n [h('span', { domProps: htmlOrText(option.html, option.text) })]\n )\n })\n return h(\n 'div',\n {\n class: [this.groupClasses, 'bv-no-focus-ring'],\n attrs: {\n id: this.safeId(),\n role: this.isRadioGroup ? 'radiogroup' : 'group',\n // Tabindex to allow group to be focused\n // if needed by screen readers\n tabindex: '-1',\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n }\n },\n [this.normalizeSlot('first'), inputs, this.normalizeSlot('default')]\n )\n }\n}\n","import Vue from '../../utils/vue'\nimport idMixin from '../../mixins/id'\nimport formMixin from '../../mixins/form'\nimport formOptionsMixin from '../../mixins/form-options'\nimport formRadioCheckGroupMixin from '../../mixins/form-radio-check-group'\nimport formSizeMixin from '../../mixins/form-size'\nimport formStateMixin from '../../mixins/form-state'\n\nexport const props = {\n switches: {\n // Custom switch styling\n type: Boolean,\n default: false\n },\n checked: {\n type: Array,\n default: null\n }\n}\n\n// @vue/component\nexport const BFormCheckboxGroup = /*#__PURE__*/ Vue.extend({\n name: 'BFormCheckboxGroup',\n mixins: [\n idMixin,\n formMixin,\n formRadioCheckGroupMixin, // Includes render function\n formOptionsMixin,\n formSizeMixin,\n formStateMixin\n ],\n provide() {\n return {\n bvCheckGroup: this\n }\n },\n props,\n data() {\n return {\n localChecked: this.checked || []\n }\n },\n computed: {\n isRadioGroup() {\n return false\n }\n }\n})\n","import { BFormCheckbox } from './form-checkbox'\nimport { BFormCheckboxGroup } from './form-checkbox-group'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormCheckboxPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormCheckbox,\n BCheckbox: BFormCheckbox,\n BCheck: BFormCheckbox,\n BFormCheckboxGroup,\n BCheckboxGroup: BFormCheckboxGroup,\n BCheckGroup: BFormCheckboxGroup\n }\n})\n\nexport { FormCheckboxPlugin, BFormCheckbox, BFormCheckboxGroup }\n","// v-b-hover directive\nimport { isBrowser } from '../../utils/env'\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOnOff } from '../../utils/events'\nimport { isFunction } from '../../utils/inspect'\n\n// --- Constants ---\n\nconst PROP = '__BV_hover_handler__'\nconst MOUSEENTER = 'mouseenter'\nconst MOUSELEAVE = 'mouseleave'\n\n// --- Utility methods ---\n\nconst createListener = handler => {\n const listener = evt => {\n handler(evt.type === MOUSEENTER, evt)\n }\n listener.fn = handler\n return listener\n}\n\nconst updateListeners = (on, el, listener) => {\n eventOnOff(on, el, MOUSEENTER, listener, EVENT_OPTIONS_NO_CAPTURE)\n eventOnOff(on, el, MOUSELEAVE, listener, EVENT_OPTIONS_NO_CAPTURE)\n}\n\n// --- Directive bind/unbind/update handler ---\n\nconst directive = (el, { value: handler = null }) => {\n if (isBrowser) {\n const listener = el[PROP]\n const hasListener = isFunction(listener)\n const handlerChanged = !(hasListener && listener.fn === handler)\n if (hasListener && handlerChanged) {\n updateListeners(false, el, listener)\n delete el[PROP]\n }\n if (isFunction(handler) && handlerChanged) {\n el[PROP] = createListener(handler)\n updateListeners(true, el, el[PROP])\n }\n }\n}\n\n// VBHover directive\n\nexport const VBHover = {\n bind: directive,\n componentUpdated: directive,\n unbind(el) {\n directive(el, { value: null })\n }\n}\n","import Vue from '../../utils/vue'\nimport identity from '../../utils/identity'\nimport { getComponentConfig } from '../../utils/config'\nimport { createDate, formatYMD, parseYMD } from '../../utils/date'\nimport dropdownMixin from '../../mixins/dropdown'\nimport idMixin from '../../mixins/id'\nimport { BButton } from '../button/button'\nimport { BCalendar } from '../calendar/calendar'\nimport { BIconCalendar, BIconCalendarFill } from '../../icons/icons'\nimport { VBHover } from '../../directives/hover/hover'\n\nconst NAME = 'BFormDatepicker'\n\n// Fallback to BCalendar prop if no value found\nconst getConfigFallback = prop => {\n return getComponentConfig(NAME, prop) || getComponentConfig('BCalendar', prop)\n}\n\n// We create our props as a mixin so that we can control\n// where they appear in the props listing reference section\nconst propsMixin = {\n props: {\n value: {\n type: [String, Date],\n default: null\n },\n valueAsDate: {\n type: Boolean,\n default: false\n },\n resetValue: {\n type: [String, Date],\n default: ''\n },\n placeholder: {\n type: String,\n // Defaults to `labelNoDateSelected` from calendar context\n default: null\n },\n size: {\n type: String,\n default: null\n },\n min: {\n type: [String, Date],\n default: null\n },\n max: {\n type: [String, Date],\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 dateDisabledFn: {\n type: Function,\n default: null\n },\n noCloseOnSelect: {\n type: Boolean,\n default: false\n },\n hideHeader: {\n type: Boolean,\n default: false\n },\n locale: {\n type: [String, Array],\n default: null\n },\n startWeekday: {\n // `0` (Sunday), `1` (Monday), ... `6` (Saturday)\n // Day of week to start calendar on\n type: [Number, String],\n default: 0\n },\n direction: {\n type: String,\n default: null\n },\n selectedVariant: {\n // Variant color to use for the selected date\n type: String,\n default: 'primary'\n },\n todayVariant: {\n // Variant color to use for today's date (defaults to `variant`)\n type: String,\n default: null\n },\n noHighlightToday: {\n // Disable highlighting today's date\n type: Boolean,\n default: false\n },\n todayButton: {\n type: Boolean,\n default: false\n },\n labelTodayButton: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelTodayButton')\n },\n todayButtonVariant: {\n type: String,\n default: 'outline-primary'\n },\n resetButton: {\n type: Boolean,\n default: false\n },\n labelResetButton: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelResetButton')\n },\n resetButtonVariant: {\n type: String,\n default: 'outline-danger'\n },\n closeButton: {\n type: Boolean,\n default: false\n },\n labelCloseButton: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelCloseButton')\n },\n closeButtonVariant: {\n type: String,\n default: 'outline-secondary'\n },\n // Labels for buttons and keyboard shortcuts\n // These pick BCalendar global config if no BFormDate global config\n labelPrevYear: {\n type: String,\n default: () => getConfigFallback('labelPrevYear')\n },\n labelPrevMonth: {\n type: String,\n default: () => getConfigFallback('labelPrevMonth')\n },\n labelCurrentMonth: {\n type: String,\n default: () => getConfigFallback('labelCurrentMonth')\n },\n labelNextMonth: {\n type: String,\n default: () => getConfigFallback('labelNextMonth')\n },\n labelNextYear: {\n type: String,\n default: () => getConfigFallback('labelNextYear')\n },\n labelToday: {\n type: String,\n default: () => getConfigFallback('labelToday')\n },\n labelSelected: {\n type: String,\n default: () => getConfigFallback('labelSelected')\n },\n labelNoDateSelected: {\n type: String,\n default: () => getConfigFallback('labelNoDateSelected')\n },\n labelCalendar: {\n type: String,\n default: () => getConfigFallback('labelCalendar')\n },\n labelNav: {\n type: String,\n default: () => getConfigFallback('labelNav')\n },\n labelHelp: {\n type: String,\n default: () => getConfigFallback('labelHelp')\n },\n // Dark mode\n dark: {\n type: Boolean,\n default: false\n }\n }\n}\n\n// --- BFormDate component ---\n\n// @vue/component\nexport const BFormDatepicker = /*#__PURE__*/ Vue.extend({\n name: NAME,\n directives: {\n BHover: VBHover\n },\n // The mixins order determines the order of appearance in the props reference section\n mixins: [idMixin, propsMixin, dropdownMixin],\n model: {\n prop: 'value',\n event: 'input'\n },\n data() {\n return {\n // We always use `YYYY-MM-DD` value internally\n localYMD: formatYMD(this.value) || '',\n // Context data from BCalendar\n localLocale: null,\n isRTL: false,\n formatedValue: '',\n activeYMD: '',\n // Flag to add focus ring to outer wrapper\n hasFocus: false,\n // If the control is hovered\n isHovered: false\n }\n },\n computed: {\n calendarYM() {\n // Returns the calendar year/month\n // Returns the `YYYY-MM` portion of the active calendar date\n return this.activeYMD.slice(0, -3)\n },\n calendarProps() {\n // TODO: Make the ID's computed props\n const idLabel = this.safeId('_value_')\n const idWrapper = this.safeId('_b-form-date_')\n return {\n // id: this.safeId('_picker_'),\n ariaControls: [idLabel, idWrapper].filter(identity).join(' ') || null,\n value: this.localYMD,\n hidden: !this.visible,\n min: this.min,\n max: this.max,\n readonly: this.readonly,\n disabled: this.disabled,\n locale: this.locale,\n startWeekday: this.startWeekday,\n direction: this.direction,\n dateDisabledFn: this.dateDisabledFn,\n selectedVariant: this.selectedVariant,\n todayVariant: this.todayVariant,\n hideHeader: this.hideHeader,\n labelPrevYear: this.labelPrevYear,\n labelPrevMonth: this.labelPrevMonth,\n labelCurrentMonth: this.labelCurrentMonth,\n labelNextMonth: this.labelNextMonth,\n labelNextYear: this.labelNextYear,\n labelToday: this.labelToday,\n labelSelected: this.labelSelected,\n labelNoDateSelected: this.labelNoDateSelected,\n labelCalendar: this.labelCalendar,\n labelNav: this.labelNav,\n labelHelp: this.labelHelp\n }\n },\n computedResetValue() {\n return parseYMD(this.resetValue) || ''\n }\n },\n watch: {\n value(newVal) {\n this.localYMD = formatYMD(newVal) || ''\n },\n localYMD(newVal) {\n this.$emit('input', this.valueAsDate ? parseYMD(newVal) || null : newVal || '')\n },\n calendarYM(newVal, oldVal) /* istanbul ignore next */ {\n // Displayed calendar month has changed\n // So possibly the calendar height has changed...\n // We need to update popper computed position\n if (newVal !== oldVal && oldVal) {\n this.updatePopper()\n }\n }\n },\n mounted() {\n this.$on('shown', () => {\n // May want to make an option to focus\n // the entire calendar (dropdown-menu) or just the date\n try {\n this.$refs.calendar.focus()\n } catch {}\n })\n },\n methods: {\n // Public methods\n focus() {\n if (!this.disabled) {\n try {\n // This assumes the toggle is an element and not a component\n this.$refs.toggle.focus()\n } catch {}\n }\n },\n blur() {\n if (!this.disabled) {\n try {\n // This assumes the toggle is an element and not a component\n this.$refs.toggle.blur()\n } catch {}\n }\n },\n // Private methods\n setAndClose(ymd) {\n this.localYMD = ymd\n // Close calendar popup, unless `noCloseOnSelect`\n if (!this.noCloseOnSelect) {\n this.$nextTick(() => {\n this.hide(true)\n })\n }\n },\n onSelected(ymd) {\n this.$nextTick(() => {\n this.setAndClose(ymd)\n })\n },\n onInput(ymd) {\n if (this.localYMD !== ymd) {\n this.localYMD = ymd\n }\n },\n onContext(ctx) {\n const { activeYMD, isRTL, locale, selectedYMD, selectedFormatted } = ctx\n this.isRTL = isRTL\n this.localLocale = locale\n this.formattedValue = selectedFormatted\n this.localYMD = selectedYMD\n this.activeYMD = activeYMD\n // Re-emit the context event\n this.$emit('context', ctx)\n },\n onTodayButton() {\n this.setAndClose(formatYMD(createDate()))\n },\n onResetButton() {\n this.setAndClose(this.computedResetValue)\n },\n onCloseButton() {\n this.hide(true)\n },\n setFocus(evt) {\n this.hasFocus = evt.type === 'focus'\n },\n handleHover(hovered) {\n this.isHovered = hovered\n }\n },\n render(h) {\n const size = this.size\n const state = this.state\n const localYMD = this.localYMD\n const disabled = this.disabled\n const readonly = this.readonly\n const idButton = this.safeId()\n const idLabel = this.safeId('_value_')\n const idMenu = this.safeId('_dialog_')\n const idWrapper = this.safeId('_b-form-date_')\n\n let $button = h('div', { attrs: { 'aria-hidden': 'true' } }, [\n this.isHovered || this.hasFocus\n ? h(BIconCalendarFill, { props: { scale: 1.25 } })\n : h(BIconCalendar, { props: { scale: 1.25 } })\n ])\n $button = h(\n 'button',\n {\n ref: 'toggle',\n staticClass: 'btn border-0 h-auto py-0',\n class: { [`btn-${size}`]: !!size },\n attrs: {\n id: idButton,\n type: 'button',\n disabled: disabled,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': this.visible ? 'true' : 'false',\n 'aria-invalid': state === false ? 'true' : null,\n 'aria-required': this.required ? 'true' : null\n },\n on: {\n mousedown: this.onMousedown,\n click: this.toggle,\n keydown: this.toggle, // Handle ENTER, SPACE and DOWN\n '!focus': this.setFocus,\n '!blur': this.setFocus\n }\n },\n [$button]\n )\n\n // Label as a \"fake\" input\n // This label will be read by screen readers when the button is focused\n const $input = h(\n 'label',\n {\n staticClass: 'form-control text-break text-wrap border-0 bg-transparent h-auto pl-1 m-0',\n class: {\n // Mute the text if showing the placeholder\n 'text-muted': !localYMD,\n [`form-control-${size}`]: !!size,\n 'is-invalid': state === false,\n 'is-valid': state === true\n },\n attrs: {\n id: idLabel,\n for: idButton,\n dir: this.isRTL ? 'rtl' : 'ltr',\n lang: this.localLocale || null,\n 'aria-invalid': state === false ? 'true' : null,\n 'aria-required': this.required ? 'true' : null\n },\n on: {\n // Disable bubbling of the click event to\n // prevent menu from closing and re-opening\n click: evt => /* istanbul ignore next */ {\n evt.stopPropagation()\n }\n }\n },\n [\n // Add the formatted value or placeholder\n localYMD ? this.formattedValue : this.placeholder || this.labelNoDateSelected,\n // Add an sr-only 'selected date' label if a date is selected\n localYMD ? h('span', { staticClass: 'sr-only' }, ` (${this.labelSelected}) `) : h()\n ]\n )\n\n // Optional footer buttons\n let $controls = []\n\n if (this.todayButton) {\n const label = this.labelTodayButton\n $controls.push(\n h(\n BButton,\n {\n props: { size: 'sm', disabled: disabled || readonly, variant: this.todayButtonVariant },\n attrs: { 'aria-label': label || null },\n on: { click: this.onTodayButton }\n },\n label\n )\n )\n }\n\n if (this.resetButton) {\n const label = this.labelResetButton\n $controls.push(\n h(\n BButton,\n {\n props: { size: 'sm', disabled: disabled || readonly, variant: this.resetButtonVariant },\n attrs: { 'aria-label': label || null },\n on: { click: this.onResetButton }\n },\n label\n )\n )\n }\n\n if (this.closeButton) {\n const label = this.labelCloseButton\n $controls.push(\n h(\n BButton,\n {\n props: { size: 'sm', disabled: this.disabled, variant: this.closeButtonVariant },\n attrs: { 'aria-label': label || null },\n on: { click: this.onCloseButton }\n },\n label\n )\n )\n }\n\n if ($controls.length > 0) {\n $controls = [\n h(\n 'div',\n {\n staticClass: 'b-form-date-controls d-flex flex-wrap',\n class: {\n 'justify-content-between': $controls.length > 1,\n 'justify-content-end': $controls.length < 2\n }\n },\n $controls\n )\n ]\n }\n\n const $calendar = h(\n BCalendar,\n {\n key: 'calendar',\n ref: 'calendar',\n staticClass: 'b-form-date-calendar',\n props: this.calendarProps,\n on: {\n selected: this.onSelected,\n input: this.onInput,\n context: this.onContext\n }\n },\n $controls\n )\n\n const $menu = h(\n 'div',\n {\n ref: 'menu',\n staticClass: 'dropdown-menu p-2',\n class: {\n show: this.visible,\n 'dropdown-menu-right': this.right,\n 'bg-dark': this.dark,\n 'text-light': this.dark\n },\n attrs: {\n id: idMenu,\n role: 'dialog',\n 'aria-modal': 'false',\n 'aria-labelledby': idLabel\n },\n on: {\n keydown: this.onKeydown // Handle ESC\n }\n },\n [$calendar]\n )\n\n let $hidden = h()\n if (this.name && !disabled) {\n $hidden = h('input', {\n attrs: {\n type: 'hidden',\n name: this.name,\n form: this.form,\n value: localYMD || ''\n }\n })\n }\n\n return h(\n 'div',\n {\n staticClass: 'b-form-datepicker form-control dropdown h-auto p-0 d-flex',\n class: [\n this.directionClass,\n {\n show: this.visible,\n focus: this.hasFocus,\n [`form-control-${size}`]: !!size,\n 'is-invalid': state === false,\n 'is-valid': state === true\n }\n ],\n attrs: {\n id: idWrapper,\n role: 'group',\n 'aria-disabled': disabled,\n 'aria-readonly': readonly && !disabled,\n 'aria-labelledby': idLabel,\n 'aria-invalid': state === false ? 'true' : null,\n 'aria-required': this.required ? 'true' : null,\n // We don't want the flex order to change here\n // So we always use 'ltr'\n dir: 'ltr'\n },\n directives: [{ name: 'b-hover', value: this.handleHover }]\n },\n [$button, $hidden, $menu, $input]\n )\n }\n})\n","import { BFormDatepicker } from './form-datepicker'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormDatepickerPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormDatepicker,\n BDatepicker: BFormDatepicker\n }\n})\n\nexport { FormDatepickerPlugin, BFormDatepicker }\n","// @vue/component\nexport default {\n props: {\n plain: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n custom() {\n return !this.plain\n }\n }\n}\n","import 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'\n\nconst NAME = 'BFormFile'\n\nconst VALUE_EMPTY_DEPRECATED_MSG =\n 'Setting \"value\"/\"v-model\" to an empty string for reset is deprecated. Set to \"null\" instead.'\n\n// @vue/component\nexport const 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: () => getComponentConfig('BFormControl', 'size')\n },\n value: {\n type: [File, Array],\n default: null,\n validator: val => {\n /* istanbul ignore next */\n if (val === '') {\n warn(VALUE_EMPTY_DEPRECATED_MSG, NAME)\n return true\n }\n return (\n isUndefinedOrNull(val) ||\n isFile(val) ||\n (isArray(val) && (val.length === 0 || val.every(isFile)))\n )\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: () => getComponentConfig(NAME, 'placeholder')\n },\n browseText: {\n type: String,\n default: () => getComponentConfig(NAME, 'browseText')\n },\n dropPlaceholder: {\n type: String,\n default: () => getComponentConfig(NAME, 'dropPlaceholder')\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() {\n return {\n selectedFile: null,\n dragging: false,\n hasFocus: false\n }\n },\n computed: {\n selectLabel() {\n // Draging active\n if (this.dragging && this.dropPlaceholder) {\n return this.dropPlaceholder\n }\n\n // No file chosen\n if (!this.selectedFile || this.selectedFile.length === 0) {\n return this.placeholder\n }\n\n // Convert selectedFile to an array (if not already one)\n const 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 [\n this.normalizeSlot('file-name', {\n files: files,\n names: files.map(f => f.name)\n })\n ]\n } else {\n // Use the user supplied formatter, or the built in one.\n return isFunction(this.fileNameFormatter)\n ? toString(this.fileNameFormatter(files))\n : files.map(file => file.name).join(', ')\n }\n }\n },\n watch: {\n 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 (\n newVal === oldVal ||\n (isArray(newVal) &&\n isArray(oldVal) &&\n newVal.length === oldVal.length &&\n newVal.every((v, i) => v === oldVal[i]))\n ) {\n return\n }\n if (!newVal && this.multiple) {\n this.$emit('input', [])\n } else {\n this.$emit('input', newVal)\n }\n },\n value(newVal) {\n if (!newVal || (isArray(newVal) && newVal.length === 0)) {\n this.reset()\n }\n }\n },\n methods: {\n 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() {\n try {\n // Wrapped in try in case IE 11 craps out\n this.$refs.input.value = ''\n } catch (e) {}\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 this.$refs.input.type = ''\n this.$refs.input.type = 'file'\n this.selectedFile = this.multiple ? [] : null\n },\n onFileChange(evt) {\n // Always emit original event\n this.$emit('change', evt)\n // Check if special `items` prop is available on event (drop mode)\n // Can be disabled by setting no-traverse\n const items = evt.dataTransfer && evt.dataTransfer.items\n /* istanbul ignore next: not supported in JSDOM */\n if (items && !this.noTraverse) {\n const queue = []\n for (let i = 0; i < items.length; i++) {\n const item = items[i].webkitGetAsEntry()\n if (item) {\n queue.push(this.traverseFileTree(item))\n }\n }\n Promise.all(queue).then(filesArr => {\n this.setFiles(arrayFrom(filesArr))\n })\n return\n }\n // Normal handling\n this.setFiles(evt.target.files || evt.dataTransfer.files)\n },\n setFiles(files = []) {\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 const filesArray = []\n for (let i = 0; i < files.length; i++) {\n filesArray.push(files[i])\n }\n // Return file(s) as array\n this.selectedFile = filesArray\n } else {\n // Return single file object\n this.selectedFile = files[0] || null\n }\n },\n onReset() {\n // Triggered when the parent form (if any) is reset\n this.selectedFile = this.multiple ? [] : null\n },\n onDragover(evt) /* istanbul ignore next: difficult to test in JSDOM */ {\n evt.preventDefault()\n evt.stopPropagation()\n if (this.noDrop || !this.custom) {\n return\n }\n this.dragging = true\n evt.dataTransfer.dropEffect = 'copy'\n },\n onDragleave(evt) /* istanbul ignore next: difficult to test in JSDOM */ {\n evt.preventDefault()\n evt.stopPropagation()\n this.dragging = false\n },\n onDrop(evt) /* istanbul ignore next: difficult to test in JSDOM */ {\n evt.preventDefault()\n evt.stopPropagation()\n if (this.noDrop) {\n return\n }\n this.dragging = false\n if (evt.dataTransfer.files && evt.dataTransfer.files.length > 0) {\n this.onFileChange(evt)\n }\n },\n traverseFileTree(item, path) /* istanbul ignore next: not supported in JSDOM */ {\n // Based on http://stackoverflow.com/questions/3590058\n return new Promise(resolve => {\n path = path || ''\n if (item.isFile) {\n // Get file\n item.file(file => {\n file.$path = path // Inject $path to file obj\n resolve(file)\n })\n } else if (item.isDirectory) {\n // Get folder contents\n item.createReader().readEntries(entries => {\n const queue = []\n for (let i = 0; i < entries.length; i++) {\n queue.push(this.traverseFileTree(entries[i], path + item.name + '/'))\n }\n Promise.all(queue).then(filesArr => {\n resolve(arrayFrom(filesArr))\n })\n })\n }\n })\n }\n },\n render(h) {\n // Form Input\n const input = h('input', {\n ref: 'input',\n class: [\n {\n 'form-control-file': this.plain,\n 'custom-file-input': this.custom,\n focus: this.custom && this.hasFocus\n },\n this.stateClass\n ],\n attrs: {\n ...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 }\n\n // Overlay Labels\n const label = h(\n 'label',\n {\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 },\n this.selectLabel\n )\n\n // Return rendered custom file input\n return h(\n 'div',\n {\n staticClass: 'custom-file b-form-file',\n class: [\n this.stateClass,\n {\n [`b-custom-control-${this.size}`]: this.size\n }\n ],\n attrs: { id: this.safeId('_BV_file_outer_') },\n on: {\n dragover: this.onDragover,\n dragleave: this.onDragleave,\n drop: this.onDrop\n }\n },\n [input, label]\n )\n }\n})\n","import { BFormFile } from './form-file'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormFilePlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormFile,\n BFile: BFormFile\n }\n})\n\nexport { FormFilePlugin, BFormFile }\n","import { upperFirst } from './string'\n\n/**\n * Suffix can be a falsey value so nothing is appended to string.\n * (helps when looping over props & some shouldn't change)\n * Use data last parameters to allow for currying.\n * @param {string} suffix\n * @param {string} str\n */\nconst suffixPropName = (suffix, str) => str + (suffix ? upperFirst(suffix) : '')\n\nexport default suffixPropName\n","import { 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 { isUndefinedOrNull } from '../../utils/inspect'\nimport { assign, create, keys } from '../../utils/object'\nimport { lowerCase } from '../../utils/string'\n\nconst RX_COL_CLASS = /^col-/\n\n// Generates a prop object with a type of `[Boolean, String, Number]`\nconst boolStrNum = () => ({\n type: [Boolean, String, Number],\n default: false\n})\n\n// Generates a prop object with a type of `[String, Number]`\nconst strNum = () => ({\n type: [String, Number],\n default: null\n})\n\n// Compute a breakpoint class name\nconst computeBreakpoint = (type, breakpoint, val) => {\n let className = type\n if (isUndefinedOrNull(val) || val === false) {\n return undefined\n }\n if (breakpoint) {\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert <b-col sm></b-col> to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return lowerCase(className)\n }\n // .order-md-6\n className += `-${val}`\n return lowerCase(className)\n}\n\n// Memoized function for better performance on generating class names\nconst computeBreakpointClass = memoize(computeBreakpoint)\n\n// Cached copy of the breakpoint prop names\nlet breakpointPropMap = create(null)\n\n// Lazy evaled props factory for BCol\nconst generateProps = () => {\n // Grab the breakpoints from the cached config (exclude the '' (xs) breakpoint)\n const breakpoints = getBreakpointsUpCached().filter(identity)\n\n // Supports classes like: .col-sm, .col-md-6, .col-lg-auto\n const breakpointCol = breakpoints.reduce((propMap, breakpoint) => {\n if (breakpoint) {\n // We filter out the '' breakpoint (xs), as making a prop name ''\n // would not work. The `cols` prop is used for `xs`\n propMap[breakpoint] = boolStrNum()\n }\n return propMap\n }, create(null))\n\n // Supports classes like: .offset-md-1, .offset-lg-12\n const breakpointOffset = breakpoints.reduce((propMap, breakpoint) => {\n propMap[suffixPropName(breakpoint, 'offset')] = strNum()\n return propMap\n }, create(null))\n\n // Supports classes like: .order-md-1, .order-lg-12\n const breakpointOrder = breakpoints.reduce((propMap, breakpoint) => {\n propMap[suffixPropName(breakpoint, 'order')] = strNum()\n return propMap\n }, create(null))\n\n // For loop doesn't need to check hasOwnProperty\n // when using an object created from null\n breakpointPropMap = assign(create(null), {\n col: keys(breakpointCol),\n offset: keys(breakpointOffset),\n order: keys(breakpointOrder)\n })\n\n // Return the generated props\n return {\n // Generic flexbox .col (xs)\n col: {\n type: Boolean,\n default: false\n },\n // .col-[1-12]|auto (xs)\n cols: strNum(),\n // Breakpoint Specific props\n ...breakpointCol,\n offset: strNum(),\n ...breakpointOffset,\n order: strNum(),\n ...breakpointOrder,\n // Flex alignment\n alignSelf: {\n type: String,\n default: null,\n validator: str =>\n arrayIncludes(['auto', 'start', 'end', 'center', 'baseline', 'stretch'], str)\n },\n tag: {\n type: String,\n default: 'div'\n }\n }\n}\n\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\nexport const BCol = {\n name: 'BCol',\n functional: true,\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 // eslint-disable-next-line no-return-assign\n return (this.props = generateProps())\n },\n render(h, { props, data, children }) {\n const classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n for (const type in breakpointPropMap) {\n // Returns colSm, offset, offsetSm, orderMd, etc.\n const keys = breakpointPropMap[type]\n for (let i = 0; i < keys.length; i++) {\n // computeBreakpoint(col, colSm => Sm, value=[String, Number, Boolean])\n const c = computeBreakpointClass(type, keys[i].replace(type, ''), props[keys[i]])\n // If a class is returned, push it onto the array.\n if (c) {\n classList.push(c)\n }\n }\n }\n\n const hasColClasses = classList.some(className => RX_COL_CLASS.test(className))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: props.col || (!hasColClasses && !props.cols),\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf\n })\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n }\n}\n","// Utils\nimport memoize from '../../utils/memoize'\nimport { arrayIncludes } from '../../utils/array'\nimport { getBreakpointsUpCached } from '../../utils/config'\nimport { select, selectAll, isVisible, setAttr, removeAttr, getAttr } from '../../utils/dom'\nimport { isBrowser } from '../../utils/env'\nimport { isBoolean } from '../../utils/inspect'\nimport { keys, create } from '../../utils/object'\nimport { upperFirst } from '../../utils/string'\n// Mixins\nimport formStateMixin from '../../mixins/form-state'\nimport idMixin from '../../mixins/id'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n// Sub components\nimport { BCol } from '../layout/col'\nimport { BFormRow } from '../layout/form-row'\nimport { BFormText } from '../form/form-text'\nimport { BFormInvalidFeedback } from '../form/form-invalid-feedback'\nimport { BFormValidFeedback } from '../form/form-valid-feedback'\n\n// Component name\nconst NAME = 'BFormGroup'\n\n// Selector for finding first input in the form-group\nconst SELECTOR = 'input:not([disabled]),textarea:not([disabled]),select:not([disabled])'\n\n// Render helper functions (here rather than polluting the instance with more methods)\nconst renderInvalidFeedback = (h, ctx) => {\n const content = ctx.normalizeSlot('invalid-feedback') || ctx.invalidFeedback\n let invalidFeedback = h()\n if (content) {\n invalidFeedback = h(\n BFormInvalidFeedback,\n {\n props: {\n id: ctx.invalidFeedbackId,\n // If state is explicitly false, always show the feedback\n state: ctx.computedState,\n tooltip: ctx.tooltip,\n ariaLive: ctx.feedbackAriaLive,\n role: ctx.feedbackAriaLive ? 'alert' : null\n },\n attrs: { tabindex: content ? '-1' : null }\n },\n [content]\n )\n }\n return invalidFeedback\n}\n\nconst renderValidFeedback = (h, ctx) => {\n const content = ctx.normalizeSlot('valid-feedback') || ctx.validFeedback\n let validFeedback = h()\n if (content) {\n validFeedback = h(\n BFormValidFeedback,\n {\n props: {\n id: ctx.validFeedbackId,\n // If state is explicitly true, always show the feedback\n state: ctx.computedState,\n tooltip: ctx.tooltip,\n ariaLive: ctx.feedbackAriaLive,\n role: ctx.feedbackAriaLive ? 'alert' : null\n },\n attrs: { tabindex: content ? '-1' : null }\n },\n [content]\n )\n }\n return validFeedback\n}\n\nconst renderHelpText = (h, ctx) => {\n // Form help text (description)\n const content = ctx.normalizeSlot('description') || ctx.description\n let description = h()\n if (content) {\n description = h(\n BFormText,\n {\n attrs: {\n id: ctx.descriptionId,\n tabindex: content ? '-1' : null\n }\n },\n [content]\n )\n }\n return description\n}\n\nconst renderLabel = (h, ctx) => {\n // Render label/legend inside b-col if necessary\n const content = ctx.normalizeSlot('label') || ctx.label\n const labelFor = ctx.labelFor\n const isLegend = !labelFor\n const isHorizontal = ctx.isHorizontal\n const labelTag = isLegend ? 'legend' : 'label'\n if (!content && !isHorizontal) {\n return h()\n } else if (ctx.labelSrOnly) {\n let label = h()\n if (content) {\n label = h(\n labelTag,\n {\n class: 'sr-only',\n attrs: { id: ctx.labelId, for: labelFor || null }\n },\n [content]\n )\n }\n return h(isHorizontal ? BCol : 'div', { props: isHorizontal ? ctx.labelColProps : {} }, [label])\n } else {\n return h(\n isHorizontal ? BCol : labelTag,\n {\n on: isLegend ? { click: ctx.legendClick } : {},\n props: isHorizontal ? { tag: labelTag, ...ctx.labelColProps } : {},\n attrs: {\n id: ctx.labelId,\n for: labelFor || null,\n // We add a tab index to legend so that screen readers\n // will properly read the aria-labelledby in IE.\n tabindex: isLegend ? '-1' : null\n },\n class: [\n // Hide the focus ring on the legend\n isLegend ? 'bv-no-focus-ring' : '',\n // When horizontal or if a legend is rendered, add col-form-label\n // for correct sizing as Bootstrap has inconsistent font styling\n // for legend in non-horizontal form-groups.\n // See: https://github.com/twbs/bootstrap/issues/27805\n isHorizontal || isLegend ? 'col-form-label' : '',\n // Emulate label padding top of 0 on legend when not horizontal\n !isHorizontal && isLegend ? 'pt-0' : '',\n // If not horizontal and not a legend, we add d-block to label\n // so that label-align works\n !isHorizontal && !isLegend ? 'd-block' : '',\n ctx.labelSize ? `col-form-label-${ctx.labelSize}` : '',\n ctx.labelAlignClasses,\n ctx.labelClass\n ]\n },\n [content]\n )\n }\n}\n\n// -- BFormGroup Prop factory -- used for lazy generation of props\n\n// Memoize this function to return cached values to\n// save time in computed functions\nconst makePropName = memoize((breakpoint = '', prefix) => {\n return `${prefix}${upperFirst(breakpoint)}`\n})\n\n// BFormGroup prop generator for lazy generation of props\nconst generateProps = () => {\n const BREAKPOINTS = getBreakpointsUpCached()\n\n // Generate the labelCol breakpoint props\n const bpLabelColProps = BREAKPOINTS.reduce((props, breakpoint) => {\n // i.e. label-cols, label-cols-sm, label-cols-md, ...\n props[makePropName(breakpoint, 'labelCols')] = {\n type: [Number, String, Boolean],\n default: breakpoint ? false : null\n }\n return props\n }, create(null))\n\n // Generate the labelAlign breakpoint props\n const bpLabelAlignProps = BREAKPOINTS.reduce((props, breakpoint) => {\n // label-align, label-align-sm, label-align-md, ...\n props[makePropName(breakpoint, 'labelAlign')] = {\n type: String, // left, right, center\n default: null\n }\n return props\n }, create(null))\n\n return {\n label: {\n type: String,\n default: null\n },\n labelFor: {\n type: String,\n default: null\n },\n labelSize: {\n type: String,\n default: null\n },\n labelSrOnly: {\n type: Boolean,\n default: false\n },\n // label-cols prop and all label-cols-{bp} props\n ...bpLabelColProps,\n // label-align prop and all label-align-{bp} props\n ...bpLabelAlignProps,\n labelClass: {\n type: [String, Array, Object],\n default: null\n },\n description: {\n type: String,\n default: null\n },\n invalidFeedback: {\n type: String,\n default: null\n },\n validFeedback: {\n type: String,\n default: null\n },\n tooltip: {\n // Enable tooltip style feedback\n type: Boolean,\n default: false\n },\n feedbackAriaLive: {\n type: String,\n default: 'assertive'\n },\n validated: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n }\n }\n}\n\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\nexport const BFormGroup = {\n name: NAME,\n mixins: [idMixin, formStateMixin, normalizeSlotMixin],\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 // eslint-disable-next-line no-return-assign\n return (this.props = generateProps())\n },\n computed: {\n labelColProps() {\n const props = {}\n getBreakpointsUpCached().forEach(breakpoint => {\n // Grab the value if the label column breakpoint prop\n let propVal = this[makePropName(breakpoint, 'labelCols')]\n // Handle case where the prop's value is an empty string,\n // which represents true\n propVal = propVal === '' ? true : propVal || false\n if (!isBoolean(propVal) && propVal !== 'auto') {\n // Convert to column size to number\n propVal = parseInt(propVal, 10) || 0\n // Ensure column size is greater than 0\n propVal = propVal > 0 ? propVal : false\n }\n if (propVal) {\n // Add the prop to the list of props to give to b-col\n // If breakpoint is '' (labelCols=true), then we use the\n // col prop to make equal width at xs\n const bColPropName = breakpoint || (isBoolean(propVal) ? 'col' : 'cols')\n // Add it to the props\n props[bColPropName] = propVal\n }\n })\n return props\n },\n labelAlignClasses() {\n const classes = []\n getBreakpointsUpCached().forEach(breakpoint => {\n // Assemble the label column breakpoint align classes\n const propVal = this[makePropName(breakpoint, 'labelAlign')] || null\n if (propVal) {\n const className = breakpoint ? `text-${breakpoint}-${propVal}` : `text-${propVal}`\n classes.push(className)\n }\n })\n return classes\n },\n isHorizontal() {\n // Determine if the resultant form-group will be rendered\n // horizontal (meaning it has label-col breakpoints)\n return keys(this.labelColProps).length > 0\n },\n labelId() {\n return this.hasNormalizedSlot('label') || this.label ? this.safeId('_BV_label_') : null\n },\n descriptionId() {\n return this.hasNormalizedSlot('description') || this.description\n ? this.safeId('_BV_description_')\n : null\n },\n hasInvalidFeedback() {\n // Used for computing aria-describedby\n return (\n this.computedState === false &&\n (this.hasNormalizedSlot('invalid-feedback') || this.invalidFeedback)\n )\n },\n invalidFeedbackId() {\n return this.hasInvalidFeedback ? this.safeId('_BV_feedback_invalid_') : null\n },\n hasValidFeedback() {\n // Used for computing aria-describedby\n return (\n this.computedState === true &&\n (this.hasNormalizedSlot('valid-feedback') || this.validFeedback)\n )\n },\n validFeedbackId() {\n return this.hasValidFeedback ? this.safeId('_BV_feedback_valid_') : null\n },\n describedByIds() {\n // Screen readers will read out any content linked to by aria-describedby\n // even if the content is hidden with `display: none;`, hence we only include\n // feedback IDs if the form-group's state is explicitly valid or invalid.\n return (\n [this.descriptionId, this.invalidFeedbackId, this.validFeedbackId]\n .filter(Boolean)\n .join(' ') || null\n )\n }\n },\n watch: {\n describedByIds(add, remove) {\n if (add !== remove) {\n this.setInputDescribedBy(add, remove)\n }\n }\n },\n mounted() {\n this.$nextTick(() => {\n // Set the aria-describedby IDs on the input specified by label-for\n // We do this in a nextTick to ensure the children have finished rendering\n this.setInputDescribedBy(this.describedByIds)\n })\n },\n methods: {\n legendClick(evt) {\n if (this.labelFor) {\n // Don't do anything if labelFor is set\n /* istanbul ignore next: clicking a label will focus the input, so no need to test */\n return\n }\n const tagName = evt.target ? evt.target.tagName : ''\n if (/^(input|select|textarea|label|button|a)$/i.test(tagName)) {\n // If clicked an interactive element inside legend,\n // we just let the default happen\n /* istanbul ignore next */\n return\n }\n const inputs = selectAll(SELECTOR, this.$refs.content).filter(isVisible)\n if (inputs && inputs.length === 1 && inputs[0].focus) {\n // if only a single input, focus it, emulating label behaviour\n try {\n inputs[0].focus()\n } catch {}\n }\n },\n setInputDescribedBy(add, remove) {\n // Sets the `aria-describedby` attribute on the input if label-for is set.\n // Optionally accepts a string of IDs to remove as the second parameter.\n // Preserves any aria-describedby value(s) user may have on input.\n if (this.labelFor && isBrowser) {\n const input = select(`#${this.labelFor}`, this.$refs.content)\n if (input) {\n const adb = 'aria-describedby'\n let ids = (getAttr(input, adb) || '').split(/\\s+/)\n add = (add || '').split(/\\s+/)\n remove = (remove || '').split(/\\s+/)\n // Update ID list, preserving any original IDs\n // and ensuring the ID's are unique\n ids = ids\n .filter(id => !arrayIncludes(remove, id))\n .concat(add)\n .filter(Boolean)\n ids = keys(ids.reduce((memo, id) => ({ ...memo, [id]: true }), {}))\n .join(' ')\n .trim()\n if (ids) {\n setAttr(input, adb, ids)\n } else {\n // No IDs, so remove the attribute\n removeAttr(input, adb)\n }\n }\n }\n }\n },\n render(h) {\n const isFieldset = !this.labelFor\n const isHorizontal = this.isHorizontal\n // Generate the label\n const label = renderLabel(h, this)\n // Generate the content\n const content = h(\n isHorizontal ? BCol : 'div',\n {\n ref: 'content',\n // Hide focus ring\n staticClass: 'bv-no-focus-ring',\n attrs: {\n tabindex: isFieldset ? '-1' : null,\n role: isFieldset ? 'group' : null\n }\n },\n [\n this.normalizeSlot('default') || h(),\n renderInvalidFeedback(h, this),\n renderValidFeedback(h, this),\n renderHelpText(h, this)\n ]\n )\n // Create the form-group\n const data = {\n staticClass: 'form-group',\n class: [this.validated ? 'was-validated' : null, this.stateClass],\n attrs: {\n id: this.safeId(),\n disabled: isFieldset ? this.disabled : null,\n role: isFieldset ? null : 'group',\n 'aria-invalid': this.computedState === false ? 'true' : null,\n // Only apply aria-labelledby if we are a horizontal fieldset\n // as the legend is no longer a direct child of fieldset\n 'aria-labelledby': isFieldset && isHorizontal ? this.labelId : null,\n // Only apply aria-describedby IDs if we are a fieldset\n // as the input will have the IDs when not a fieldset\n 'aria-describedby': isFieldset ? this.describedByIds : null\n }\n }\n // Return it wrapped in a form-group\n // Note: Fieldsets do not support adding `row` or `form-row` directly\n // to them due to browser specific render issues, so we move the `form-row`\n // to an inner wrapper div when horizontal and using a fieldset\n return h(\n isFieldset ? 'fieldset' : isHorizontal ? BFormRow : 'div',\n data,\n isHorizontal && isFieldset ? [h(BFormRow, [label, content])] : [label, content]\n )\n }\n}\n","import { BFormGroup } from './form-group'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormGroupPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormGroup,\n BFormFieldset: BFormGroup\n }\n})\n\nexport { FormGroupPlugin, BFormGroup }\n","import { isFunction } from '../utils/inspect'\nimport { toInteger, toFloat } from '../utils/number'\nimport { toString } from '../utils/string'\n\n// @vue/component\nexport default {\n model: {\n prop: 'value',\n event: 'update'\n },\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n },\n plaintext: {\n type: Boolean,\n default: false\n },\n autocomplete: {\n type: String,\n default: null\n },\n placeholder: {\n type: String,\n default: null\n },\n formatter: {\n type: Function,\n default: null\n },\n lazyFormatter: {\n type: Boolean,\n default: false\n },\n trim: {\n type: Boolean,\n default: false\n },\n number: {\n type: Boolean,\n default: false\n },\n lazy: {\n // Only update the `v-model` on blur/change events\n type: Boolean,\n default: false\n },\n debounce: {\n // Debounce timout (in ms). Not applicable with `lazy` prop\n type: [Number, String],\n default: 0\n }\n },\n data() {\n return {\n localValue: toString(this.value),\n vModelValue: this.value\n }\n },\n computed: {\n computedClass() {\n return [\n {\n // Range input needs class `custom-range`\n 'custom-range': this.type === 'range',\n // `plaintext` not supported by `type=\"range\"` or `type=\"color\"`\n 'form-control-plaintext':\n this.plaintext && this.type !== 'range' && this.type !== 'color',\n // `form-control` not used by `type=\"range\"` or `plaintext`\n // Always used by `type=\"color\"`\n 'form-control': (!this.plaintext && this.type !== 'range') || this.type === 'color'\n },\n this.sizeFormClass,\n this.stateClass\n ]\n },\n computedAriaInvalid() {\n if (!this.ariaInvalid || this.ariaInvalid === 'false') {\n // `this.ariaInvalid` is `null` or `false` or 'false'\n return this.computedState === false ? 'true' : null\n }\n if (this.ariaInvalid === true) {\n // User wants explicit `:aria-invalid=\"true\"`\n return 'true'\n }\n // Most likely a string value (which could be the string 'true')\n return this.ariaInvalid\n },\n computedDebounce() {\n // Ensure we have a positive number equal to or greater than 0\n return Math.max(toInteger(this.debounce) || 0, 0)\n },\n hasFormatter() {\n return isFunction(this.formatter)\n }\n },\n watch: {\n value(newVal) {\n const stringifyValue = toString(newVal)\n if (stringifyValue !== this.localValue && newVal !== this.vModelValue) {\n // Clear any pending debounce timeout, as we are overwriting the user input\n this.clearDebounce()\n // Update the local values\n this.localValue = stringifyValue\n this.vModelValue = newVal\n }\n }\n },\n mounted() {\n // Create non-reactive property and set up destroy handler\n this.$_inputDebounceTimer = null\n this.$on('hook:beforeDestroy', this.clearDebounce)\n // Preset the internal state\n const value = this.value\n const stringifyValue = toString(value)\n /* istanbul ignore next */\n if (stringifyValue !== this.localValue && value !== this.vModelValue) {\n this.localValue = stringifyValue\n this.vModelValue = value\n }\n },\n methods: {\n clearDebounce() {\n clearTimeout(this.$_inputDebounceTimer)\n this.$_inputDebounceTimer = null\n },\n formatValue(value, evt, force = false) {\n value = toString(value)\n if (this.hasFormatter && (!this.lazyFormatter || force)) {\n value = this.formatter(value, evt)\n }\n return value\n },\n modifyValue(value) {\n // Emulate `.trim` modifier behaviour\n if (this.trim) {\n value = value.trim()\n }\n // Emulate `.number` modifier behaviour\n if (this.number) {\n const number = toFloat(value)\n value = isNaN(number) ? value : number\n }\n return value\n },\n updateValue(value, force = false) {\n const lazy = this.lazy\n if (lazy && !force) {\n return\n }\n value = this.modifyValue(value)\n if (value !== this.vModelValue) {\n this.clearDebounce()\n const doUpdate = () => {\n this.vModelValue = value\n this.$emit('update', value)\n }\n const debounce = this.computedDebounce\n // Only debounce the value update when a value greater than `0`\n // is set and we are not in lazy mode or this is a forced update\n if (debounce > 0 && !lazy && !force) {\n this.$_inputDebounceTimer = setTimeout(doUpdate, debounce)\n } else {\n // Immediately update the v-model\n doUpdate()\n }\n } else if (this.hasFormatter) {\n // When the `vModelValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one\n // Usually caused by browser autocomplete and how it triggers the\n // change or input event, or depending on the formatter function\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n /* istanbul ignore next: hard to test */\n const $input = this.$refs.input\n /* istanbul ignore if: hard to test out of sync value */\n if ($input && value !== $input.value) {\n $input.value = value\n }\n }\n },\n onInput(evt) {\n // `evt.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n // TODO: Is this needed now with the latest Vue?\n /* istanbul ignore if: hard to test composition events */\n if (evt.target.composing) {\n return\n }\n const value = evt.target.value\n const formattedValue = this.formatValue(value, evt)\n // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n /* istanbul ignore next */\n if (formattedValue === false || evt.defaultPrevented) {\n evt.preventDefault()\n return\n }\n this.localValue = formattedValue\n this.updateValue(formattedValue)\n this.$emit('input', formattedValue)\n },\n onChange(evt) {\n const value = evt.target.value\n const formattedValue = this.formatValue(value, evt)\n // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n /* istanbul ignore next */\n if (formattedValue === false || evt.defaultPrevented) {\n evt.preventDefault()\n return\n }\n this.localValue = formattedValue\n this.updateValue(formattedValue, true)\n this.$emit('change', formattedValue)\n },\n onBlur(evt) {\n // Apply the `localValue` on blur to prevent cursor jumps\n // on mobile browsers (e.g. caused by autocomplete)\n const value = evt.target.value\n const formattedValue = this.formatValue(value, evt, true)\n if (formattedValue !== false) {\n // We need to use the modified value here to apply the\n // `.trim` and `.number` modifiers properly\n this.localValue = toString(this.modifyValue(formattedValue))\n // We pass the formatted value here since the `updateValue` method\n // handles the modifiers itself\n this.updateValue(formattedValue, true)\n }\n // Emit native blur event\n this.$emit('blur', evt)\n },\n focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n this.$el.focus()\n }\n },\n blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n this.$el.blur()\n }\n }\n }\n}\n","// @vue/component\nexport default {\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n get() /* istanbul ignore next */ {\n return this.$refs.input.selectionStart\n },\n set(val) /* istanbul ignore next */ {\n this.$refs.input.selectionStart = val\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n get() /* istanbul ignore next */ {\n return this.$refs.input.selectionEnd\n },\n set(val) /* istanbul ignore next */ {\n this.$refs.input.selectionEnd = val\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n get() /* istanbul ignore next */ {\n return this.$refs.input.selectionDirection\n },\n set(val) /* istanbul ignore next */ {\n this.$refs.input.selectionDirection = val\n }\n }\n },\n methods: {\n select() /* istanbul ignore next */ {\n // For external handler that may want a select() method\n this.$refs.input.select(...arguments)\n },\n setSelectionRange() /* istanbul ignore next */ {\n // For external handler that may want a setSelectionRange(a,b,c) method\n this.$refs.input.setSelectionRange(...arguments)\n },\n setRangeText() /* istanbul ignore next */ {\n // For external handler that may want a setRangeText(a,b,c) method\n this.$refs.input.setRangeText(...arguments)\n }\n }\n}\n","// @vue/component\nexport default {\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n get() /* istanbul ignore next */ {\n return this.$refs.input.validity\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n get() /* istanbul ignore next */ {\n return this.$refs.input.validationMessage\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n get() /* istanbul ignore next */ {\n return this.$refs.input.willValidate\n }\n }\n },\n methods: {\n setCustomValidity() /* istanbul ignore next */ {\n // For external handler that may want a setCustomValidity(...) method\n return this.$refs.input.setCustomValidity(...arguments)\n },\n checkValidity() /* istanbul ignore next */ {\n // For external handler that may want a checkValidity(...) method\n return this.$refs.input.checkValidity(...arguments)\n },\n reportValidity() /* istanbul ignore next */ {\n // For external handler that may want a reportValidity(...) method\n return this.$refs.input.reportValidity(...arguments)\n }\n }\n}\n","import Vue from '../../utils/vue'\nimport { arrayIncludes } from '../../utils/array'\nimport { eventOn, eventOff, eventOnOff } from '../../utils/events'\nimport idMixin from '../../mixins/id'\nimport formMixin from '../../mixins/form'\nimport formSizeMixin from '../../mixins/form-size'\nimport formStateMixin from '../../mixins/form-state'\nimport formTextMixin from '../../mixins/form-text'\nimport formSelectionMixin from '../../mixins/form-selection'\nimport formValidityMixin from '../../mixins/form-validity'\n\n// Valid supported input types\nconst TYPES = [\n 'text',\n 'password',\n 'email',\n 'number',\n 'url',\n 'tel',\n 'search',\n 'range',\n 'color',\n 'date',\n 'time',\n 'datetime',\n 'datetime-local',\n 'month',\n 'week'\n]\n\n// @vue/component\nexport const BFormInput = /*#__PURE__*/ Vue.extend({\n name: 'BFormInput',\n mixins: [\n idMixin,\n formMixin,\n formSizeMixin,\n formStateMixin,\n formTextMixin,\n formSelectionMixin,\n formValidityMixin\n ],\n props: {\n // value prop defined in form-text mixin\n // value: { },\n type: {\n type: String,\n default: 'text',\n validator: type => arrayIncludes(TYPES, type)\n },\n noWheel: {\n // Disable mousewheel to prevent wheel from changing values (i.e. number/date).\n type: Boolean,\n default: false\n },\n min: {\n type: [String, Number],\n default: null\n },\n max: {\n type: [String, Number],\n default: null\n },\n step: {\n type: [String, Number],\n default: null\n },\n list: {\n type: String,\n default: null\n }\n },\n computed: {\n localType() {\n // We only allow certain types\n return arrayIncludes(TYPES, this.type) ? this.type : 'text'\n }\n },\n watch: {\n noWheel(newVal) {\n this.setWheelStopper(newVal)\n }\n },\n mounted() {\n this.setWheelStopper(this.noWheel)\n },\n deactivated() {\n // Turn off listeners when keep-alive component deactivated\n /* istanbul ignore next */\n this.setWheelStopper(false)\n },\n activated() {\n // Turn on listeners (if no-wheel) when keep-alive component activated\n /* istanbul ignore next */\n this.setWheelStopper(this.noWheel)\n },\n beforeDestroy() {\n /* istanbul ignore next */\n this.setWheelStopper(false)\n },\n methods: {\n setWheelStopper(on) {\n const input = this.$el\n // We use native events, so that we don't interfere with propagation\n eventOnOff(on, input, 'focus', this.onWheelFocus)\n eventOnOff(on, input, 'blur', this.onWheelBlur)\n if (!on) {\n eventOff(document, 'wheel', this.stopWheel)\n }\n },\n onWheelFocus() {\n eventOn(document, 'wheel', this.stopWheel)\n },\n onWheelBlur() {\n eventOff(document, 'wheel', this.stopWheel)\n },\n stopWheel(evt) {\n evt.preventDefault()\n this.$el.blur()\n }\n },\n render(h) {\n var self = this\n return h('input', {\n ref: 'input',\n class: self.computedClass,\n directives: [\n {\n name: 'model',\n rawName: 'v-model',\n value: self.localValue,\n expression: 'localValue'\n }\n ],\n attrs: {\n id: self.safeId(),\n name: self.name,\n form: self.form || null,\n type: self.localType,\n disabled: self.disabled,\n placeholder: self.placeholder,\n required: self.required,\n autocomplete: self.autocomplete || null,\n readonly: self.readonly || self.plaintext,\n min: self.min,\n max: self.max,\n step: self.step,\n list: self.localType !== 'password' ? self.list : null,\n 'aria-required': self.required ? 'true' : null,\n 'aria-invalid': self.computedAriaInvalid\n },\n domProps: {\n value: self.localValue\n },\n on: {\n ...self.$listeners,\n input: self.onInput,\n change: self.onChange,\n blur: self.onBlur\n }\n })\n }\n})\n","import { BFormInput } from './form-input'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormInputPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormInput,\n BInput: BFormInput\n }\n})\n\nexport { FormInputPlugin, BFormInput }\n","import Vue from '../../utils/vue'\nimport idMixin from '../../mixins/id'\nimport formMixin from '../../mixins/form'\nimport formOptionsMixin from '../../mixins/form-options'\nimport formRadioCheckGroupMixin from '../../mixins/form-radio-check-group'\nimport formSizeMixin from '../../mixins/form-size'\nimport formStateMixin from '../../mixins/form-state'\n\nexport const props = {\n checked: {\n // type: [String, Number, Boolean, Object],\n default: null\n }\n}\n\n// @vue/component\nexport const BFormRadioGroup = /*#__PURE__*/ Vue.extend({\n name: 'BFormRadioGroup',\n mixins: [\n idMixin,\n formMixin,\n formRadioCheckGroupMixin, // Includes render function\n formOptionsMixin,\n formSizeMixin,\n formStateMixin\n ],\n provide() {\n return {\n bvRadioGroup: this\n }\n },\n props,\n data() {\n return {\n localChecked: this.checked\n }\n },\n computed: {\n isRadioGroup() {\n return true\n }\n }\n})\n","import { BFormRadio } from './form-radio'\nimport { BFormRadioGroup } from './form-radio-group'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormRadioPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormRadio,\n BRadio: BFormRadio,\n BFormRadioGroup,\n BRadioGroup: BFormRadioGroup\n }\n})\n\nexport { FormRadioPlugin, BFormRadio, BFormRadioGroup }\n","import get from '../../../utils/get'\nimport { isArray, isPlainObject, isUndefined } from '../../../utils/inspect'\nimport formOptionsMixin from '../../../mixins/form-options'\n\n// @vue/component\nexport default {\n mixins: [formOptionsMixin],\n props: {\n labelField: {\n type: String,\n default: 'label'\n },\n optionsField: {\n type: String,\n default: 'options'\n }\n },\n methods: {\n normalizeOption(option, key = null) {\n // When the option is an object, normalize it\n if (isPlainObject(option)) {\n const value = get(option, this.valueField)\n const text = get(option, this.textField)\n const options = get(option, this.optionsField)\n // When it has options, create an `<optgroup>` object\n if (isArray(options)) {\n return {\n label: String(get(option, this.labelField) || text),\n options\n }\n }\n // Otherwise create an `<option>` object\n return {\n value: isUndefined(value) ? key || text : value,\n text: String(isUndefined(text) ? key : text),\n html: get(option, this.htmlField),\n disabled: Boolean(get(option, this.disabledField))\n }\n }\n // Otherwise create an `<option>` object from the given value\n return {\n value: key || option,\n text: String(option),\n disabled: false\n }\n }\n }\n}\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nconst NAME = 'BFormSelectOption'\n\nexport const props = {\n value: {\n // type: [String, Number, Boolean, Object],\n required: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n}\n\n// @vue/component\nexport const BFormSelectOption = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, children }) {\n const { value, disabled } = props\n return h(\n 'option',\n mergeData(data, {\n attrs: { disabled },\n domProps: { value }\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { htmlOrText } from '../../utils/html'\nimport formOptionsMixin from '../../mixins/form-options'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport { BFormSelectOption } from './form-select-option'\n\n// @vue/component\nconst BFormSelectOptionGroup = /*#__PURE__*/ Vue.extend({\n name: 'BFormSelectOptionGroup',\n mixins: [normalizeSlotMixin, formOptionsMixin],\n props: {\n label: {\n type: String,\n required: true\n }\n },\n render(h) {\n return h('optgroup', { attrs: { label: this.label } }, [\n this.normalizeSlot('first'),\n this.formOptions.map((option, index) =>\n h(BFormSelectOption, {\n props: { value: option.value, disabled: option.disabled },\n domProps: htmlOrText(option.html, option.text),\n key: `option_${index}_opt`\n })\n ),\n this.normalizeSlot('default')\n ])\n }\n})\n\nexport { BFormSelectOptionGroup }\n","import Vue from '../../utils/vue'\nimport { from as arrayFrom, isArray } from '../../utils/array'\nimport { htmlOrText } from '../../utils/html'\nimport idMixin from '../../mixins/id'\nimport formMixin from '../../mixins/form'\nimport formSizeMixin from '../../mixins/form-size'\nimport formStateMixin from '../../mixins/form-state'\nimport formCustomMixin from '../../mixins/form-custom'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport optionsMixin from './helpers/mixin-options'\nimport { BFormSelectOption } from './form-select-option'\nimport { BFormSelectOptionGroup } from './form-select-option-group'\n\n// @vue/component\nexport const BFormSelect = /*#__PURE__*/ Vue.extend({\n name: 'BFormSelect',\n mixins: [\n idMixin,\n normalizeSlotMixin,\n formMixin,\n formSizeMixin,\n formStateMixin,\n formCustomMixin,\n optionsMixin\n ],\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n value: {\n // type: [Object, Array, String, Number, Boolean],\n // default: undefined\n },\n multiple: {\n type: Boolean,\n default: false\n },\n selectSize: {\n // Browsers default size to 0, which shows 4 rows in most browsers in multiple mode\n // Size of 1 can bork out Firefox\n type: Number,\n default: 0\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n }\n },\n data() {\n return {\n localValue: this.value\n }\n },\n computed: {\n computedSelectSize() {\n // Custom selects with a size of zero causes the arrows to be hidden,\n // so dont render the size attribute in this case\n return !this.plain && this.selectSize === 0 ? null : this.selectSize\n },\n inputClass() {\n return [\n this.plain ? 'form-control' : 'custom-select',\n this.size && this.plain ? `form-control-${this.size}` : null,\n this.size && !this.plain ? `custom-select-${this.size}` : null,\n this.stateClass\n ]\n },\n computedAriaInvalid() {\n if (this.ariaInvalid === true || this.ariaInvalid === 'true') {\n return 'true'\n }\n return this.stateClass === 'is-invalid' ? 'true' : null\n }\n },\n watch: {\n value(newVal) {\n this.localValue = newVal\n },\n localValue() {\n this.$emit('input', this.localValue)\n }\n },\n methods: {\n focus() {\n this.$refs.input.focus()\n },\n blur() {\n this.$refs.input.blur()\n }\n },\n render(h) {\n return h(\n 'select',\n {\n ref: 'input',\n class: this.inputClass,\n directives: [\n {\n name: 'model',\n rawName: 'v-model',\n value: this.localValue,\n expression: 'localValue'\n }\n ],\n attrs: {\n id: this.safeId(),\n name: this.name,\n form: this.form || null,\n multiple: this.multiple || null,\n size: this.computedSelectSize,\n disabled: this.disabled,\n required: this.required,\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n },\n on: {\n change: evt => {\n const target = evt.target\n const selectedVal = arrayFrom(target.options)\n .filter(o => o.selected)\n .map(o => ('_value' in o ? o._value : o.value))\n this.localValue = target.multiple ? selectedVal : selectedVal[0]\n this.$nextTick(() => {\n this.$emit('change', this.localValue)\n })\n }\n }\n },\n [\n this.normalizeSlot('first'),\n this.formOptions.map((option, index) => {\n const key = `option_${index}_opt`\n const options = option.options\n return isArray(options)\n ? h(BFormSelectOptionGroup, { props: { label: option.label, options }, key })\n : h(BFormSelectOption, {\n props: { value: option.value, disabled: option.disabled },\n domProps: htmlOrText(option.html, option.text),\n key\n })\n }),\n this.normalizeSlot('default')\n ]\n )\n }\n})\n","import { BFormSelect } from './form-select'\nimport { BFormSelectOption } from './form-select-option'\nimport { BFormSelectOptionGroup } from './form-select-option-group'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormSelectPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormSelect,\n BFormSelectOption,\n BFormSelectOptionGroup,\n BSelect: BFormSelect,\n BSelectOption: BFormSelectOption,\n BSelectOptionGroup: BFormSelectOptionGroup\n }\n})\n\nexport { FormSelectPlugin, BFormSelect, BFormSelectOption, BFormSelectOptionGroup }\n","import Vue from '../../utils/vue'\nimport { arrayIncludes, concat } from '../../utils/array'\nimport { getComponentConfig } from '../../utils/config'\nimport { EVENT_OPTIONS_PASSIVE, eventOnOff } from '../../utils/events'\nimport { isFunction, isNull } from '../../utils/inspect'\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 { BIconPlus, BIconDash } from '../../icons/icons'\n\n// --- Constants ---\n\nconst NAME = 'BFormSpinbutton'\n\nconst { UP, DOWN, HOME, END, PAGEUP, PAGEDOWN } = KeyCodes\n\n// Default for spin button range and step\nconst DEFAULT_MIN = 1\nconst DEFAULT_MAX = 100\nconst DEFAULT_STEP = 1\n\n// Delay before auto-repeat in ms\nconst DEFAULT_REPEAT_DELAY = 500\n// Repeat interval in ms\nconst DEFAULT_REPEAT_INTERVAL = 100\n// Repeat rate increased after number of repeats\nconst DEFAULT_REPEAT_THRESHOLD = 10\n// Repeat speed multiplier (step multiplier, must be an integer)\nconst DEFAULT_REPEAT_MULTIPLIER = 4\n\n// --- Helper functions ---\n\nconst defaultNumber = (value, defaultValue = null) => {\n value = toFloat(value)\n return isNaN(value) ? defaultValue : value\n}\n\nconst defaultInteger = (value, defaultValue = null) => {\n value = toInteger(value)\n return isNaN(value) ? Math.abs(defaultValue) : value\n}\n\n// --- BFormSpinbutton ---\n// @vue/component\nexport const BFormSpinbutton = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [idMixin],\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\n // default: null\n },\n size: {\n type: String\n // default: null\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\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 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: () => getComponentConfig(NAME, 'labelDecrement')\n },\n labelIncrement: {\n type: String,\n default: () => getComponentConfig(NAME, 'labelIncrement')\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() {\n return {\n localValue: defaultNumber(this.value),\n hasFocus: false\n }\n },\n computed: {\n computedStep() {\n return defaultNumber(this.step, DEFAULT_STEP)\n },\n computedMin() {\n return defaultNumber(this.min, DEFAULT_MIN)\n },\n computedMax() {\n return defaultNumber(this.max, DEFAULT_MAX)\n },\n computedDelay() {\n return defaultInteger(this.repeatDelay, DEFAULT_REPEAT_DELAY) || DEFAULT_REPEAT_DELAY\n },\n computedInterval() {\n return defaultInteger(this.repeatInterval, DEFAULT_REPEAT_INTERVAL) || DEFAULT_REPEAT_INTERVAL\n },\n computedThreshold() {\n return defaultInteger(this.repeatThreshold, DEFAULT_REPEAT_THRESHOLD) || 1\n },\n computedStepMultiplier() {\n return defaultInteger(this.repeatStepMultiplier, DEFAULT_REPEAT_MULTIPLIER) || 1\n },\n computedPrecision() {\n // Quick and dirty way to get the number of decimals\n const step = this.computedStep\n return Math.floor(step) === step ? 0 : (step.toString().split('.')[1] || '').length\n },\n computedMultiplier() {\n return Math.pow(10, this.computedPrecision || 0)\n },\n valueAsFixed() {\n const value = this.localValue\n return isNull(value) ? '' : value.toFixed(this.computedPrecision)\n },\n computedLocale() {\n const locales = concat(this.locale).filter(identity)\n const nf = new Intl.NumberFormat(locales)\n return nf.resolvedOptions().locale\n },\n defaultFormatter() {\n // Returns and `Intl.NumberFormat` formatter method reference\n const precision = this.computedPrecision\n const 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 })\n // Return the format method reference\n return nf.format\n }\n },\n watch: {\n value(value) {\n value = toFloat(value) // Will be `NaN` if `value` is `null`\n this.localValue = isNaN(value) ? null : value\n },\n localValue(value) {\n this.$emit('input', value)\n },\n disabled(disabled) {\n if (disabled) {\n this.clearRepeat()\n }\n },\n readonly(readonly) {\n if (readonly) {\n this.clearRepeat()\n }\n }\n },\n created() {\n // Create non reactive properties\n this.$_autoDelayTimer = null\n this.$_autoRepeatTimer = null\n this.$_keyIsDown = false\n },\n beforeDestroy() {\n this.clearRepeat()\n },\n deactivated() /* istanbul ignore next */ {\n this.clearRepeat()\n },\n methods: {\n // --- Public methods ---\n focus() {\n if (!this.disabled) {\n try {\n this.$refs.spinner.focus()\n } catch {}\n }\n },\n blur() {\n if (!this.disabled) {\n try {\n this.$refs.spinner.blur()\n } catch {}\n }\n },\n // --- Private methods ---\n emitChange() {\n this.$emit('change', this.localValue)\n },\n 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 let value = this.localValue\n if (!this.disabled && !isNull(value)) {\n const step = this.computedStep * direction\n const min = this.computedMin\n const max = this.computedMax\n const multiplier = this.computedMultiplier\n const wrap = this.wrap\n // We ensure that the value steps like a native input\n value = Math.round((value - min) / step) * step + min + step\n // We ensure that precision is maintained (decimals)\n value = Math.round(value * multiplier) / multiplier\n // Handle if wrapping is enabled\n this.localValue =\n value > max ? (wrap ? min : max) : value < min ? (wrap ? max : min) : value\n }\n },\n onFocusBlur(evt) {\n if (!this.disabled) {\n this.hasFocus = evt.type === 'focus'\n } else {\n this.hasFocus = false\n }\n },\n stepUp(multiplier = 1) {\n const value = this.localValue\n if (isNull(value)) {\n this.localValue = this.computedMin\n } else {\n this.stepValue(+1 * multiplier)\n }\n },\n stepDown(multiplier = 1) {\n const value = this.localValue\n if (isNull(value)) {\n this.localValue = this.wrap ? this.computedMax : this.computedMin\n } else {\n this.stepValue(-1 * multiplier)\n }\n },\n onKeydown(evt) {\n const { keyCode, altKey, ctrlKey, metaKey } = evt\n /* istanbul ignore if */\n if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n return\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 if (this.$_keyIsDown) {\n // Keypress is already in progress\n return\n }\n this.resetTimers()\n if (arrayIncludes([UP, DOWN], keyCode)) {\n // The following use the custom auto-repeat handling\n this.$_keyIsDown = true\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(evt) {\n // Emit a change event when the keyup happens\n const { keyCode, altKey, ctrlKey, metaKey } = evt\n /* istanbul ignore if */\n if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n return\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(evt, stepper) {\n const { type, button } = evt || {}\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 this.resetTimers()\n // Enable body mouseup event handler\n this.setMouseup(true)\n // Step the counter initially\n stepper(1)\n const threshold = this.computedThreshold\n const multiplier = this.computedStepMultiplier\n const delay = this.computedDelay\n const interval = this.computedInterval\n // Initiate the delay/repeat interval\n this.$_autoDelayTimer = setTimeout(() => {\n let count = 0\n this.$_autoRepeatTimer = setInterval(() => {\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(evt) {\n // `<body>` listener, only enabled when mousedown starts\n const { type, button } = evt || {}\n /* istanbul ignore if */\n if (type === 'mouseup' && button) {\n // we only care about left (main === 0) mouse button click\n return\n }\n this.resetTimers()\n this.setMouseup(false)\n // Trigger the change event\n this.emitChange()\n },\n 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, EVENT_OPTIONS_PASSIVE)\n eventOnOff(on, document.body, 'touchend', this.onMouseup, EVENT_OPTIONS_PASSIVE)\n } catch {}\n },\n resetTimers() {\n clearTimeout(this.$_autoDelayTimer)\n clearInterval(this.$_autoRepeatTimer)\n },\n clearRepeat() {\n this.resetTimers()\n this.setMouseup(false)\n this.$_keyIsDown = false\n }\n },\n render(h) {\n const spinId = this.safeId()\n const value = this.localValue\n const isVertical = this.vertical\n const isInline = this.inline && !isVertical\n const isDisabled = this.disabled\n const isReadonly = this.readonly && !isDisabled\n const isRequired = this.required && !isReadonly && !isDisabled\n const state = this.state\n const size = this.size\n const hasValue = !isNull(value)\n const formatter = isFunction(this.formatterFn) ? this.formatterFn : this.defaultFormatter\n\n const makeButton = (stepper, label, IconCmp, keyRef, shortcut, btnDisabled) => {\n const $icon = h(IconCmp, {\n props: { scale: this.hasFocus ? 1.5 : 1.25 },\n attrs: { 'aria-hidden': 'true' }\n })\n const handler = evt => /* istanbul ignore next: until tests written */ {\n if (!isDisabled && !isReadonly) {\n this.handleStepRepeat(evt, stepper)\n }\n }\n return h(\n 'button',\n {\n key: keyRef || null,\n ref: keyRef,\n staticClass: 'btn btn-sm border-0 rounded-0',\n class: { 'py-0': !isVertical },\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 },\n [h('div', {}, [$icon])]\n )\n }\n // TODO: Add button disabled state when `wrap` is `false` and at value max/min\n const $increment = makeButton(this.stepUp, this.labelIncrement, BIconPlus, 'inc', 'ArrowUp')\n const $decrement = makeButton(this.stepDown, this.labelDecrement, BIconDash, 'dec', 'ArrowDown')\n\n let $hidden = h()\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 const $spin = h(\n // We use 'output' element to make this accept a `<label for=\"id\">` (Except IE)\n 'output',\n {\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: {\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 },\n [h('div', { staticClass: 'w-100' }, hasValue ? formatter(value) : this.placeholder || '')]\n )\n\n return h(\n 'div',\n {\n staticClass: 'b-form-spinbutton form-control p-0',\n class: {\n disabled: isDisabled,\n readonly: isReadonly,\n focus: this.hasFocus,\n [`form-control-${size}`]: !!size,\n 'd-inline-flex': isInline || isVertical,\n 'd-flex': !isInline && !isVertical,\n 'align-items-stretch': !isVertical,\n 'flex-column': isVertical,\n 'is-valid': state === true,\n 'is-invalid': state === false\n },\n attrs: {\n ...this.$attrs,\n role: 'group',\n lang: this.computedLocale,\n tabindex: isDisabled ? null : '-1',\n // We want to keep the order of the buttons regardless\n // of locale (flex will re-order based on rtl/ltr)\n dir: 'ltr'\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 },\n isVertical\n ? [$increment, $hidden, $spin, $decrement]\n : [$decrement, $hidden, $spin, $increment]\n )\n }\n})\n","import { BFormSpinbutton } from './form-spinbutton'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormSpinbuttonPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormSpinbutton,\n BSpinbutton: BFormSpinbutton\n }\n})\n\nexport { FormSpinbuttonPlugin, BFormSpinbutton }\n","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'\n\nconst NAME = 'BFormTag'\n\nexport const BFormTag = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [idMixin, normalizeSlotMixin],\n props: {\n variant: {\n type: String,\n default: () => getComponentConfig(NAME, 'variant')\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: () => getComponentConfig(NAME, 'removeLabel')\n },\n tag: {\n type: String,\n default: 'span'\n }\n },\n methods: {\n onDelete(evt) {\n const { type, keyCode } = evt\n if (\n !this.disabled &&\n (type === 'click' || (type === 'keydown' && keyCode === KeyCodes.DELETE))\n ) {\n this.$emit('remove')\n }\n }\n },\n render(h) {\n const tagId = this.safeId()\n const tagLabelId = this.safeId('_taglabel_')\n let $remove = h()\n if (!this.disabled) {\n $remove = h(BButtonClose, {\n staticClass: 'b-form-tag-remove ml-1',\n props: { ariaLabel: this.removeLabel },\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 const $tag = h(\n 'span',\n {\n staticClass: 'b-form-tag-content flex-grow-1 text-truncate',\n attrs: { id: tagLabelId }\n },\n this.normalizeSlot('default') || this.title || [h()]\n )\n return h(\n BBadge,\n {\n staticClass: 'b-form-tag d-inline-flex align-items-baseline mw-100',\n class: { disabled: this.disabled },\n attrs: { id: tagId, title: this.title || null, 'aria-labelledby': tagLabelId },\n props: { tag: this.tag, variant: this.variant, pill: this.pill }\n },\n [$tag, $remove]\n )\n }\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'\n\n// --- Constants ---\n\nconst NAME = 'BFormTags'\n\n// Supported input types (for built in input)\nconst TYPES = ['text', 'email', 'tel', 'url', 'number']\n\n// Pre-compiled regular expressions for performance reasons\nconst RX_SPACES = /[\\s\\uFEFF\\xA0]+/g\n\n// KeyCode constants\nconst { ENTER, BACKSPACE, DELETE } = KeyCodes\n\n// --- Utility methods ---\n\n// Escape special chars in string and replace\n// contiguous spaces with a whitespace match\nconst escapeRegExpChars = str => escapeRegExp(str).replace(RX_SPACES, '\\\\s')\n\n// Remove leading/trailing spaces from array of tags and remove duplicates\nconst cleanTags = tags => {\n return concat(tags)\n .map(tag => trim(toString(tag)))\n .filter((tag, index, arr) => tag.length > 0 && arr.indexOf(tag) === index)\n}\n\n// Processes an input/change event, normalizing string or event argument\nconst processEventValue = evt => (isString(evt) ? evt : isEvent(evt) ? evt.target.value || '' : '')\n\n// Returns a fresh empty `tagsState` object\nconst cleanTagsState = () => ({\n all: [],\n valid: [],\n invalid: [],\n duplicate: []\n})\n\n// @vue/component\nexport const 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: () => getComponentConfig(NAME, 'placeholder')\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: type => arrayIncludes(TYPES, type)\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: () => ({})\n },\n addButtonText: {\n type: String,\n default: () => getComponentConfig(NAME, 'addButtonText')\n },\n addButtonVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'addButtonVariant')\n },\n tagVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'tagVariant')\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: () => getComponentConfig(NAME, 'tagRemoveLabel')\n },\n tagRemovedLabel: {\n type: String,\n default: () => getComponentConfig(NAME, 'tagRemovedLabel')\n },\n tagValidator: {\n type: Function,\n default: null\n },\n duplicateTagText: {\n type: String,\n default: () => getComponentConfig(NAME, 'duplicateTagText')\n },\n invalidTagText: {\n type: String,\n default: () => getComponentConfig(NAME, 'invalidTagText')\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: () => []\n }\n },\n 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() {\n return this.inputId || this.safeId('__input__')\n },\n computedInputType() {\n // We only allow certain types\n return arrayIncludes(TYPES, this.inputType) ? this.inputType : 'text'\n },\n computedInputAttrs() {\n return {\n // Merge in user supplied attributes\n ...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() {\n return {\n input: this.onInputInput,\n change: this.onInputChange,\n keydown: this.onInputKeydown\n }\n },\n computedSeparator() {\n // Merge the array into a string\n return concat(this.separator)\n .filter(isString)\n .filter(identity)\n .join('')\n },\n 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 const separator = this.computedSeparator\n return separator ? new RegExp(`[${escapeRegExpChars(separator)}]+`) : null\n },\n 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 const joiner = this.computedSeparator.charAt(0)\n return joiner !== ' ' ? `${joiner} ` : joiner\n },\n disableAddButton() {\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 const newTag = trim(this.newTag)\n return (\n newTag === '' ||\n !this.splitTags(newTag).some(t => !arrayIncludes(this.tags, t) && this.validateTag(t))\n )\n },\n duplicateTags() {\n return this.tagsState.duplicate\n },\n hasDuplicateTags() {\n return this.duplicateTags.length > 0\n },\n invalidTags() {\n return this.tagsState.invalid\n },\n hasInvalidTags() {\n return this.invalidTags.length > 0\n }\n },\n watch: {\n value(newVal) {\n this.tags = cleanTags(newVal)\n },\n 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 if (!looseEqual(newVal, oldVal)) {\n newVal = concat(newVal).filter(identity)\n oldVal = concat(oldVal).filter(identity)\n this.removedTags = oldVal.filter(old => !arrayIncludes(newVal, old))\n }\n },\n 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() {\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() {\n this.handleAutofocus()\n },\n activated() /* istanbul ignore next */ {\n this.handleAutofocus()\n },\n methods: {\n addTag(newTag) {\n newTag = isString(newTag) ? newTag : this.newTag\n /* istanbul ignore next */\n if (this.disabled || trim(newTag) === '') {\n // Early exit\n return\n }\n const parsed = this.parseTags(newTag)\n // Add any new tags to the `tags` array, or if the\n // array of `allTags` is empty, we clear the input\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 /* 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 const invalidAndDuplicates = [...parsed.invalid, ...parsed.duplicate]\n this.newTag = parsed.all\n .filter(tag => arrayIncludes(invalidAndDuplicates, tag))\n .join(this.computedJoiner)\n .concat(invalidAndDuplicates.length > 0 ? this.computedJoiner.charAt(0) : '')\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 this.tagsState = parsed\n // Attempt to re-focus the input (specifically for when using the Add\n // button, as the button disappears after successfully adding a tag\n this.focus()\n },\n removeTag(tag) {\n /* istanbul ignore next */\n if (this.disabled) {\n return\n }\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 this.tags = this.tags.filter(t => t !== tag)\n // Return focus to the input (if possible)\n this.$nextTick(() => {\n this.focus()\n })\n },\n // --- Input element event handlers ---\n 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 let newTag = processEventValue(evt)\n const separatorRe = this.computedSeparatorRegExp\n if (this.newTag !== newTag) {\n this.newTag = newTag\n }\n // We ignore leading whitespace for the following\n newTag = trimLeft(newTag)\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(evt) {\n // Change is triggered on `<input>` blur, or `<select>` selected\n // This event is opt-in\n if (!this.disabled && this.addOnChange) {\n const newTag = processEventValue(evt)\n /* istanbul ignore next */\n if (this.newTag !== newTag) {\n this.newTag = newTag\n }\n this.addTag()\n }\n },\n onInputKeydown(evt) {\n // Early exit\n /* istanbul ignore next */\n if (this.disabled || !isEvent(evt)) {\n return\n }\n const keyCode = evt.keyCode\n const value = evt.target.value || ''\n /* istanbul ignore else: testing to be added later */\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 (\n this.removeOnDelete &&\n (keyCode === BACKSPACE || keyCode === DELETE) &&\n value === ''\n ) {\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(evt) {\n if (!this.disabled && isEvent(evt) && evt.target === evt.currentTarget) {\n this.$nextTick(() => {\n this.focus()\n })\n }\n },\n onFocusin() {\n this.hasFocus = true\n },\n onFocusout() {\n this.hasFocus = false\n },\n handleAutofocus() {\n this.$nextTick(() => {\n requestAF(() => {\n if (this.autofocus && !this.disabled) {\n this.focus()\n }\n })\n })\n },\n // --- Public methods ---\n focus() {\n if (!this.disabled) {\n try {\n this.getInput().focus()\n } catch {}\n }\n },\n blur() {\n try {\n this.getInput().blur()\n } catch {}\n },\n // --- Private methods ---\n splitTags(newTag) {\n // Split the input into an array of raw tags\n newTag = toString(newTag)\n const separatorRe = this.computedSeparatorRegExp\n // 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 return (separatorRe ? newTag.split(separatorRe) : [newTag]).map(trim).filter(identity)\n },\n parseTags(newTag) {\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 const tags = this.splitTags(newTag)\n // Base results\n const parsed = {\n all: tags,\n valid: [],\n invalid: [],\n duplicate: []\n }\n // Parse the unique tags\n tags.forEach(tag => {\n if (arrayIncludes(this.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 (this.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(tag) {\n // Call the user supplied tag validator\n const validator = this.tagValidator\n return isFunction(validator) ? validator(tag) : true\n },\n getInput() {\n // Returns the input element reference (or null if not found)\n return select(`#${this.computedInputId}`, this.$el)\n },\n // Default User Interface render\n defaultRender({\n tags,\n addTag,\n removeTag,\n inputType,\n inputAttrs,\n inputHandlers,\n inputClass,\n tagClass,\n tagVariant,\n tagPills,\n tagRemoveLabel,\n invalidTagText,\n duplicateTagText,\n isInvalid,\n isDuplicate,\n disabled,\n placeholder,\n addButtonText,\n addButtonVariant,\n disableAddButton\n }) {\n const h = this.$createElement\n\n // Make the list of tags\n const $tags = tags.map(tag => {\n tag = toString(tag)\n return h(\n BFormTag,\n {\n key: `li-tag__${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: { remove: () => removeTag(tag) }\n },\n tag\n )\n })\n\n // Feedback IDs if needed\n const invalidFeedbackId =\n invalidTagText && isInvalid ? this.safeId('__invalid_feedback__') : null\n const duplicateFeedbackId =\n duplicateTagText && isDuplicate ? this.safeId('__duplicate_feedback__') : null\n\n // Compute the `aria-describedby` attribute value\n const ariaDescribedby = [\n inputAttrs['aria-describedby'],\n invalidFeedbackId,\n duplicateFeedbackId\n ]\n .filter(identity)\n .join(' ')\n\n // Input\n const $input = h('input', {\n ref: 'input',\n // Directive needed to get `evt.target.composing` set (if needed)\n directives: [{ name: 'model', value: inputAttrs.value }],\n staticClass: 'b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0',\n class: inputClass,\n style: { outline: 0, minWidth: '5rem' },\n attrs: {\n ...inputAttrs,\n 'aria-describedby': ariaDescribedby || null,\n type: inputType,\n placeholder: placeholder || null\n },\n domProps: { value: inputAttrs.value },\n on: inputHandlers\n })\n\n // Add button\n const $button = h(\n BButton,\n {\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: { fontSize: '90%' },\n props: { variant: addButtonVariant, disabled: disableAddButton },\n on: { click: () => addTag() }\n },\n [this.normalizeSlot('add-button-text') || addButtonText]\n )\n\n // 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 const tagListId = this.safeId('__TAG__LIST__')\n\n const $field = h(\n 'li',\n {\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 },\n [h('div', { staticClass: 'd-flex', attrs: { role: 'group' } }, [$input, $button])]\n )\n\n // Wrap in an unordered list element (we use a list for accessibility)\n const $ul = h(\n 'ul',\n {\n key: '_tags_list_',\n staticClass: 'list-unstyled mt-n1 mb-0 d-flex flex-wrap align-items-center',\n attrs: { id: tagListId }\n },\n // `concat()` is faster than array spread when args are known to be arrays\n concat($tags, $field)\n )\n\n // Assemble the feedback\n let $feedback = h()\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 const joiner = this.computedJoiner\n\n // Invalid tag feedback if needed (error)\n let $invalid = h()\n if (invalidFeedbackId) {\n $invalid = h(\n BFormInvalidFeedback,\n {\n key: '_tags_invalid_feedback_',\n props: { id: invalidFeedbackId, forceShow: true }\n },\n [this.invalidTagText, ': ', this.invalidTags.join(joiner)]\n )\n }\n\n // Duplicate tag feedback if needed (warning, not error)\n let $duplicate = h()\n if (duplicateFeedbackId) {\n $duplicate = h(\n BFormText,\n {\n key: '_tags_duplicate_feedback_',\n props: { id: duplicateFeedbackId }\n },\n [this.duplicateTagText, ': ', this.duplicateTags.join(joiner)]\n )\n }\n\n $feedback = h(\n 'div',\n {\n key: '_tags_feedback_',\n attrs: { 'aria-live': 'polite', 'aria-atomic': 'true' }\n },\n [$invalid, $duplicate]\n )\n }\n // Return the content\n return [$ul, $feedback]\n }\n },\n render(h) {\n // Scoped slot properties\n const 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 }\n\n // Generate the user interface\n const $content = this.normalizeSlot('default', scope) || this.defaultRender(scope)\n\n // Generate the `aria-live` region for the current value(s)\n const $output = h(\n 'output',\n {\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 },\n this.tags.join(', ')\n )\n\n // Removed tag live region\n const $removed = h(\n 'div',\n {\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 },\n this.removedTags.length > 0 ? `(${this.tagRemovedLabel}) ${this.removedTags.join(', ')}` : ''\n )\n\n // Add hidden inputs for form submission\n let $hidden = h()\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(tag => {\n return h('input', {\n key: tag,\n attrs: {\n type: 'hidden',\n value: tag,\n name: this.name,\n form: this.form || null\n }\n })\n })\n }\n\n // Return the rendered output\n return h(\n 'div',\n {\n staticClass: 'b-form-tags form-control h-auto',\n class: {\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-${this.size}`]: this.size\n },\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 },\n concat($output, $removed, $content, $hidden)\n )\n }\n})\n","import { BFormTags } from './form-tags'\nimport { BFormTag } from './form-tag'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormTagsPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormTags,\n BTags: BFormTags,\n BFormTag,\n BTag: BFormTag\n }\n})\n\nexport { FormTagsPlugin, BFormTags, BFormTag }\n","import Vue from '../../utils/vue'\nimport { VBVisible } from '../../directives/visible/visible'\nimport idMixin from '../../mixins/id'\nimport formMixin from '../../mixins/form'\nimport formSizeMixin from '../../mixins/form-size'\nimport formStateMixin from '../../mixins/form-state'\nimport formTextMixin from '../../mixins/form-text'\nimport formSelectionMixin from '../../mixins/form-selection'\nimport formValidityMixin from '../../mixins/form-validity'\nimport listenOnRootMixin from '../../mixins/listen-on-root'\nimport { getCS, isVisible, requestAF } from '../../utils/dom'\nimport { isNull } from '../../utils/inspect'\n\n// @vue/component\nexport const BFormTextarea = /*#__PURE__*/ Vue.extend({\n name: 'BFormTextarea',\n directives: {\n 'b-visible': VBVisible\n },\n mixins: [\n idMixin,\n listenOnRootMixin,\n formMixin,\n formSizeMixin,\n formStateMixin,\n formTextMixin,\n formSelectionMixin,\n formValidityMixin\n ],\n props: {\n rows: {\n type: [Number, String],\n default: 2\n },\n maxRows: {\n type: [Number, String],\n default: null\n },\n wrap: {\n // 'soft', 'hard' or 'off'. Browser default is 'soft'\n type: String,\n default: 'soft'\n },\n noResize: {\n // Disable the resize handle of textarea\n type: Boolean,\n default: false\n },\n noAutoShrink: {\n // When in auto resize mode, disable shrinking to content height\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n heightInPx: null\n }\n },\n computed: {\n computedStyle() {\n const styles = {\n // Setting `noResize` to true will disable the ability for the user to\n // manually resize the textarea. We also disable when in auto height mode\n resize: !this.computedRows || this.noResize ? 'none' : null\n }\n if (!this.computedRows) {\n // Conditionally set the computed CSS height when auto rows/height is enabled\n // We avoid setting the style to `null`, which can override user manual resize handle\n styles.height = this.heightInPx\n // We always add a vertical scrollbar to the textarea when auto-height is\n // enabled so that the computed height calculation returns a stable value\n styles.overflowY = 'scroll'\n }\n return styles\n },\n computedMinRows() {\n // Ensure rows is at least 2 and positive (2 is the native textarea value)\n // A value of 1 can cause issues in some browsers, and most browsers\n // only support 2 as the smallest value\n return Math.max(parseInt(this.rows, 10) || 2, 2)\n },\n computedMaxRows() {\n return Math.max(this.computedMinRows, parseInt(this.maxRows, 10) || 0)\n },\n computedRows() {\n // This is used to set the attribute 'rows' on the textarea\n // If auto-height is enabled, then we return `null` as we use CSS to control height\n return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null\n }\n },\n watch: {\n localValue() {\n this.setHeight()\n }\n },\n mounted() {\n this.setHeight()\n },\n methods: {\n // Called by intersection observer directive\n visibleCallback(visible) /* istanbul ignore next */ {\n if (visible) {\n // We use a `$nextTick()` here just to make sure any\n // transitions or portalling have completed\n this.$nextTick(this.setHeight)\n }\n },\n setHeight() {\n this.$nextTick(() => {\n requestAF(() => {\n this.heightInPx = this.computeHeight()\n })\n })\n },\n computeHeight() /* istanbul ignore next: can't test getComputedStyle in JSDOM */ {\n if (this.$isServer || !isNull(this.computedRows)) {\n return null\n }\n\n const el = this.$el\n\n // Element must be visible (not hidden) and in document\n // Must be checked after above checks\n if (!isVisible(el)) {\n return null\n }\n\n // Get current computed styles\n const computedStyle = getCS(el)\n // Height of one line of text in px\n const lineHeight = parseFloat(computedStyle.lineHeight)\n // Calculate height of border and padding\n const border =\n (parseFloat(computedStyle.borderTopWidth) || 0) +\n (parseFloat(computedStyle.borderBottomWidth) || 0)\n const padding =\n (parseFloat(computedStyle.paddingTop) || 0) + (parseFloat(computedStyle.paddingBottom) || 0)\n // Calculate offset\n const offset = border + padding\n // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n const minHeight = lineHeight * this.computedMinRows + offset\n\n // Get the current style height (with `px` units)\n const oldHeight = el.style.height || computedStyle.height\n // Probe scrollHeight by temporarily changing the height to `auto`\n el.style.height = 'auto'\n const scrollHeight = el.scrollHeight\n // Place the original old height back on the element, just in case `computedProp`\n // returns the same value as before\n el.style.height = oldHeight\n\n // Calculate content height in 'rows' (scrollHeight includes padding but not border)\n const contentRows = Math.max((scrollHeight - padding) / lineHeight, 2)\n // Calculate number of rows to display (limited within min/max rows)\n const rows = Math.min(Math.max(contentRows, this.computedMinRows), this.computedMaxRows)\n // Calculate the required height of the textarea including border and padding (in pixels)\n const height = Math.max(Math.ceil(rows * lineHeight + offset), minHeight)\n\n // Computed height remains the larger of `oldHeight` and new `height`,\n // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n if (this.noAutoShrink && (parseFloat(oldHeight) || 0) > height) {\n return oldHeight\n }\n\n // Return the new computed CSS height in px units\n return `${height}px`\n }\n },\n render(h) {\n // Using self instead of this helps reduce code size during minification\n const self = this\n return h('textarea', {\n ref: 'input',\n class: self.computedClass,\n style: self.computedStyle,\n directives: [\n {\n name: 'model',\n value: self.localValue\n },\n {\n name: 'b-visible',\n value: this.visibleCallback,\n // If textarea is within 640px of viewport, consider it visible\n modifiers: { '640': true }\n }\n ],\n attrs: {\n id: self.safeId(),\n name: self.name,\n form: self.form || null,\n disabled: self.disabled,\n placeholder: self.placeholder,\n required: self.required,\n autocomplete: self.autocomplete || null,\n readonly: self.readonly || self.plaintext,\n rows: self.computedRows,\n wrap: self.wrap || null,\n 'aria-required': self.required ? 'true' : null,\n 'aria-invalid': self.computedAriaInvalid\n },\n domProps: {\n value: self.localValue\n },\n on: {\n ...self.$listeners,\n input: self.onInput,\n change: self.onChange,\n blur: self.onBlur\n }\n })\n }\n})\n","import { BFormTextarea } from './form-textarea'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst FormTextareaPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BFormTextarea,\n BTextarea: BFormTextarea\n }\n})\n\nexport { FormTextareaPlugin, BFormTextarea }\n","import { BImg } from './img'\nimport { BImgLazy } from './img-lazy'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst ImagePlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BImg,\n BImgLazy\n }\n})\n\nexport { ImagePlugin, BImg, BImgLazy }\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {\n tag: {\n type: String,\n default: 'div'\n }\n}\n\n// @vue/component\nexport const BInputGroupText = /*#__PURE__*/ Vue.extend({\n name: 'BInputGroupText',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'input-group-text'\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { BInputGroupText } from './input-group-text'\n\nexport const 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}\n\n// @vue/component\nexport const BInputGroupAddon = /*#__PURE__*/ Vue.extend({\n name: 'BInputGroupAddon',\n functional: true,\n props: {\n ...commonProps,\n append: {\n type: Boolean,\n default: false\n }\n },\n render(h, { props, data, children }) {\n return h(\n props.tag,\n 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 }),\n props.isText ? [h(BInputGroupText, children)] : children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { BInputGroupAddon, commonProps } from './input-group-addon'\n\n// @vue/component\nexport const BInputGroupPrepend = /*#__PURE__*/ Vue.extend({\n name: 'BInputGroupPrepend',\n functional: true,\n props: commonProps,\n render(h, { props, data, children }) {\n // pass all our props/attrs down to child, and set`append` to false\n return h(\n BInputGroupAddon,\n mergeData(data, {\n props: { ...props, append: false }\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { BInputGroupAddon, commonProps } from './input-group-addon'\n\n// @vue/component\nexport const BInputGroupAppend = /*#__PURE__*/ Vue.extend({\n name: 'BInputGroupAppend',\n functional: true,\n props: commonProps,\n render(h, { props, data, children }) {\n // pass all our props/attrs down to child, and set`append` to true\n return h(\n BInputGroupAddon,\n mergeData(data, {\n props: { ...props, append: true }\n }),\n children\n )\n }\n})\n","import 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'\n\nconst NAME = 'BInputGroup'\n\nexport const props = {\n id: {\n type: String\n },\n size: {\n type: String,\n default: () => getComponentConfig(NAME, 'size')\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}\n\n// @vue/component\nexport const BInputGroup = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, slots, scopedSlots }) {\n const $slots = slots()\n const $scopedSlots = scopedSlots || {}\n\n const childNodes = []\n\n // Prepend prop/slot\n if (props.prepend || props.prependHtml || hasNormalizedSlot('prepend', $scopedSlots, $slots)) {\n childNodes.push(\n h(BInputGroupPrepend, [\n // Prop\n props.prepend || props.prependHtml\n ? h(BInputGroupText, { domProps: htmlOrText(props.prependHtml, props.prepend) })\n : h(),\n // Slot\n normalizeSlot('prepend', {}, $scopedSlots, $slots) || h()\n ])\n )\n } else {\n childNodes.push(h())\n }\n\n // Default slot\n if (hasNormalizedSlot('default', $scopedSlots, $slots)) {\n childNodes.push(...normalizeSlot('default', {}, $scopedSlots, $slots))\n } else {\n childNodes.push(h())\n }\n\n // Append prop\n if (props.append || props.appendHtml || hasNormalizedSlot('append', $scopedSlots, $slots)) {\n childNodes.push(\n h(BInputGroupAppend, [\n // prop\n props.append || props.appendHtml\n ? h(BInputGroupText, { domProps: htmlOrText(props.appendHtml, props.append) })\n : h(),\n // Slot\n normalizeSlot('append', {}, $scopedSlots, $slots) || h()\n ])\n )\n } else {\n childNodes.push(h())\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'input-group',\n class: { [`input-group-${props.size}`]: props.size },\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }),\n childNodes\n )\n }\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'\n\nconst InputGroupPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BInputGroup,\n BInputGroupAddon,\n BInputGroupPrepend,\n BInputGroupAppend,\n BInputGroupText\n }\n})\n\nexport {\n InputGroupPlugin,\n BInputGroup,\n BInputGroupAddon,\n BInputGroupPrepend,\n BInputGroupAppend,\n BInputGroupText\n}\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const 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}\n\n// @vue/component\nexport const BContainer = /*#__PURE__*/ Vue.extend({\n name: 'BContainer',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n mergeData(data, {\n class: {\n container: !(props.fluid || props.fluid === ''),\n 'container-fluid': props.fluid === true || props.fluid === '',\n // Bootstrap v4.4+ responsive containers\n [`container-${props.fluid}`]: props.fluid && props.fluid !== true\n }\n }),\n children\n )\n }\n})\n","import 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'\n\nconst NAME = 'BJumbotron'\n\nexport const 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: () => getComponentConfig(NAME, 'bgVariant')\n },\n borderVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'borderVariant')\n },\n textVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'textVariant')\n }\n}\n\n// @vue/component\nexport const BJumbotron = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, slots, scopedSlots }) {\n // The order of the conditionals matter.\n // We are building the component markup in order.\n let childNodes = []\n const $slots = slots()\n const $scopedSlots = scopedSlots || {}\n\n // Header\n if (props.header || hasNormalizedSlot('header', $scopedSlots, $slots) || props.headerHtml) {\n childNodes.push(\n h(\n props.headerTag,\n {\n class: {\n [`display-${props.headerLevel}`]: props.headerLevel\n }\n },\n normalizeSlot('header', {}, $scopedSlots, $slots) ||\n props.headerHtml ||\n stripTags(props.header)\n )\n )\n }\n\n // Lead\n if (props.lead || hasNormalizedSlot('lead', $scopedSlots, $slots) || props.leadHtml) {\n childNodes.push(\n h(\n props.leadTag,\n { staticClass: 'lead' },\n normalizeSlot('lead', {}, $scopedSlots, $slots) || props.leadHtml || stripTags(props.lead)\n )\n )\n }\n\n // Default slot\n if (hasNormalizedSlot('default', $scopedSlots, $slots)) {\n childNodes.push(normalizeSlot('default', {}, $scopedSlots, $slots))\n }\n\n // If fluid, wrap content in a container/container-fluid\n if (props.fluid) {\n // Children become a child of a container\n childNodes = [h(BContainer, { props: { fluid: props.containerFluid } }, childNodes)]\n }\n // Return the jumbotron\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'jumbotron',\n class: {\n 'jumbotron-fluid': props.fluid,\n [`text-${props.textVariant}`]: props.textVariant,\n [`bg-${props.bgVariant}`]: props.bgVariant,\n [`border-${props.borderVariant}`]: props.borderVariant,\n border: props.borderVariant\n }\n }),\n childNodes\n )\n }\n})\n","import { BJumbotron } from './jumbotron'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst JumbotronPlugin = /*#__PURE__*/ pluginFactory({\n components: { BJumbotron }\n})\n\nexport { JumbotronPlugin, BJumbotron }\n","import { 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'\n\nconst COMMON_ALIGNMENT = ['start', 'end', 'center']\n\n// Generates a prop object with a type of `[String, Number]`\nconst strNum = () => ({\n type: [String, Number],\n default: null\n})\n\n// Compute a `row-cols-{breakpoint}-{cols}` class name\n// Memoized function for better performance on generating class names\nconst computeRowColsClass = memoize((breakpoint, cols) => {\n cols = trim(toString(cols))\n return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null\n})\n\n// Get the breakpoint name from the `rowCols` prop name\n// Memoized function for better performance on extracting breakpoint names\nconst computeRowColsBreakpoint = memoize(prop => lowerCase(prop.replace('cols', '')))\n\n// Cached copy of the `row-cols` breakpoint prop names\n// Will be populated when the props are generated\nlet rowColsPropList = []\n\n// Lazy evaled props factory for <b-row> (called only once,\n// the first time the component is used)\nconst generateProps = () => {\n // Grab the breakpoints from the cached config (including the '' (xs) breakpoint)\n const breakpoints = getBreakpointsUpCached()\n\n // Supports classes like: `row-cols-2`, `row-cols-md-4`, `row-cols-xl-6`\n const rowColsProps = breakpoints.reduce((props, breakpoint) => {\n props[suffixPropName(breakpoint, 'cols')] = strNum()\n return props\n }, create(null))\n\n // Cache the row-cols prop names\n rowColsPropList = keys(rowColsProps)\n\n // Return the generated props\n return {\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: str => arrayIncludes(COMMON_ALIGNMENT.concat(['baseline', 'stretch']), str)\n },\n alignH: {\n type: String,\n default: null,\n validator: str => arrayIncludes(COMMON_ALIGNMENT.concat(['between', 'around']), str)\n },\n alignContent: {\n type: String,\n default: null,\n validator: str =>\n arrayIncludes(COMMON_ALIGNMENT.concat(['between', 'around', 'stretch']), str)\n },\n ...rowColsProps\n }\n}\n\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\nexport const BRow = {\n name: 'BRow',\n functional: true,\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 render(h, { props, data, children }) {\n const classList = []\n // Loop through row-cols breakpoint props and generate the classes\n rowColsPropList.forEach(prop => {\n const c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop])\n // If a class is returned, push it onto the array\n if (c) {\n classList.push(c)\n }\n })\n classList.push({\n 'no-gutters': props.noGutters,\n [`align-items-${props.alignV}`]: props.alignV,\n [`justify-content-${props.alignH}`]: props.alignH,\n [`align-content-${props.alignContent}`]: props.alignContent\n })\n return h(props.tag, mergeData(data, { staticClass: 'row', class: classList }), children)\n }\n}\n","import { BContainer } from './container'\nimport { BRow } from './row'\nimport { BCol } from './col'\nimport { BFormRow } from './form-row'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst LayoutPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BContainer,\n BRow,\n BCol,\n BFormRow\n }\n})\n\nexport { LayoutPlugin, BContainer, BRow, BCol, BFormRow }\n","import { BLink } from './link'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst LinkPlugin = /*#__PURE__*/ pluginFactory({\n components: { BLink }\n})\n\nexport { LinkPlugin, BLink }\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { isString } from '../../utils/inspect'\n\nexport const 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}\n\n// @vue/component\nexport const BListGroup = /*#__PURE__*/ Vue.extend({\n name: 'BListGroup',\n functional: true,\n props,\n render(h, { props, data, children }) {\n let horizontal = props.horizontal === '' ? true : props.horizontal\n horizontal = props.flush ? false : horizontal\n const componentData = {\n staticClass: 'list-group',\n class: {\n 'list-group-flush': props.flush,\n 'list-group-horizontal': horizontal === true,\n [`list-group-horizontal-${horizontal}`]: isString(horizontal)\n }\n }\n return h(props.tag, mergeData(data, componentData), children)\n }\n})\n","import 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'\n\nconst NAME = 'BListGroupItem'\n\nconst actionTags = ['a', 'router-link', 'button', 'b-link']\nconst linkProps = linkPropsFactory()\ndelete linkProps.href.default\ndelete linkProps.to.default\n\nexport const props = {\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: () => getComponentConfig(NAME, 'variant')\n },\n ...linkProps\n}\n// @vue/component\nexport const BListGroupItem = /*#__PURE__*/ Vue.extend({\n name: NAME,\n functional: true,\n props,\n render(h, { props, data, children }) {\n const tag = props.button ? 'button' : !props.href && !props.to ? props.tag : BLink\n const isAction = Boolean(\n props.href || props.to || props.action || props.button || arrayIncludes(actionTags, props.tag)\n )\n const attrs = {}\n let itemProps = {}\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 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 const componentData = {\n attrs,\n props: itemProps,\n staticClass: 'list-group-item',\n class: {\n [`list-group-item-${props.variant}`]: props.variant,\n 'list-group-item-action': isAction,\n active: props.active,\n disabled: props.disabled\n }\n }\n\n return h(tag, mergeData(data, componentData), children)\n }\n})\n","import { BListGroup } from './list-group'\nimport { BListGroupItem } from './list-group-item'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst ListGroupPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BListGroup,\n BListGroupItem\n }\n})\n\nexport { ListGroupPlugin, BListGroup, BListGroupItem }\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {\n tag: {\n type: String,\n default: 'div'\n }\n}\n\n// @vue/component\nexport const BMediaBody = /*#__PURE__*/ Vue.extend({\n name: 'BMediaBody',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'media-body'\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {\n tag: {\n type: String,\n default: 'div'\n },\n verticalAlign: {\n type: String,\n default: 'top'\n }\n}\n\n// @vue/component\nexport const BMediaAside = /*#__PURE__*/ Vue.extend({\n name: 'BMediaAside',\n functional: true,\n props,\n render(h, { props, data, children }) {\n const align =\n props.verticalAlign === 'top'\n ? 'start'\n : props.verticalAlign === 'bottom'\n ? 'end'\n : props.verticalAlign\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'd-flex',\n class: {\n [`align-self-${align}`]: align\n }\n }),\n children\n )\n }\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'\n\nexport const 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}\n\n// @vue/component\nexport const BMedia = /*#__PURE__*/ Vue.extend({\n name: 'BMedia',\n functional: true,\n props,\n render(h, { props, data, slots, scopedSlots, children }) {\n const childNodes = props.noBody ? children : []\n\n if (!props.noBody) {\n const $slots = slots()\n const $scopedSlots = scopedSlots || {}\n const $aside = normalizeSlot('aside', {}, $scopedSlots, $slots)\n const $default = normalizeSlot('default', {}, $scopedSlots, $slots)\n\n if ($aside && !props.rightAlign) {\n childNodes.push(\n h(\n BMediaAside,\n { staticClass: 'mr-3', props: { verticalAlign: props.verticalAlign } },\n $aside\n )\n )\n }\n\n childNodes.push(h(BMediaBody, $default))\n\n if ($aside && props.rightAlign) {\n childNodes.push(\n h(\n BMediaAside,\n { staticClass: 'ml-3', props: { verticalAlign: props.verticalAlign } },\n $aside\n )\n )\n }\n }\n\n return h(props.tag, mergeData(data, { staticClass: 'media' }), childNodes)\n }\n})\n","import { BMedia } from './media'\nimport { BMediaAside } from './media-aside'\nimport { BMediaBody } from './media-body'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst MediaPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BMedia,\n BMediaAside,\n BMediaBody\n }\n})\n\nexport { MediaPlugin, BMedia, BMediaAside, BMediaBody }\n","import Vue from './vue'\nimport identity from './identity'\nimport { concat } from './array'\nimport { removeNode, select } from './dom'\nimport { isBrowser } from './env'\nimport { isFunction, isString } from './inspect'\nimport { HTMLElement } from './safe-types'\nimport normalizeSlotMixin from '../mixins/normalize-slot'\n\n// BTransporterSingle/BTransporterTargetSingle:\n//\n// Single root node portaling of content, which retains parent/child hierarchy\n// Unlike Portal-Vue where portaled content is no longer a descendent of its\n// intended parent components\n//\n// Private components for use by Tooltips, Popovers and Modals\n//\n// Based on vue-simple-portal\n// https://github.com/LinusBorg/vue-simple-portal\n\n// Transporter target used by BTransporterSingle\n// Supports only a single root element\n// @vue/component\nconst BTransporterTargetSingle = /*#__PURE__*/ Vue.extend({\n // As an abstract component, it doesn't appear in the $parent chain of\n // components, which means the next parent of any component rendered inside\n // of this one will be the parent from which is was portal'd\n abstract: true,\n name: 'BTransporterTargetSingle',\n props: {\n nodes: {\n // Even though we only support a single root element,\n // VNodes are always passed as an array\n type: [Array, Function]\n // default: undefined\n }\n },\n data: vm => {\n return {\n updatedNodes: vm.nodes\n }\n },\n destroyed() {\n removeNode(this.$el)\n },\n render(h) {\n let nodes = isFunction(this.updatedNodes) ? this.updatedNodes({}) : this.updatedNodes\n nodes = concat(nodes).filter(Boolean)\n /* istanbul ignore else */\n if (nodes && nodes.length > 0 && !nodes[0].text) {\n return nodes[0]\n } else {\n /* istanbul ignore next */\n return h()\n }\n }\n})\n\n// This component has no root element, so only a single VNode is allowed\n// @vue/component\nexport const BTransporterSingle = /*#__PURE__*/ Vue.extend({\n name: 'BTransporterSingle',\n mixins: [normalizeSlotMixin],\n props: {\n disabled: {\n type: Boolean,\n default: false\n },\n container: {\n // String: CSS selector,\n // HTMLElement: Element reference\n // Mainly needed for tooltips/popovers inside modals\n type: [String, HTMLElement],\n default: 'body'\n },\n tag: {\n // This should be set to match the root element type\n type: String,\n default: 'div'\n }\n },\n watch: {\n disabled: {\n immediate: true,\n handler(disabled) {\n disabled ? this.unmountTarget() : this.$nextTick(this.mountTarget)\n }\n }\n },\n created() {\n this._bv_defaultFn = null\n this._bv_target = null\n },\n beforeMount() {\n this.mountTarget()\n },\n updated() {\n // We need to make sure that all children have completed updating\n // before rendering in the target\n // `vue-simple-portal` has the this in a `$nextTick()`,\n // while `portal-vue` doesn't\n // Just trying to see if the `$nextTick()` delay is required or not\n // Since all slots in Vue 2.6.x are always functions\n this.updateTarget()\n },\n beforeDestroy() {\n this.unmountTarget()\n this._bv_defaultFn = null\n },\n methods: {\n // Get the element which the target should be appended to\n getContainer() {\n /* istanbul ignore else */\n if (isBrowser) {\n const container = this.container\n return isString(container) ? select(container) : container\n } else {\n return null\n }\n },\n // Mount the target\n mountTarget() {\n if (!this._bv_target) {\n const container = this.getContainer()\n if (container) {\n const el = document.createElement('div')\n container.appendChild(el)\n this._bv_target = new BTransporterTargetSingle({\n el,\n parent: this,\n propsData: {\n // Initial nodes to be rendered\n nodes: concat(this.normalizeSlot('default'))\n }\n })\n }\n }\n },\n // Update the content of the target\n updateTarget() {\n if (isBrowser && this._bv_target) {\n const defaultFn = this.$scopedSlots.default\n if (!this.disabled) {\n /* istanbul ignore else: only applicable in Vue 2.5.x */\n if (defaultFn && this._bv_defaultFn !== defaultFn) {\n // We only update the target component if the scoped slot\n // function is a fresh one. The new slot syntax (since Vue 2.6)\n // can cache unchanged slot functions and we want to respect that here\n this._bv_target.updatedNodes = defaultFn\n } else if (!defaultFn) {\n // We also need to be back compatible with non-scoped default slot (i.e. 2.5.x)\n this._bv_target.updatedNodes = this.$slots.default\n }\n }\n // Update the scoped slot function cache\n this._bv_defaultFn = defaultFn\n }\n },\n // Unmount the target\n unmountTarget() {\n if (this._bv_target) {\n this._bv_target.$destroy()\n this._bv_target = null\n }\n }\n },\n render(h) {\n if (this.disabled) {\n const nodes = concat(this.normalizeSlot('default')).filter(identity)\n if (nodes.length > 0 && !nodes[0].text) {\n return nodes[0]\n }\n }\n return h()\n }\n})\n","import { arrayIncludes } from '../utils/array'\nimport { isBrowser } from '../utils/env'\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOn, eventOff } from '../utils/events'\nimport { isString, isFunction } from '../utils/inspect'\nimport { keys } from '../utils/object'\n\nconst PROP = '$_bv_documentHandlers_'\n\n// @vue/component\nexport default {\n created() {\n /* istanbul ignore next */\n if (!isBrowser) {\n return\n }\n // Declare non-reactive property\n // Object of arrays, keyed by event name,\n // where value is an array of handlers\n // Prop will be defined on client only\n this[PROP] = {}\n // Set up our beforeDestroy handler (client only)\n this.$once('hook:beforeDestroy', () => {\n const items = this[PROP] || {}\n // Immediately delete this[PROP] to prevent the\n // listenOn/Off methods from running (which may occur\n // due to requestAnimationFrame/transition delays)\n delete this[PROP]\n // Remove all registered event handlers\n keys(items).forEach(evtName => {\n const handlers = items[evtName] || []\n handlers.forEach(handler => eventOff(document, evtName, handler, EVENT_OPTIONS_NO_CAPTURE))\n })\n })\n },\n methods: {\n listenDocument(on, evtName, handler) {\n on ? this.listenOnDocument(evtName, handler) : this.listenOffDocument(evtName, handler)\n },\n listenOnDocument(evtName, handler) {\n if (this[PROP] && isString(evtName) && isFunction(handler)) {\n this[PROP][evtName] = this[PROP][evtName] || []\n if (!arrayIncludes(this[PROP][evtName], handler)) {\n this[PROP][evtName].push(handler)\n eventOn(document, evtName, handler, EVENT_OPTIONS_NO_CAPTURE)\n }\n }\n },\n listenOffDocument(evtName, handler) {\n if (this[PROP] && isString(evtName) && isFunction(handler)) {\n eventOff(document, evtName, handler, EVENT_OPTIONS_NO_CAPTURE)\n this[PROP][evtName] = (this[PROP][evtName] || []).filter(h => h !== handler)\n }\n }\n }\n}\n","import { arrayIncludes } from '../utils/array'\nimport { isBrowser } from '../utils/env'\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOn, eventOff } from '../utils/events'\nimport { isString, isFunction } from '../utils/inspect'\nimport { keys } from '../utils/object'\n\nconst PROP = '$_bv_windowHandlers_'\n\n// @vue/component\nexport default {\n beforeCreate() {\n // Declare non-reactive property\n // Object of arrays, keyed by event name,\n // where value is an array of handlers\n this[PROP] = {}\n },\n beforeDestroy() {\n if (isBrowser) {\n const items = this[PROP]\n // Immediately delete this[PROP] to prevent the\n // listenOn/Off methods from running (which may occur\n // due to requestAnimationFrame delays)\n delete this[PROP]\n // Remove all registered event handlers\n keys(items).forEach(evtName => {\n const handlers = items[evtName] || []\n handlers.forEach(handler => eventOff(window, evtName, handler, EVENT_OPTIONS_NO_CAPTURE))\n })\n }\n },\n methods: {\n listenWindow(on, evtName, handler) {\n on ? this.listenOnWindow(evtName, handler) : this.listenOffWindow(evtName, handler)\n },\n listenOnWindow(evtName, handler) {\n if (isBrowser && this[PROP] && isString(evtName) && isFunction(handler)) {\n this[PROP][evtName] = this[PROP][evtName] || []\n if (!arrayIncludes(this[PROP][evtName], handler)) {\n this[PROP][evtName].push(handler)\n eventOn(window, evtName, handler, EVENT_OPTIONS_NO_CAPTURE)\n }\n }\n },\n listenOffWindow(evtName, handler) {\n if (isBrowser && this[PROP] && isString(evtName) && isFunction(handler)) {\n eventOff(window, evtName, handler, EVENT_OPTIONS_NO_CAPTURE)\n this[PROP][evtName] = (this[PROP][evtName] || []).filter(h => h !== handler)\n }\n }\n }\n}\n","// This method returns a component's scoped style attribute name: `data-v-xxxxxxx`\n// The `_scopeId` options property is added by vue-loader when using scoped styles\n// and will be `undefined` if no scoped styles are in use\n\nconst getScopeId = (vm, defaultValue = null) => {\n return vm ? vm.$options._scopeId || defaultValue : defaultValue\n}\n\nexport default getScopeId\n","import getScopeId from '../utils/get-scope-id'\n\nexport default {\n computed: {\n scopedStyleAttrs() {\n const scopeId = getScopeId(this.$parent)\n return scopeId ? { [scopeId]: '' } : {}\n }\n }\n}\n","/**\n * Private ModalManager helper\n * Handles controlling modal stacking zIndexes and body adjustments/classes\n */\n\nimport Vue from '../../../utils/vue'\nimport {\n getAttr,\n hasAttr,\n removeAttr,\n setAttr,\n addClass,\n removeClass,\n getBCR,\n getCS,\n selectAll,\n requestAF\n} from '../../../utils/dom'\nimport { isBrowser } from '../../../utils/env'\nimport { isNull } from '../../../utils/inspect'\nimport { toFloat, toInteger } from '../../../utils/number'\n\n// --- Constants ---\n\n// Default modal backdrop z-index\nconst DEFAULT_ZINDEX = 1040\n\n// Selectors for padding/margin adjustments\nconst Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n}\n\n// @vue/component\nconst ModalManager = /*#__PURE__*/ Vue.extend({\n data() {\n return {\n modals: [],\n baseZIndex: null,\n scrollbarWidth: null,\n isBodyOverflowing: false\n }\n },\n computed: {\n modalCount() {\n return this.modals.length\n },\n modalsAreOpen() {\n return this.modalCount > 0\n }\n },\n watch: {\n modalCount(newCount, oldCount) {\n if (isBrowser) {\n this.getScrollbarWidth()\n if (newCount > 0 && oldCount === 0) {\n // Transitioning to modal(s) open\n this.checkScrollbar()\n this.setScrollbar()\n addClass(document.body, 'modal-open')\n } else if (newCount === 0 && oldCount > 0) {\n // Transitioning to modal(s) closed\n this.resetScrollbar()\n removeClass(document.body, 'modal-open')\n }\n setAttr(document.body, 'data-modal-open-count', String(newCount))\n }\n },\n modals(newVal) {\n this.checkScrollbar()\n requestAF(() => {\n this.updateModals(newVal || [])\n })\n }\n },\n methods: {\n // Public methods\n registerModal(modal) {\n // Register the modal if not already registered\n if (modal && this.modals.indexOf(modal) === -1) {\n // Add modal to modals array\n this.modals.push(modal)\n modal.$once('hook:beforeDestroy', () => {\n this.unregisterModal(modal)\n })\n }\n },\n unregisterModal(modal) {\n const index = this.modals.indexOf(modal)\n if (index > -1) {\n // Remove modal from modals array\n this.modals.splice(index, 1)\n // Reset the modal's data\n if (!(modal._isBeingDestroyed || modal._isDestroyed)) {\n this.resetModal(modal)\n }\n }\n },\n getBaseZIndex() {\n if (isNull(this.baseZIndex) && isBrowser) {\n // Create a temporary `div.modal-backdrop` to get computed z-index\n const div = document.createElement('div')\n div.className = 'modal-backdrop d-none'\n div.style.display = 'none'\n document.body.appendChild(div)\n this.baseZIndex = toInteger(getCS(div).zIndex || DEFAULT_ZINDEX)\n document.body.removeChild(div)\n }\n return this.baseZIndex || DEFAULT_ZINDEX\n },\n getScrollbarWidth() {\n if (isNull(this.scrollbarWidth) && isBrowser) {\n // Create a temporary `div.measure-scrollbar` to get computed z-index\n const div = document.createElement('div')\n div.className = 'modal-scrollbar-measure'\n document.body.appendChild(div)\n this.scrollbarWidth = getBCR(div).width - div.clientWidth\n document.body.removeChild(div)\n }\n return this.scrollbarWidth || 0\n },\n // Private methods\n updateModals(modals) {\n const baseZIndex = this.getBaseZIndex()\n const scrollbarWidth = this.getScrollbarWidth()\n modals.forEach((modal, index) => {\n // We update data values on each modal\n modal.zIndex = baseZIndex + index\n modal.scrollbarWidth = scrollbarWidth\n modal.isTop = index === this.modals.length - 1\n modal.isBodyOverflowing = this.isBodyOverflowing\n })\n },\n resetModal(modal) {\n if (modal) {\n modal.zIndex = this.getBaseZIndex()\n modal.isTop = true\n modal.isBodyOverflowing = false\n }\n },\n checkScrollbar() {\n // Determine if the body element is overflowing\n const { left, right } = getBCR(document.body)\n this.isBodyOverflowing = left + right < window.innerWidth\n },\n setScrollbar() {\n const body = document.body\n // Storage place to cache changes to margins and padding\n // Note: This assumes the following element types are not added to the\n // document after the modal has opened.\n body._paddingChangedForModal = body._paddingChangedForModal || []\n body._marginChangedForModal = body._marginChangedForModal || []\n if (this.isBodyOverflowing) {\n const scrollbarWidth = this.scrollbarWidth\n // Adjust fixed content padding\n /* istanbul ignore next: difficult to test in JSDOM */\n selectAll(Selector.FIXED_CONTENT).forEach(el => {\n const actualPadding = el.style.paddingRight\n const calculatedPadding = getCS(el).paddingRight || 0\n setAttr(el, 'data-padding-right', actualPadding)\n el.style.paddingRight = `${toFloat(calculatedPadding) + scrollbarWidth}px`\n body._paddingChangedForModal.push(el)\n })\n // Adjust sticky content margin\n /* istanbul ignore next: difficult to test in JSDOM */\n selectAll(Selector.STICKY_CONTENT).forEach(el => /* istanbul ignore next */ {\n const actualMargin = el.style.marginRight\n const calculatedMargin = getCS(el).marginRight || 0\n setAttr(el, 'data-margin-right', actualMargin)\n el.style.marginRight = `${toFloat(calculatedMargin) - scrollbarWidth}px`\n body._marginChangedForModal.push(el)\n })\n // Adjust <b-navbar-toggler> margin\n /* istanbul ignore next: difficult to test in JSDOM */\n selectAll(Selector.NAVBAR_TOGGLER).forEach(el => /* istanbul ignore next */ {\n const actualMargin = el.style.marginRight\n const calculatedMargin = getCS(el).marginRight || 0\n setAttr(el, 'data-margin-right', actualMargin)\n el.style.marginRight = `${toFloat(calculatedMargin) + scrollbarWidth}px`\n body._marginChangedForModal.push(el)\n })\n // Adjust body padding\n const actualPadding = body.style.paddingRight\n const calculatedPadding = getCS(body).paddingRight\n setAttr(body, 'data-padding-right', actualPadding)\n body.style.paddingRight = `${toFloat(calculatedPadding) + scrollbarWidth}px`\n }\n },\n resetScrollbar() {\n const body = document.body\n if (body._paddingChangedForModal) {\n // Restore fixed content padding\n body._paddingChangedForModal.forEach(el => {\n /* istanbul ignore next: difficult to test in JSDOM */\n if (hasAttr(el, 'data-padding-right')) {\n el.style.paddingRight = getAttr(el, 'data-padding-right') || ''\n removeAttr(el, 'data-padding-right')\n }\n })\n }\n if (body._marginChangedForModal) {\n // Restore sticky content and navbar-toggler margin\n body._marginChangedForModal.forEach(el => {\n /* istanbul ignore next: difficult to test in JSDOM */\n if (hasAttr(el, 'data-margin-right')) {\n el.style.marginRight = getAttr(el, 'data-margin-right') || ''\n removeAttr(el, 'data-margin-right')\n }\n })\n }\n body._paddingChangedForModal = null\n body._marginChangedForModal = null\n // Restore body padding\n if (hasAttr(body, 'data-padding-right')) {\n body.style.paddingRight = getAttr(body, 'data-padding-right') || ''\n removeAttr(body, 'data-padding-right')\n }\n }\n }\n})\n\n// Create and export our modal manager instance\nexport const modalManager = new ModalManager()\n","import { BvEvent } from '../../../utils/bv-event.class'\nimport { defineProperties, readonlyDescriptor } from '../../../utils/object'\n\nclass BvModalEvent extends BvEvent {\n constructor(type, eventInit = {}) {\n super(type, eventInit)\n // Freeze our new props as readonly, but leave them enumerable\n defineProperties(this, {\n trigger: readonlyDescriptor()\n })\n }\n\n static get Defaults() {\n return {\n ...super.Defaults,\n trigger: null\n }\n }\n}\n\n// Named exports\nexport { BvModalEvent }\n","import Vue from '../../utils/vue'\nimport BVTransition from '../../utils/bv-transition'\nimport KeyCodes from '../../utils/key-codes'\nimport identity from '../../utils/identity'\nimport observeDom from '../../utils/observe-dom'\nimport { arrayIncludes, concat } from '../../utils/array'\nimport { getComponentConfig } from '../../utils/config'\nimport { closest, contains, isVisible, requestAF, select, selectAll } from '../../utils/dom'\nimport { isBrowser } from '../../utils/env'\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOn, eventOff } from '../../utils/events'\nimport { stripTags } from '../../utils/html'\nimport { isString, isUndefinedOrNull } from '../../utils/inspect'\nimport { HTMLElement } from '../../utils/safe-types'\nimport { BTransporterSingle } from '../../utils/transporter'\nimport idMixin from '../../mixins/id'\nimport listenOnDocumentMixin from '../../mixins/listen-on-document'\nimport listenOnRootMixin from '../../mixins/listen-on-root'\nimport listenOnWindowMixin from '../../mixins/listen-on-window'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport scopedStyleAttrsMixin from '../../mixins/scoped-style-attrs'\nimport { BButton } from '../button/button'\nimport { BButtonClose } from '../button/button-close'\nimport { modalManager } from './helpers/modal-manager'\nimport { BvModalEvent } from './helpers/bv-modal-event.class'\n\n// --- Constants ---\n\nconst NAME = 'BModal'\n\n// ObserveDom config to detect changes in modal content\n// so that we can adjust the modal padding if needed\nconst OBSERVER_CONFIG = {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['style', 'class']\n}\n\n// Query selector to find all tabbable elements\n// (includes tabindex=\"-1\", which we filter out after)\nconst TABABLE_SELECTOR = [\n 'button',\n '[href]:not(.disabled)',\n 'input',\n 'select',\n 'textarea',\n '[tabindex]',\n '[contenteditable]'\n]\n .map(s => `${s}:not(:disabled):not([disabled])`)\n .join(', ')\n\n// --- Utility methods ---\n\n// Attempt to focus an element, and return true if successful\nconst attemptFocus = el => {\n if (el && isVisible(el) && el.focus) {\n try {\n el.focus()\n } catch {}\n }\n // If the element has focus, then return true\n return document.activeElement === el\n}\n\n// --- Props ---\nexport const props = {\n size: {\n type: String,\n default: () => getComponentConfig(NAME, 'size')\n },\n centered: {\n type: Boolean,\n default: false\n },\n scrollable: {\n type: Boolean,\n default: false\n },\n buttonSize: {\n type: String,\n default: ''\n },\n noStacking: {\n type: Boolean,\n default: false\n },\n noFade: {\n type: Boolean,\n default: false\n },\n noCloseOnBackdrop: {\n type: Boolean,\n default: false\n },\n noCloseOnEsc: {\n type: Boolean,\n default: false\n },\n noEnforceFocus: {\n type: Boolean,\n default: false\n },\n ignoreEnforceFocusSelector: {\n type: [Array, String],\n default: ''\n },\n title: {\n type: String,\n default: ''\n },\n titleHtml: {\n type: String\n },\n titleTag: {\n type: String,\n default: () => getComponentConfig(NAME, 'titleTag')\n },\n titleClass: {\n type: [String, Array, Object],\n default: null\n },\n titleSrOnly: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: null\n },\n headerBgVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'headerBgVariant')\n },\n headerBorderVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'headerBorderVariant')\n },\n headerTextVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'headerTextVariant')\n },\n headerCloseVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'headerCloseVariant')\n },\n headerClass: {\n type: [String, Array, Object],\n default: null\n },\n bodyBgVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'bodyBgVariant')\n },\n bodyTextVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'bodyTextVariant')\n },\n modalClass: {\n type: [String, Array, Object],\n default: null\n },\n dialogClass: {\n type: [String, Array, Object],\n default: null\n },\n contentClass: {\n type: [String, Array, Object],\n default: null\n },\n bodyClass: {\n type: [String, Array, Object],\n default: null\n },\n footerBgVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'footerBgVariant')\n },\n footerBorderVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'footerBorderVariant')\n },\n footerTextVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'footerTextVariant')\n },\n footerClass: {\n type: [String, Array, Object],\n default: null\n },\n hideHeader: {\n type: Boolean,\n default: false\n },\n hideFooter: {\n type: Boolean,\n default: false\n },\n hideHeaderClose: {\n type: Boolean,\n default: false\n },\n hideBackdrop: {\n type: Boolean,\n default: false\n },\n okOnly: {\n type: Boolean,\n default: false\n },\n okDisabled: {\n type: Boolean,\n default: false\n },\n cancelDisabled: {\n type: Boolean,\n default: false\n },\n visible: {\n type: Boolean,\n default: false\n },\n returnFocus: {\n // HTML Element, CSS selector string or Vue component instance\n type: [HTMLElement, String, Object],\n default: null\n },\n headerCloseContent: {\n type: String,\n default: () => getComponentConfig(NAME, 'headerCloseContent')\n },\n headerCloseLabel: {\n type: String,\n default: () => getComponentConfig(NAME, 'headerCloseLabel')\n },\n cancelTitle: {\n type: String,\n default: () => getComponentConfig(NAME, 'cancelTitle')\n },\n cancelTitleHtml: {\n type: String\n },\n okTitle: {\n type: String,\n default: () => getComponentConfig(NAME, 'okTitle')\n },\n okTitleHtml: {\n type: String\n },\n cancelVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'cancelVariant')\n },\n okVariant: {\n type: String,\n default: () => getComponentConfig(NAME, 'okVariant')\n },\n lazy: {\n type: Boolean,\n default: false\n },\n busy: {\n type: Boolean,\n default: false\n },\n static: {\n type: Boolean,\n default: false\n },\n autoFocusButton: {\n type: String,\n default: null,\n validator: val => {\n /* istanbul ignore next */\n return isUndefinedOrNull(val) || arrayIncludes(['ok', 'cancel', 'close'], val)\n }\n }\n}\n\n// @vue/component\nexport const BModal = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [\n idMixin,\n listenOnDocumentMixin,\n listenOnRootMixin,\n listenOnWindowMixin,\n normalizeSlotMixin,\n scopedStyleAttrsMixin\n ],\n inheritAttrs: false,\n model: {\n prop: 'visible',\n event: 'change'\n },\n props,\n data() {\n return {\n isHidden: true, // If modal should not be in document\n isVisible: false, // Controls modal visible state\n isTransitioning: false, // Used for style control\n isShow: false, // Used for style control\n isBlock: false, // Used for style control\n isOpening: false, // To signal that the modal is in the process of opening\n isClosing: false, // To signal that the modal is in the process of closing\n ignoreBackdropClick: false, // Used to signify if click out listener should ignore the click\n isModalOverflowing: false,\n return_focus: this.returnFocus || null,\n // The following items are controlled by the modalManager instance\n scrollbarWidth: 0,\n zIndex: modalManager.getBaseZIndex(),\n isTop: true,\n isBodyOverflowing: false\n }\n },\n computed: {\n modalClasses() {\n return [\n {\n fade: !this.noFade,\n show: this.isShow\n },\n this.modalClass\n ]\n },\n modalStyles() {\n const sbWidth = `${this.scrollbarWidth}px`\n return {\n paddingLeft: !this.isBodyOverflowing && this.isModalOverflowing ? sbWidth : '',\n paddingRight: this.isBodyOverflowing && !this.isModalOverflowing ? sbWidth : '',\n // Needed to fix issue https://github.com/bootstrap-vue/bootstrap-vue/issues/3457\n // Even though we are using v-show, we must ensure 'none' is restored in the styles\n display: this.isBlock ? 'block' : 'none'\n }\n },\n dialogClasses() {\n return [\n {\n [`modal-${this.size}`]: this.size,\n 'modal-dialog-centered': this.centered,\n 'modal-dialog-scrollable': this.scrollable\n },\n this.dialogClass\n ]\n },\n headerClasses() {\n return [\n {\n [`bg-${this.headerBgVariant}`]: this.headerBgVariant,\n [`text-${this.headerTextVariant}`]: this.headerTextVariant,\n [`border-${this.headerBorderVariant}`]: this.headerBorderVariant\n },\n this.headerClass\n ]\n },\n titleClasses() {\n return [{ 'sr-only': this.titleSrOnly }, this.titleClass]\n },\n bodyClasses() {\n return [\n {\n [`bg-${this.bodyBgVariant}`]: this.bodyBgVariant,\n [`text-${this.bodyTextVariant}`]: this.bodyTextVariant\n },\n this.bodyClass\n ]\n },\n footerClasses() {\n return [\n {\n [`bg-${this.footerBgVariant}`]: this.footerBgVariant,\n [`text-${this.footerTextVariant}`]: this.footerTextVariant,\n [`border-${this.footerBorderVariant}`]: this.footerBorderVariant\n },\n this.footerClass\n ]\n },\n modalOuterStyle() {\n // Styles needed for proper stacking of modals\n return {\n position: 'absolute',\n zIndex: this.zIndex\n }\n },\n slotScope() {\n return {\n ok: this.onOk,\n cancel: this.onCancel,\n close: this.onClose,\n hide: this.hide,\n visible: this.isVisible\n }\n },\n computeIgnoreEnforceFocusSelector() {\n // Normalize to an single selector with selectors separated by `,`\n return concat(this.ignoreEnforceFocusSelector)\n .filter(identity)\n .join(',')\n .trim()\n }\n },\n watch: {\n visible(newVal, oldVal) {\n if (newVal !== oldVal) {\n this[newVal ? 'show' : 'hide']()\n }\n }\n },\n created() {\n // Define non-reactive properties\n this._observer = null\n },\n mounted() {\n // Set initial z-index as queried from the DOM\n this.zIndex = modalManager.getBaseZIndex()\n // Listen for events from others to either open or close ourselves\n // and listen to all modals to enable/disable enforce focus\n this.listenOnRoot('bv::show::modal', this.showHandler)\n this.listenOnRoot('bv::hide::modal', this.hideHandler)\n this.listenOnRoot('bv::toggle::modal', this.toggleHandler)\n // Listen for `bv:modal::show events`, and close ourselves if the\n // opening modal not us\n this.listenOnRoot('bv::modal::show', this.modalListener)\n // Initially show modal?\n if (this.visible === true) {\n this.$nextTick(this.show)\n }\n },\n beforeDestroy() {\n // Ensure everything is back to normal\n if (this._observer) {\n this._observer.disconnect()\n this._observer = null\n }\n if (this.isVisible) {\n this.isVisible = false\n this.isShow = false\n this.isTransitioning = false\n }\n },\n methods: {\n // Private method to update the v-model\n updateModel(val) {\n if (val !== this.visible) {\n this.$emit('change', val)\n }\n },\n // Private method to create a BvModalEvent object\n buildEvent(type, options = {}) {\n return new BvModalEvent(type, {\n // Default options\n cancelable: false,\n target: this.$refs.modal || this.$el || null,\n relatedTarget: null,\n trigger: null,\n // Supplied options\n ...options,\n // Options that can't be overridden\n vueTarget: this,\n componentId: this.safeId()\n })\n },\n // Public method to show modal\n show() {\n if (this.isVisible || this.isOpening) {\n // If already open, or in the process of opening, do nothing\n /* istanbul ignore next */\n return\n }\n /* istanbul ignore next */\n if (this.isClosing) {\n // If we are in the process of closing, wait until hidden before re-opening\n /* istanbul ignore next */\n this.$once('hidden', this.show)\n /* istanbul ignore next */\n return\n }\n this.isOpening = true\n // Set the element to return focus to when closed\n this.return_focus = this.return_focus || this.getActiveElement()\n const showEvt = this.buildEvent('show', {\n cancelable: true\n })\n this.emitEvent(showEvt)\n // Don't show if canceled\n if (showEvt.defaultPrevented || this.isVisible) {\n this.isOpening = false\n // Ensure the v-model reflects the current state\n this.updateModel(false)\n return\n }\n // Show the modal\n this.doShow()\n },\n // Public method to hide modal\n hide(trigger = '') {\n if (!this.isVisible || this.isClosing) {\n /* istanbul ignore next */\n return\n }\n this.isClosing = true\n const hideEvt = this.buildEvent('hide', {\n cancelable: trigger !== 'FORCE',\n trigger: trigger || null\n })\n // We emit specific event for one of the three built-in buttons\n if (trigger === 'ok') {\n this.$emit('ok', hideEvt)\n } else if (trigger === 'cancel') {\n this.$emit('cancel', hideEvt)\n } else if (trigger === 'headerclose') {\n this.$emit('close', hideEvt)\n }\n this.emitEvent(hideEvt)\n // Hide if not canceled\n if (hideEvt.defaultPrevented || !this.isVisible) {\n this.isClosing = false\n // Ensure v-model reflects current state\n this.updateModel(true)\n return\n }\n // Stop observing for content changes\n if (this._observer) {\n this._observer.disconnect()\n this._observer = null\n }\n // Trigger the hide transition\n this.isVisible = false\n // Update the v-model\n this.updateModel(false)\n },\n // Public method to toggle modal visibility\n toggle(triggerEl) {\n if (triggerEl) {\n this.return_focus = triggerEl\n }\n if (this.isVisible) {\n this.hide('toggle')\n } else {\n this.show()\n }\n },\n // Private method to get the current document active element\n getActiveElement() {\n if (isBrowser) {\n const activeElement = document.activeElement\n // Note: On IE 11, `document.activeElement` may be null.\n // So we test it for truthiness first.\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3206\n // Returning focus to document.body may cause unwanted scrolls, so we\n // exclude setting focus on body\n if (activeElement && activeElement !== document.body && activeElement.focus) {\n // Preset the fallback return focus value if it is not set\n // `document.activeElement` should be the trigger element that was clicked or\n // in the case of using the v-model, which ever element has current focus\n // Will be overridden by some commands such as toggle, etc.\n return activeElement\n }\n }\n return null\n },\n // Private method to get a list of all tabable elements within modal content\n getTabables() {\n // Find all tabable elements in the modal content\n // Assumes users have not used tabindex > 0 on elements!\n return selectAll(TABABLE_SELECTOR, this.$refs.content)\n .filter(isVisible)\n .filter(i => i.tabIndex > -1 && !i.disabled)\n },\n // Private method to finish showing modal\n doShow() {\n /* istanbul ignore next: commenting out for now until we can test stacking */\n if (modalManager.modalsAreOpen && this.noStacking) {\n // If another modal(s) is already open, wait for it(them) to close\n this.listenOnRootOnce('bv::modal::hidden', this.doShow)\n return\n }\n modalManager.registerModal(this)\n // Place modal in DOM\n this.isHidden = false\n this.$nextTick(() => {\n // We do this in `$nextTick()` to ensure the modal is in DOM first\n // before we show it\n this.isVisible = true\n this.isOpening = false\n // Update the v-model\n this.updateModel(true)\n this.$nextTick(() => {\n // In a nextTick in case modal content is lazy\n // Observe changes in modal content and adjust if necessary\n this._observer = observeDom(\n this.$refs.content,\n this.checkModalOverflow.bind(this),\n OBSERVER_CONFIG\n )\n })\n })\n },\n // Transition handlers\n onBeforeEnter() {\n this.isTransitioning = true\n this.setResizeEvent(true)\n },\n onEnter() {\n this.isBlock = true\n // We add the `show` class 1 frame later\n // `requestAF()` runs the callback before the next repaint, so we need\n // two calls to guarantee the next frame has been rendered\n requestAF(() => {\n requestAF(() => {\n this.isShow = true\n })\n })\n },\n onAfterEnter() {\n this.checkModalOverflow()\n this.isTransitioning = false\n // We use `requestAF()` to allow transition hooks to complete\n // before passing control over to the other handlers\n // This will allow users to not have to use `$nextTick()` or `requestAF()`\n // when trying to pre-focus an element\n requestAF(() => {\n this.emitEvent(this.buildEvent('shown'))\n this.setEnforceFocus(true)\n this.$nextTick(() => {\n // Delayed in a `$nextTick()` to allow users time to pre-focus\n // an element if the wish\n this.focusFirst()\n })\n })\n },\n onBeforeLeave() {\n this.isTransitioning = true\n this.setResizeEvent(false)\n this.setEnforceFocus(false)\n },\n onLeave() {\n // Remove the 'show' class\n this.isShow = false\n },\n onAfterLeave() {\n this.isBlock = false\n this.isTransitioning = false\n this.isModalOverflowing = false\n this.isHidden = true\n this.$nextTick(() => {\n this.isClosing = false\n modalManager.unregisterModal(this)\n this.returnFocusTo()\n // TODO: Need to find a way to pass the `trigger` property\n // to the `hidden` event, not just only the `hide` event\n this.emitEvent(this.buildEvent('hidden'))\n })\n },\n // Event emitter\n emitEvent(bvModalEvt) {\n const type = bvModalEvt.type\n // We emit on root first incase a global listener wants to cancel\n // the event first before the instance emits its event\n this.emitOnRoot(`bv::modal::${type}`, bvModalEvt, bvModalEvt.componentId)\n this.$emit(type, bvModalEvt)\n },\n // UI event handlers\n onDialogMousedown() {\n // Watch to see if the matching mouseup event occurs outside the dialog\n // And if it does, cancel the clickOut handler\n const modal = this.$refs.modal\n const onceModalMouseup = evt => {\n eventOff(modal, 'mouseup', onceModalMouseup, EVENT_OPTIONS_NO_CAPTURE)\n if (evt.target === modal) {\n this.ignoreBackdropClick = true\n }\n }\n eventOn(modal, 'mouseup', onceModalMouseup, EVENT_OPTIONS_NO_CAPTURE)\n },\n onClickOut(evt) {\n if (this.ignoreBackdropClick) {\n // Click was initiated inside the modal content, but finished outside.\n // Set by the above onDialogMousedown handler\n this.ignoreBackdropClick = false\n return\n }\n // Do nothing if not visible, backdrop click disabled, or element\n // that generated click event is no longer in document body\n if (!this.isVisible || this.noCloseOnBackdrop || !contains(document.body, evt.target)) {\n return\n }\n // If backdrop clicked, hide modal\n if (!contains(this.$refs.content, evt.target)) {\n this.hide('backdrop')\n }\n },\n onOk() {\n this.hide('ok')\n },\n onCancel() {\n this.hide('cancel')\n },\n onClose() {\n this.hide('headerclose')\n },\n onEsc(evt) {\n // If ESC pressed, hide modal\n if (evt.keyCode === KeyCodes.ESC && this.isVisible && !this.noCloseOnEsc) {\n this.hide('esc')\n }\n },\n // Document focusin listener\n focusHandler(evt) {\n // If focus leaves modal content, bring it back\n const content = this.$refs.content\n const { target } = evt\n if (\n this.noEnforceFocus ||\n !this.isTop ||\n !this.isVisible ||\n !content ||\n document === target ||\n contains(content, target) ||\n (this.computeIgnoreEnforceFocusSelector &&\n closest(this.computeIgnoreEnforceFocusSelector, target, true))\n ) {\n return\n }\n const tabables = this.getTabables()\n const { bottomTrap, topTrap } = this.$refs\n if (bottomTrap && target === bottomTrap) {\n // If user pressed TAB out of modal into our bottom trab trap element\n // Find the first tabable element in the modal content and focus it\n if (attemptFocus(tabables[0])) {\n // Focus was successful\n return\n }\n } else if (topTrap && target === topTrap) {\n // If user pressed CTRL-TAB out of modal and into our top tab trap element\n // Find the last tabable element in the modal content and focus it\n if (attemptFocus(tabables[tabables.length - 1])) {\n // Focus was successful\n return\n }\n }\n // Otherwise focus the modal content container\n content.focus({ preventScroll: true })\n },\n // Turn on/off focusin listener\n setEnforceFocus(on) {\n this.listenDocument(on, 'focusin', this.focusHandler)\n },\n // Resize listener\n setResizeEvent(on) {\n this.listenWindow(on, 'resize', this.checkModalOverflow)\n this.listenWindow(on, 'orientationchange', this.checkModalOverflow)\n },\n // Root listener handlers\n showHandler(id, triggerEl) {\n if (id === this.safeId()) {\n this.return_focus = triggerEl || this.getActiveElement()\n this.show()\n }\n },\n hideHandler(id) {\n if (id === this.safeId()) {\n this.hide('event')\n }\n },\n toggleHandler(id, triggerEl) {\n if (id === this.safeId()) {\n this.toggle(triggerEl)\n }\n },\n modalListener(bvEvt) {\n // If another modal opens, close this one if stacking not permitted\n if (this.noStacking && bvEvt.vueTarget !== this) {\n this.hide()\n }\n },\n // Focus control handlers\n focusFirst() {\n // Don't try and focus if we are SSR\n if (isBrowser) {\n requestAF(() => {\n const modal = this.$refs.modal\n const content = this.$refs.content\n const activeElement = this.getActiveElement()\n // If the modal contains the activeElement, we don't do anything\n if (modal && content && !(activeElement && contains(content, activeElement))) {\n const ok = this.$refs['ok-button']\n const cancel = this.$refs['cancel-button']\n const close = this.$refs['close-button']\n // Focus the appropriate button or modal content wrapper\n const autoFocus = this.autoFocusButton\n const el =\n autoFocus === 'ok' && ok\n ? ok.$el || ok\n : autoFocus === 'cancel' && cancel\n ? cancel.$el || cancel\n : autoFocus === 'close' && close\n ? close.$el || close\n : content\n // Focus the element\n attemptFocus(el)\n if (el === content) {\n // Make sure top of modal is showing (if longer than the viewport)\n this.$nextTick(() => {\n modal.scrollTop = 0\n })\n }\n }\n })\n }\n },\n returnFocusTo() {\n // Prefer `returnFocus` prop over event specified\n // `return_focus` value\n let el = this.returnFocus || this.return_focus || null\n this.return_focus = null\n this.$nextTick(() => {\n // Is el a string CSS selector?\n el = isString(el) ? select(el) : el\n if (el) {\n // Possibly could be a component reference\n el = el.$el || el\n attemptFocus(el)\n }\n })\n },\n checkModalOverflow() {\n if (this.isVisible) {\n const modal = this.$refs.modal\n this.isModalOverflowing = modal.scrollHeight > document.documentElement.clientHeight\n }\n },\n makeModal(h) {\n // Modal header\n let header = h()\n if (!this.hideHeader) {\n let modalHeader = this.normalizeSlot('modal-header', this.slotScope)\n if (!modalHeader) {\n let closeButton = h()\n if (!this.hideHeaderClose) {\n closeButton = h(\n BButtonClose,\n {\n ref: 'close-button',\n props: {\n content: this.headerCloseContent,\n disabled: this.isTransitioning,\n ariaLabel: this.headerCloseLabel,\n textVariant: this.headerCloseVariant || this.headerTextVariant\n },\n on: { click: this.onClose }\n },\n [this.normalizeSlot('modal-header-close')]\n )\n }\n const domProps =\n !this.hasNormalizedSlot('modal-title') && this.titleHtml\n ? { innerHTML: this.titleHtml }\n : {}\n modalHeader = [\n h(\n this.titleTag,\n {\n staticClass: 'modal-title',\n class: this.titleClasses,\n attrs: { id: this.safeId('__BV_modal_title_') },\n domProps\n },\n [this.normalizeSlot('modal-title', this.slotScope) || stripTags(this.title)]\n ),\n closeButton\n ]\n }\n header = h(\n 'header',\n {\n ref: 'header',\n staticClass: 'modal-header',\n class: this.headerClasses,\n attrs: { id: this.safeId('__BV_modal_header_') }\n },\n [modalHeader]\n )\n }\n\n // Modal body\n const body = h(\n 'div',\n {\n ref: 'body',\n staticClass: 'modal-body',\n class: this.bodyClasses,\n attrs: { id: this.safeId('__BV_modal_body_') }\n },\n this.normalizeSlot('default', this.slotScope)\n )\n\n // Modal footer\n let footer = h()\n if (!this.hideFooter) {\n let modalFooter = this.normalizeSlot('modal-footer', this.slotScope)\n if (!modalFooter) {\n let cancelButton = h()\n if (!this.okOnly) {\n const cancelHtml = this.cancelTitleHtml ? { innerHTML: this.cancelTitleHtml } : null\n cancelButton = h(\n BButton,\n {\n ref: 'cancel-button',\n props: {\n variant: this.cancelVariant,\n size: this.buttonSize,\n disabled: this.cancelDisabled || this.busy || this.isTransitioning\n },\n on: { click: this.onCancel }\n },\n [\n this.normalizeSlot('modal-cancel') ||\n (cancelHtml ? h('span', { domProps: cancelHtml }) : stripTags(this.cancelTitle))\n ]\n )\n }\n const okHtml = this.okTitleHtml ? { innerHTML: this.okTitleHtml } : null\n const okButton = h(\n BButton,\n {\n ref: 'ok-button',\n props: {\n variant: this.okVariant,\n size: this.buttonSize,\n disabled: this.okDisabled || this.busy || this.isTransitioning\n },\n on: { click: this.onOk }\n },\n [\n this.normalizeSlot('modal-ok') ||\n (okHtml ? h('span', { domProps: okHtml }) : stripTags(this.okTitle))\n ]\n )\n modalFooter = [cancelButton, okButton]\n }\n footer = h(\n 'footer',\n {\n ref: 'footer',\n staticClass: 'modal-footer',\n class: this.footerClasses,\n attrs: { id: this.safeId('__BV_modal_footer_') }\n },\n [modalFooter]\n )\n }\n\n // Assemble modal content\n const modalContent = h(\n 'div',\n {\n ref: 'content',\n staticClass: 'modal-content',\n class: this.contentClass,\n attrs: {\n role: 'document',\n id: this.safeId('__BV_modal_content_'),\n tabindex: '-1'\n }\n },\n [header, body, footer]\n )\n\n // Tab trap to prevent page from scrolling to next element in\n // tab index during enforce focus tab cycle\n let tabTrapTop = h()\n let tabTrapBottom = h()\n if (this.isVisible && !this.noEnforceFocus) {\n tabTrapTop = h('span', { ref: 'topTrap', attrs: { tabindex: '0' } })\n tabTrapBottom = h('span', { ref: 'bottomTrap', attrs: { tabindex: '0' } })\n }\n\n // Modal dialog wrapper\n const modalDialog = h(\n 'div',\n {\n ref: 'dialog',\n staticClass: 'modal-dialog',\n class: this.dialogClasses,\n on: { mousedown: this.onDialogMousedown }\n },\n [tabTrapTop, modalContent, tabTrapBottom]\n )\n\n // Modal\n let modal = h(\n 'div',\n {\n ref: 'modal',\n staticClass: 'modal',\n class: this.modalClasses,\n style: this.modalStyles,\n directives: [\n { name: 'show', rawName: 'v-show', value: this.isVisible, expression: 'isVisible' }\n ],\n attrs: {\n id: this.safeId(),\n role: 'dialog',\n 'aria-hidden': this.isVisible ? null : 'true',\n 'aria-modal': this.isVisible ? 'true' : null,\n 'aria-label': this.ariaLabel,\n 'aria-labelledby':\n this.hideHeader ||\n this.ariaLabel ||\n !(this.hasNormalizedSlot('modal-title') || this.titleHtml || this.title)\n ? null\n : this.safeId('__BV_modal_title_'),\n 'aria-describedby': this.safeId('__BV_modal_body_')\n },\n on: { keydown: this.onEsc, click: this.onClickOut }\n },\n [modalDialog]\n )\n\n // Wrap modal in transition\n // Sadly, we can't use BVTransition here due to the differences in\n // transition durations for .modal and .modal-dialog. Not until\n // issue https://github.com/vuejs/vue/issues/9986 is resolved\n modal = h(\n 'transition',\n {\n props: {\n enterClass: '',\n enterToClass: '',\n enterActiveClass: '',\n leaveClass: '',\n leaveActiveClass: '',\n leaveToClass: ''\n },\n on: {\n beforeEnter: this.onBeforeEnter,\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n beforeLeave: this.onBeforeLeave,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n },\n [modal]\n )\n\n // Modal backdrop\n let backdrop = h()\n if (!this.hideBackdrop && this.isVisible) {\n backdrop = h(\n 'div',\n { staticClass: 'modal-backdrop', attrs: { id: this.safeId('__BV_modal_backdrop_') } },\n [this.normalizeSlot('modal-backdrop')]\n )\n }\n backdrop = h(BVTransition, { props: { noFade: this.noFade } }, [backdrop])\n\n // If the parent has a scoped style attribute, and the modal\n // is portalled, add the scoped attribute to the modal wrapper\n const scopedStyleAttrs = !this.static ? this.scopedStyleAttrs : {}\n\n // Assemble modal and backdrop in an outer <div>\n return h(\n 'div',\n {\n key: `modal-outer-${this._uid}`,\n style: this.modalOuterStyle,\n attrs: { ...scopedStyleAttrs, ...this.$attrs, id: this.safeId('__BV_modal_outer_') }\n },\n [modal, backdrop]\n )\n }\n },\n render(h) {\n if (this.static) {\n return this.lazy && this.isHidden ? h() : this.makeModal(h)\n } else {\n return this.isHidden ? h() : h(BTransporterSingle, [this.makeModal(h)])\n }\n }\n})\n","import KeyCodes from '../../utils/key-codes'\nimport { getAttr, hasAttr, isDisabled, matches, select, setAttr } from '../../utils/dom'\nimport { EVENT_OPTIONS_PASSIVE, eventOn, eventOff } from '../../utils/events'\nimport { isString } from '../../utils/inspect'\nimport { keys } from '../../utils/object'\n\n// Emitted show event for modal\nconst EVENT_SHOW = 'bv::show::modal'\n\n// Prop name we use to store info on root element\nconst PROPERTY = '__bv_modal_directive__'\n\nconst getTarget = ({ modifiers = {}, arg, value }) => {\n // Try value, then arg, otherwise pick last modifier\n return isString(value) ? value : isString(arg) ? arg : keys(modifiers).reverse()[0]\n}\n\nconst getTriggerElement = el => {\n // If root element is a dropdown-item or nav-item, we\n // need to target the inner link or button instead\n return el && matches(el, '.dropdown-menu > li, li.nav-item') ? select('a, button', el) || el : el\n}\n\nconst setRole = trigger => {\n // Ensure accessibility on non button elements\n if (trigger && trigger.tagName !== 'BUTTON') {\n // Only set a role if the trigger element doesn't have one\n if (!hasAttr(trigger, 'role')) {\n setAttr(trigger, 'role', 'button')\n }\n // Add a tabindex is not a button or link, and tabindex is not provided\n if (trigger.tagName !== 'A' && !hasAttr(trigger, 'tabindex')) {\n setAttr(trigger, 'tabindex', '0')\n }\n }\n}\n\nconst bind = (el, binding, vnode) => {\n const target = getTarget(binding)\n const trigger = getTriggerElement(el)\n if (target && trigger) {\n const handler = evt => {\n // `currentTarget` is the element with the listener on it\n const currentTarget = evt.currentTarget\n if (!isDisabled(currentTarget)) {\n const type = evt.type\n const key = evt.keyCode\n // Open modal only if trigger is not disabled\n if (\n type === 'click' ||\n (type === 'keydown' && (key === KeyCodes.ENTER || key === KeyCodes.SPACE))\n ) {\n vnode.context.$root.$emit(EVENT_SHOW, target, currentTarget)\n }\n }\n }\n el[PROPERTY] = { handler, target, trigger }\n // If element is not a button, we add `role=\"button\"` for accessibility\n setRole(trigger)\n // Listen for click events\n eventOn(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE)\n if (trigger.tagName !== 'BUTTON' && getAttr(trigger, 'role') === 'button') {\n // If trigger isn't a button but has role button,\n // we also listen for `keydown.space` && `keydown.enter`\n eventOn(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE)\n }\n }\n}\n\nconst unbind = el => {\n const oldProp = el[PROPERTY] || {}\n const trigger = oldProp.trigger\n const handler = oldProp.handler\n if (trigger && handler) {\n eventOff(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE)\n eventOff(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE)\n eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE)\n eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE)\n }\n delete el[PROPERTY]\n}\n\nconst componentUpdated = (el, binding, vnode) => {\n const oldProp = el[PROPERTY] || {}\n const target = getTarget(binding)\n const trigger = getTriggerElement(el)\n if (target !== oldProp.target || trigger !== oldProp.trigger) {\n // We bind and rebind if the target or trigger changes\n unbind(el, binding, vnode)\n bind(el, binding, vnode)\n }\n // If trigger element is not a button, ensure `role=\"button\"`\n // is still set for accessibility\n setRole(trigger)\n}\n\nconst updated = () => {}\n\n/*\n * Export our directive\n */\nexport const VBModal = {\n inserted: componentUpdated,\n updated,\n componentUpdated,\n unbind\n}\n","// Plugin for adding `$bvModal` property to all Vue instances\nimport { BModal, props as modalProps } from '../modal'\nimport { concat } from '../../../utils/array'\nimport { getComponentConfig } from '../../../utils/config'\nimport { isUndefined, isFunction } from '../../../utils/inspect'\nimport {\n assign,\n keys,\n omit,\n defineProperty,\n defineProperties,\n readonlyDescriptor\n} from '../../../utils/object'\nimport { pluginFactory } from '../../../utils/plugins'\nimport { warn, warnNotClient, warnNoPromiseSupport } from '../../../utils/warn'\n\n// --- Constants ---\n\nconst PROP_NAME = '$bvModal'\nconst PROP_NAME_PRIV = '_bv__modal'\n\n// Base modal 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`\nconst BASE_PROPS = [\n 'id',\n ...keys(omit(modalProps, ['busy', 'lazy', 'noStacking', `static`, 'visible']))\n]\n\n// Fallback event resolver (returns undefined)\nconst defaultResolver = () => {}\n\n// Map prop names to modal slot names\nconst propsToSlots = {\n msgBoxContent: 'default',\n title: 'modal-title',\n okTitle: 'modal-ok',\n cancelTitle: 'modal-cancel'\n}\n\n// --- Utility methods ---\n\n// Method to filter only recognized props that are not undefined\nconst filterOptions = options => {\n return BASE_PROPS.reduce((memo, key) => {\n if (!isUndefined(options[key])) {\n memo[key] = options[key]\n }\n return memo\n }, {})\n}\n\n// Method to install `$bvModal` VM injection\nconst plugin = Vue => {\n // Create a private sub-component that extends BModal\n // which self-destructs after hidden\n // @vue/component\n const BMsgBox = Vue.extend({\n name: 'BMsgBox',\n extends: BModal,\n 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() {\n // Self destruct handler\n const handleDestroy = () => {\n const self = this\n this.$nextTick(() => {\n // In a `setTimeout()` to release control back to application\n setTimeout(() => self.$destroy(), 0)\n })\n }\n // Self destruct if parent destroyed\n this.$parent.$once('hook:destroyed', handleDestroy)\n // Self destruct after hidden\n this.$once('hidden', handleDestroy)\n // Self destruct on route change\n /* istanbul ignore if */\n if (this.$router && this.$route) {\n // Destroy ourselves if route changes\n /* istanbul ignore next */\n this.$once('hook:beforeDestroy', this.$watch('$router', handleDestroy))\n }\n // Show the `BMsgBox`\n this.show()\n }\n })\n\n // Method to generate the on-demand modal message box\n // Returns a promise that resolves to a value returned by the resolve\n const asyncMsgBox = ($parent, props, resolver = defaultResolver) => {\n if (warnNotClient(PROP_NAME) || warnNoPromiseSupport(PROP_NAME)) {\n /* istanbul ignore next */\n return\n }\n // Create an instance of `BMsgBox` component\n const msgBox = new BMsgBox({\n // We set parent as the local VM so these modals can emit events on\n // the app `$root`, as needed by things like tooltips and popovers\n // And it helps to ensure `BMsgBox` is destroyed when parent is destroyed\n parent: $parent,\n // Preset the prop values\n propsData: {\n ...filterOptions(getComponentConfig('BModal') || {}),\n // Defaults that user can override\n hideHeaderClose: true,\n hideHeader: !(props.title || props.titleHtml),\n // Add in (filtered) user supplied props\n ...omit(props, keys(propsToSlots)),\n // Props that can't be overridden\n lazy: false,\n busy: false,\n visible: false,\n noStacking: false,\n noEnforceFocus: false\n }\n })\n // Convert certain props to scoped slots\n keys(propsToSlots).forEach(prop => {\n if (!isUndefined(props[prop])) {\n // Can be a string, or array of VNodes.\n // Alternatively, user can use HTML version of prop to pass an HTML string.\n msgBox.$slots[propsToSlots[prop]] = concat(props[prop])\n }\n })\n // Return a promise that resolves when hidden, or rejects on destroyed\n return new Promise((resolve, reject) => {\n let resolved = false\n msgBox.$once('hook:destroyed', () => {\n if (!resolved) {\n /* istanbul ignore next */\n reject(new Error('BootstrapVue MsgBox destroyed before resolve'))\n }\n })\n msgBox.$on('hide', bvModalEvt => {\n if (!bvModalEvt.defaultPrevented) {\n const result = resolver(bvModalEvt)\n // If resolver didn't cancel hide, we resolve\n if (!bvModalEvt.defaultPrevented) {\n resolved = true\n resolve(result)\n }\n }\n })\n // Create a mount point (a DIV) and mount the msgBo which will trigger it to show\n const div = document.createElement('div')\n document.body.appendChild(div)\n msgBox.$mount(div)\n })\n }\n\n // Private utility method to open a user defined message box and returns a promise.\n // Not to be used directly by consumers, as this method may change calling syntax\n const makeMsgBox = ($parent, content, options = {}, resolver) => {\n if (\n !content ||\n warnNoPromiseSupport(PROP_NAME) ||\n warnNotClient(PROP_NAME) ||\n !isFunction(resolver)\n ) {\n /* istanbul ignore next */\n return\n }\n return asyncMsgBox($parent, { ...filterOptions(options), msgBoxContent: content }, resolver)\n }\n\n // BvModal instance class\n class BvModal {\n constructor(vm) {\n // Assign the new properties to this instance\n assign(this, { _vm: vm, _root: vm.$root })\n // Set these properties as read-only and non-enumerable\n defineProperties(this, {\n _vm: readonlyDescriptor(),\n _root: readonlyDescriptor()\n })\n }\n\n // --- Instance methods ---\n\n // Show modal with the specified ID args are for future use\n show(id, ...args) {\n if (id && this._root) {\n this._root.$emit('bv::show::modal', id, ...args)\n }\n }\n\n // Hide modal with the specified ID args are for future use\n hide(id, ...args) {\n if (id && this._root) {\n this._root.$emit('bv::hide::modal', id, ...args)\n }\n }\n\n // The following methods require Promise support!\n // IE 11 and others do not support Promise natively, so users\n // should have a Polyfill loaded (which they need anyways for IE 11 support)\n\n // Open a message box with OK button only and returns a promise\n msgBoxOk(message, options = {}) {\n // Pick the modal props we support from options\n const props = {\n ...options,\n // Add in overrides and our content prop\n okOnly: true,\n okDisabled: false,\n hideFooter: false,\n msgBoxContent: message\n }\n return makeMsgBox(this._vm, message, props, () => {\n // Always resolve to true for OK\n return true\n })\n }\n\n // Open a message box modal with OK and CANCEL buttons\n // and returns a promise\n msgBoxConfirm(message, options = {}) {\n // Set the modal props we support from options\n const props = {\n ...options,\n // Add in overrides and our content prop\n okOnly: false,\n okDisabled: false,\n cancelDisabled: false,\n hideFooter: false\n }\n return makeMsgBox(this._vm, message, props, bvModalEvt => {\n const trigger = bvModalEvt.trigger\n return trigger === 'ok' ? true : trigger === 'cancel' ? false : null\n })\n }\n }\n\n // Add our instance mixin\n Vue.mixin({\n beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvModal` for each VM\n this[PROP_NAME_PRIV] = new BvModal(this)\n }\n })\n\n // Define our read-only `$bvModal` instance property\n // Placed in an if just in case in HMR mode\n // eslint-disable-next-line no-prototype-builtins\n if (!Vue.prototype.hasOwnProperty(PROP_NAME)) {\n defineProperty(Vue.prototype, PROP_NAME, {\n get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n warn(`\"${PROP_NAME}\" must be accessed from a Vue instance \"this\" context.`, 'BModal')\n }\n return this[PROP_NAME_PRIV]\n }\n })\n }\n}\n\nexport const BVModalPlugin = /*#__PURE__*/ pluginFactory({\n plugins: { plugin }\n})\n","import { BModal } from './modal'\nimport { VBModal } from '../../directives/modal/modal'\nimport { BVModalPlugin } from './helpers/bv-modal'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst ModalPlugin = /*#__PURE__*/ pluginFactory({\n components: { BModal },\n directives: { VBModal },\n // $bvModal injection\n plugins: { BVModalPlugin }\n})\n\nexport { ModalPlugin, BModal }\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\n// -- Constants --\n\nexport const props = {\n tag: {\n type: String,\n default: 'ul'\n },\n fill: {\n type: Boolean,\n default: false\n },\n justified: {\n type: Boolean,\n default: false\n },\n align: {\n type: String,\n default: null\n },\n tabs: {\n type: Boolean,\n default: false\n },\n pills: {\n type: Boolean,\n default: false\n },\n vertical: {\n type: Boolean,\n default: false\n },\n small: {\n type: Boolean,\n default: false\n },\n cardHeader: {\n // Set to true if placing in a card header\n type: Boolean,\n default: false\n }\n}\n\n// -- Utils --\n\nconst computeJustifyContent = value => {\n // Normalize value\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value\n return `justify-content-${value}`\n}\n\n// @vue/component\nexport const BNav = /*#__PURE__*/ Vue.extend({\n name: 'BNav',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'nav',\n class: {\n 'nav-tabs': props.tabs,\n 'nav-pills': props.pills && !props.tabs,\n 'card-header-tabs': !props.vertical && props.cardHeader && props.tabs,\n 'card-header-pills': !props.vertical && props.cardHeader && props.pills && !props.tabs,\n 'flex-column': props.vertical,\n 'nav-fill': !props.vertical && props.fill,\n 'nav-justified': !props.vertical && props.justified,\n [computeJustifyContent(props.align)]: !props.vertical && props.align,\n small: props.small\n }\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { BLink, propsFactory as linkPropsFactory } from '../link/link'\n\nexport const props = linkPropsFactory()\n\n// @vue/component\nexport const BNavItem = /*#__PURE__*/ Vue.extend({\n name: 'BNavItem',\n functional: true,\n props: {\n ...props,\n linkAttrs: {\n type: Object,\n default: () => {}\n },\n linkClasses: {\n type: [String, Object, Array],\n default: null\n }\n },\n render(h, { props, data, listeners, children }) {\n // We transfer the listeners to the link\n delete data.on\n return h(\n 'li',\n mergeData(data, {\n staticClass: 'nav-item'\n }),\n [\n h(\n BLink,\n {\n staticClass: 'nav-link',\n class: props.linkClasses,\n attrs: props.linkAttrs,\n props,\n on: listeners\n },\n children\n )\n ]\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\n\nexport const props = {}\n\n// @vue/component\nexport const BNavText = /*#__PURE__*/ Vue.extend({\n name: 'BNavText',\n functional: true,\n props,\n render(h, { data, children }) {\n return h('li', mergeData(data, { staticClass: 'navbar-text' }), children)\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { omit } from '../../utils/object'\nimport { BForm, props as BFormProps } from '../form/form'\n\nexport const props = {\n ...omit(BFormProps, ['inline']),\n formClass: {\n type: [String, Array, Object],\n default: null\n }\n}\n\n// @vue/component\nexport const BNavForm = /*#__PURE__*/ Vue.extend({\n name: 'BNavForm',\n functional: true,\n props,\n render(h, { props, data, children, listeners = {} }) {\n const attrs = data.attrs\n // The following data properties are cleared out\n // as they will be passed to BForm directly\n data.attrs = {}\n data.on = {}\n const $form = h(\n BForm,\n {\n class: props.formClass,\n props: { ...props, inline: true },\n attrs,\n on: listeners\n },\n children\n )\n return h('li', mergeData(data, { staticClass: 'form-inline' }), [$form])\n }\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'\n\n// -- Constants --\n\nexport const props = pluckProps(\n ['text', 'html', 'menuClass', 'toggleClass', 'noCaret', 'role', 'lazy'],\n BDropdownProps\n)\n\n// @vue/component\nexport const BNavItemDropdown = /*#__PURE__*/ Vue.extend({\n name: 'BNavItemDropdown',\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props,\n computed: {\n isNav() {\n // Signal to dropdown mixin that we are in a navbar\n return true\n },\n dropdownClasses() {\n return [this.directionClass, { show: this.visible }]\n },\n menuClasses() {\n return [\n this.menuClass,\n {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }\n ]\n },\n toggleClasses() {\n return [this.toggleClass, { 'dropdown-toggle-no-caret': this.noCaret }]\n }\n },\n render(h) {\n const button = h(\n BLink,\n {\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 [\n this.$slots['button-content'] ||\n this.$slots.text ||\n h('span', { domProps: htmlOrText(this.html, this.text) })\n ]\n )\n const menu = h(\n 'ul',\n {\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', { hide: this.hide }) : [h()]\n )\n return h(\n 'li',\n {\n staticClass: 'nav-item b-nav-dropdown dropdown',\n class: this.dropdownClasses,\n attrs: { id: this.safeId() }\n },\n [button, menu]\n )\n }\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'\n\nconst NavPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BNav,\n BNavItem,\n BNavText,\n BNavForm,\n BNavItemDropdown,\n BNavItemDd: BNavItemDropdown,\n BNavDropdown: BNavItemDropdown,\n BNavDd: BNavItemDropdown\n },\n plugins: {\n DropdownPlugin\n }\n})\n\nexport { NavPlugin, BNav, BNavItem, BNavText, BNavForm, BNavItemDropdown }\n","import Vue from '../../utils/vue'\nimport { getComponentConfig, getBreakpoints } from '../../utils/config'\nimport { isString } from '../../utils/inspect'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\nconst NAME = 'BNavbar'\n\nexport const 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: () => getComponentConfig(NAME, 'variant')\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}\n\n// @vue/component\nexport const BNavbar = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [normalizeSlotMixin],\n props,\n provide() {\n return { bvNavbar: this }\n },\n computed: {\n breakpointClass() {\n let breakpoint = null\n const xs = getBreakpoints()[0]\n const toggleable = this.toggleable\n if (toggleable && isString(toggleable) && toggleable !== xs) {\n breakpoint = `navbar-expand-${toggleable}`\n } else if (toggleable === false) {\n breakpoint = 'navbar-expand'\n }\n\n return breakpoint\n }\n },\n render(h) {\n return h(\n this.tag,\n {\n staticClass: 'navbar',\n class: [\n {\n 'd-print': this.print,\n 'sticky-top': this.sticky,\n [`navbar-${this.type}`]: this.type,\n [`bg-${this.variant}`]: this.variant,\n [`fixed-${this.fixed}`]: this.fixed\n },\n this.breakpointClass\n ],\n attrs: {\n role: this.tag === 'nav' ? null : 'navigation'\n }\n },\n [this.normalizeSlot('default')]\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport pluckProps from '../../utils/pluck-props'\nimport { props as BNavProps } from '../nav/nav'\n\n// -- Constants --\n\nexport const props = pluckProps(['tag', 'fill', 'justified', 'align', 'small'], BNavProps)\n\n// -- Utils --\n\nconst computeJustifyContent = value => {\n // Normalize value\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value\n return `justify-content-${value}`\n}\n\n// @vue/component\nexport const BNavbarNav = /*#__PURE__*/ Vue.extend({\n name: 'BNavbarNav',\n functional: true,\n props,\n render(h, { props, data, children }) {\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'navbar-nav',\n class: {\n 'nav-fill': props.fill,\n 'nav-justified': props.justified,\n [computeJustifyContent(props.align)]: props.align,\n small: props.small\n }\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport pluckProps from '../../utils/pluck-props'\nimport { BLink, propsFactory } from '../link/link'\n\nconst linkProps = propsFactory()\nlinkProps.href.default = undefined\nlinkProps.to.default = undefined\n\nexport const props = {\n ...linkProps,\n tag: {\n type: String,\n default: 'div'\n }\n}\n\n// @vue/component\nexport const BNavbarBrand = /*#__PURE__*/ Vue.extend({\n name: 'BNavbarBrand',\n functional: true,\n props,\n render(h, { props, data, children }) {\n const isLink = props.to || props.href\n const tag = isLink ? BLink : props.tag\n\n return h(\n tag,\n mergeData(data, {\n staticClass: 'navbar-brand',\n props: isLink ? pluckProps(linkProps, props) : {}\n }),\n children\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport listenOnRootMixin from '../../mixins/listen-on-root'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport { getComponentConfig } from '../../utils/config'\n\nconst NAME = 'BNavbarToggle'\n\n// TODO: Switch to using VBToggle directive, will reduce code footprint\n\n// Events we emit on $root\nconst EVENT_TOGGLE = 'bv::toggle::collapse'\n\n// Events we listen to on $root\nconst EVENT_STATE = 'bv::collapse::state'\n// This private event is NOT to be documented as people should not be using it.\nconst EVENT_STATE_SYNC = 'bv::collapse::sync::state'\n\n// @vue/component\nexport const BNavbarToggle = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [listenOnRootMixin, normalizeSlotMixin],\n props: {\n label: {\n type: String,\n default: () => getComponentConfig(NAME, 'label')\n },\n target: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n toggleState: false\n }\n },\n created() {\n this.listenOnRoot(EVENT_STATE, this.handleStateEvt)\n this.listenOnRoot(EVENT_STATE_SYNC, this.handleStateEvt)\n },\n methods: {\n onClick(evt) {\n this.$emit('click', evt)\n if (!evt.defaultPrevented) {\n this.$root.$emit(EVENT_TOGGLE, this.target)\n }\n },\n handleStateEvt(id, state) {\n if (id === this.target) {\n this.toggleState = state\n }\n }\n },\n render(h) {\n return h(\n 'button',\n {\n class: ['navbar-toggler'],\n attrs: {\n type: 'button',\n 'aria-label': this.label,\n 'aria-controls': this.target,\n 'aria-expanded': this.toggleState ? 'true' : 'false'\n },\n on: { click: this.onClick }\n },\n [this.normalizeSlot('default') || h('span', { class: ['navbar-toggler-icon'] })]\n )\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'\n\nconst NavbarPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BNavbar,\n BNavbarNav,\n BNavbarBrand,\n BNavbarToggle,\n BNavToggle: BNavbarToggle\n },\n plugins: {\n NavPlugin,\n CollapsePlugin,\n DropdownPlugin\n }\n})\n\nexport { NavbarPlugin, BNavbar, BNavbarNav, BNavbarBrand, BNavbarToggle }\n","/**\n * @param {number} length\n * @return {Array}\n */\nconst range = length => Array.apply(null, { length })\n\nexport default range\n","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'\n\n// Common props, computed, data, render function, and methods\n// for `<b-pagination>` and `<b-pagination-nav>`\n\n// --- Constants ---\n\n// Threshold of limit size when we start/stop showing ellipsis\nconst ELLIPSIS_THRESHOLD = 3\n\n// Default # of buttons limit\nconst DEFAULT_LIMIT = 5\n\n// --- Helper methods ---\n\n// Make an array of N to N+X\nconst makePageArray = (startNumber, numberOfPages) =>\n range(numberOfPages).map((val, i) => ({ number: startNumber + i, classes: null }))\n\n// Sanitize the provided limit value (converting to a number)\nconst sanitizeLimit = val => {\n const limit = toInteger(val) || 1\n return limit < 1 ? DEFAULT_LIMIT : limit\n}\n\n// Sanitize the provided current page number (converting to a number)\nconst sanitizeCurrentPage = (val, numberOfPages) => {\n const page = toInteger(val) || 1\n return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page\n}\n\n// Links don't normally respond to SPACE, so we add that\n// functionality via this handler\nconst onSpaceKey = evt => {\n if (evt.keyCode === KeyCodes.SPACE) {\n evt.preventDefault() // Stop page from scrolling\n evt.stopImmediatePropagation()\n evt.stopPropagation()\n // Trigger the click event on the link\n evt.currentTarget.click()\n return false\n }\n}\n\n// --- Props ---\nexport const props = {\n disabled: {\n type: Boolean,\n default: false\n },\n value: {\n type: [Number, String],\n default: null,\n validator(value) /* istanbul ignore next */ {\n const number = toInteger(value)\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 return true\n }\n },\n limit: {\n type: [Number, String],\n default: DEFAULT_LIMIT,\n validator(value) /* istanbul ignore next */ {\n const number = toInteger(value)\n if (isNaN(number) || number < 1) {\n warn('Prop \"limit\" must be a number greater than \"0\"', 'BPagination')\n return false\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: '\\u00AB' // '«'\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 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 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: '\\u00BB' // '»'\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 ellipsisClass: {\n type: [String, Array, Object],\n default: null\n }\n}\n\n// @vue/component\nexport default {\n mixins: [normalizeSlotMixin],\n model: {\n prop: 'value',\n event: 'input'\n },\n props,\n data() {\n const 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() {\n return this.size ? `pagination-${this.size}` : ''\n },\n alignment() {\n const align = this.align\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 return ''\n },\n styleClass() {\n return this.pills ? 'b-pagination-pills' : ''\n },\n computedCurrentPage() {\n return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages)\n },\n paginationParams() {\n // Determine if we should show the the ellipsis\n const limit = this.localLimit\n const numberOfPages = this.localNumberOfPages\n const currentPage = this.computedCurrentPage\n const hideEllipsis = this.hideEllipsis\n const firstNumber = this.firstNumber\n const lastNumber = this.lastNumber\n let showFirstDots = false\n let showLastDots = false\n let numberOfLinks = limit\n let 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 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 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 startNumber = currentPage - Math.floor(numberOfLinks / 2)\n }\n // Sanity checks\n /* istanbul ignore if */\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 if (showFirstDots && firstNumber && startNumber < 4) {\n numberOfLinks = numberOfLinks + 2\n startNumber = 1\n showFirstDots = false\n }\n const lastPageNumber = startNumber + numberOfLinks - 1\n if (showLastDots && lastNumber && lastPageNumber > numberOfPages - 3) {\n numberOfLinks = numberOfLinks + (lastPageNumber === numberOfPages - 2 ? 2 : 3)\n showLastDots = false\n }\n // Special handling for lower limits (where ellipsis are never shown)\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 numberOfLinks = Math.min(numberOfLinks, numberOfPages - startNumber + 1)\n return { showFirstDots, showLastDots, numberOfLinks, startNumber }\n },\n pageList() {\n // Generates the pageList array\n const { numberOfLinks, startNumber } = this.paginationParams\n const currentPage = this.computedCurrentPage\n // Generate list of page numbers\n const pages = makePageArray(startNumber, numberOfLinks)\n // 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 if (pages.length > 3) {\n const idx = currentPage - startNumber\n // THe following is a bootstrap-vue custom utility class\n const classes = 'bv-d-xs-down-none'\n if (idx === 0) {\n // Keep leftmost 3 buttons visible when current page is first page\n for (let 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 (let 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 (let i = 0; i < idx - 1; i++) {\n // hide some left button(s)\n pages[i].classes = classes\n }\n for (let i = pages.length - 1; i > idx + 1; i--) {\n // hide some right button(s)\n pages[i].classes = classes\n }\n }\n }\n return pages\n }\n },\n watch: {\n value(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages)\n }\n },\n 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(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localLimit = sanitizeLimit(newValue)\n }\n }\n },\n created() {\n // Set our default values in data\n this.localLimit = sanitizeLimit(this.limit)\n this.$nextTick(() => {\n // Sanity check\n this.currentPage =\n this.currentPage > this.localNumberOfPages ? this.localNumberOfPages : this.currentPage\n })\n },\n methods: {\n handleKeyNav(evt) {\n const { keyCode, shiftKey } = evt\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() {\n // Return only buttons that are visible\n return selectAll('a.page-link', this.$el).filter(btn => isVisible(btn))\n },\n setBtnFocus(btn) {\n btn.focus()\n },\n focusCurrent() {\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(() => {\n const btn = this.getButtons().find(\n el => toInteger(getAttr(el, 'aria-posinset')) === this.computedCurrentPage\n )\n if (btn && btn.focus) {\n this.setBtnFocus(btn)\n } else {\n // Fallback if current page is not in button list\n this.focusFirst()\n }\n })\n },\n focusFirst() {\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(() => {\n const btn = this.getButtons().find(el => !isDisabled(el))\n if (btn && btn.focus && btn !== document.activeElement) {\n this.setBtnFocus(btn)\n }\n })\n },\n focusLast() {\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(() => {\n const btn = this.getButtons()\n .reverse()\n .find(el => !isDisabled(el))\n if (btn && btn.focus && btn !== document.activeElement) {\n this.setBtnFocus(btn)\n }\n })\n },\n focusPrev() {\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(() => {\n const buttons = this.getButtons()\n const idx = buttons.indexOf(document.activeElement)\n if (idx > 0 && !isDisabled(buttons[idx - 1]) && buttons[idx - 1].focus) {\n this.setBtnFocus(buttons[idx - 1])\n }\n })\n },\n focusNext() {\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(() => {\n const buttons = this.getButtons()\n const idx = buttons.indexOf(document.activeElement)\n const cnt = buttons.length - 1\n if (idx < cnt && !isDisabled(buttons[idx + 1]) && buttons[idx + 1].focus) {\n this.setBtnFocus(buttons[idx + 1])\n }\n })\n }\n },\n render(h) {\n const buttons = []\n const numberOfPages = this.localNumberOfPages\n const pageNumbers = this.pageList.map(p => p.number)\n const disabled = this.disabled\n const { showFirstDots, showLastDots } = this.paginationParams\n const currentPage = this.computedCurrentPage\n const fill = this.align === 'fill'\n\n // Helper function and flag\n const isActivePage = pageNum => pageNum === currentPage\n const noCurrentPage = this.currentPage < 1\n\n // Factory function for prev/next/first/last buttons\n const makeEndBtn = (linkTo, ariaLabel, btnSlot, btnText, btnClass, pageTest, key) => {\n const isDisabled =\n disabled || isActivePage(pageTest) || noCurrentPage || linkTo < 1 || linkTo > numberOfPages\n const pageNum = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo\n const scope = { disabled: isDisabled, page: pageNum, index: pageNum - 1 }\n const btnContent = this.normalizeSlot(btnSlot, scope) || toString(btnText) || h()\n const inner = h(\n isDisabled ? 'span' : BLink,\n {\n staticClass: 'page-link',\n props: isDisabled ? {} : this.linkProps(linkTo),\n attrs: {\n role: 'menuitem',\n tabindex: isDisabled ? null : '-1',\n 'aria-label': ariaLabel,\n 'aria-controls': this.ariaControls || null,\n 'aria-disabled': isDisabled ? 'true' : null\n },\n on: isDisabled\n ? {}\n : {\n click: evt => {\n this.onClick(linkTo, evt)\n },\n keydown: onSpaceKey\n }\n },\n [btnContent]\n )\n return h(\n 'li',\n {\n key,\n staticClass: 'page-item',\n class: [{ disabled: isDisabled, 'flex-fill': fill }, btnClass],\n attrs: {\n role: 'presentation',\n 'aria-hidden': isDisabled ? 'true' : null\n }\n },\n [inner]\n )\n }\n\n // Ellipsis factory\n const makeEllipsis = isLast => {\n return h(\n 'li',\n {\n key: `ellipsis-${isLast ? 'last' : 'first'}`,\n staticClass: 'page-item',\n class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : '', this.ellipsisClass],\n attrs: { role: 'separator' }\n },\n [\n h('span', { staticClass: 'page-link' }, [\n this.normalizeSlot('ellipsis-text') || toString(this.ellipsisText) || h()\n ])\n ]\n )\n }\n\n // Page button factory\n const makePageButton = (page, idx) => {\n const active = isActivePage(page.number) && !noCurrentPage\n // Active page will have tabindex of 0, or if no current page and first page button\n const tabIndex = disabled ? null : active || (noCurrentPage && idx === 0) ? '0' : '-1'\n const attrs = {\n role: 'menuitemradio',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-controls': this.ariaControls || null,\n 'aria-label': isFunction(this.labelPage)\n ? this.labelPage(page.number)\n : `${this.labelPage} ${page.number}`,\n 'aria-checked': active ? 'true' : 'false',\n 'aria-posinset': page.number,\n 'aria-setsize': numberOfPages,\n // ARIA \"roving tabindex\" method\n tabindex: tabIndex\n }\n const btnContent = toString(this.makePage(page.number))\n const scope = {\n page: page.number,\n index: page.number - 1,\n content: btnContent,\n active,\n disabled\n }\n const inner = h(\n disabled ? 'span' : BLink,\n {\n props: disabled ? {} : this.linkProps(page.number),\n staticClass: 'page-link',\n attrs,\n on: disabled\n ? {}\n : {\n click: evt => {\n this.onClick(page.number, evt)\n },\n keydown: onSpaceKey\n }\n },\n [this.normalizeSlot('page', scope) || btnContent]\n )\n return h(\n 'li',\n {\n key: `page-${page.number}`,\n staticClass: 'page-item',\n class: [{ disabled, active, 'flex-fill': fill }, page.classes, this.pageClass],\n attrs: { role: 'presentation' }\n },\n [inner]\n )\n }\n\n // Goto first page button\n // Don't render button when `hideGotoEndButtons` or `firstNumber` is set\n let $firstPageBtn = h()\n if (!this.firstNumber && !this.hideGotoEndButtons) {\n $firstPageBtn = makeEndBtn(\n 1,\n this.labelFirstPage,\n 'first-text',\n this.firstText,\n this.firstClass,\n 1,\n 'pagination-goto-first'\n )\n }\n buttons.push($firstPageBtn)\n\n // Goto previous page button\n buttons.push(\n makeEndBtn(\n currentPage - 1,\n this.labelPrevPage,\n 'prev-text',\n this.prevText,\n this.prevClass,\n 1,\n 'pagination-goto-prev'\n )\n )\n\n // Show first (1) button?\n buttons.push(this.firstNumber && pageNumbers[0] !== 1 ? makePageButton({ number: 1 }, 0) : h())\n\n // First ellipsis\n buttons.push(showFirstDots ? makeEllipsis(false) : h())\n\n // Individual page links\n this.pageList.forEach((page, idx) => {\n const offset = showFirstDots && this.firstNumber && pageNumbers[0] !== 1 ? 1 : 0\n buttons.push(makePageButton(page, idx + offset))\n })\n\n // Last ellipsis\n buttons.push(showLastDots ? makeEllipsis(true) : h())\n\n // Show last page button?\n buttons.push(\n this.lastNumber && pageNumbers[pageNumbers.length - 1] !== numberOfPages\n ? makePageButton({ number: numberOfPages }, -1)\n : h()\n )\n\n // Goto next page button\n buttons.push(\n makeEndBtn(\n currentPage + 1,\n this.labelNextPage,\n 'next-text',\n this.nextText,\n this.nextClass,\n numberOfPages,\n 'pagination-goto-next'\n )\n )\n\n // Goto last page button\n // Don't render button when `hideGotoEndButtons` or `lastNumber` is set\n let $lastPageBtn = h()\n if (!this.lastNumber && !this.hideGotoEndButtons) {\n $lastPageBtn = makeEndBtn(\n numberOfPages,\n this.labelLastPage,\n 'last-text',\n this.lastText,\n this.lastClass,\n numberOfPages,\n 'pagination-goto-last'\n )\n }\n buttons.push($lastPageBtn)\n\n // Assemble the pagination buttons\n const $pagination = h(\n 'ul',\n {\n ref: 'ul',\n staticClass: 'pagination',\n class: ['b-pagination', this.btnSize, this.alignment, this.styleClass],\n attrs: {\n role: 'menubar',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-label': this.ariaLabel || null\n },\n on: { keydown: this.handleKeyNav }\n },\n buttons\n )\n\n // If we are `<b-pagination-nav>`, wrap in `<nav>` wrapper\n if (this.isNav) {\n return h(\n 'nav',\n {\n attrs: {\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-hidden': disabled ? 'true' : 'false'\n }\n },\n [$pagination]\n )\n }\n\n return $pagination\n }\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'\n\n// --- Constants ---\n\nconst NAME = 'BPagination'\n\nconst DEFAULT_PER_PAGE = 20\nconst DEFAULT_TOTAL_ROWS = 0\n\nconst props = {\n size: {\n type: String,\n default: () => getComponentConfig(NAME, 'size')\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}\n\n// --- Helper functions ---\n\n// Sanitize the provided per page number (converting to a number)\nconst sanitizePerPage = val => {\n const perPage = toInteger(val) || DEFAULT_PER_PAGE\n return perPage < 1 ? 1 : perPage\n}\n\n// Sanitize the provided total rows number (converting to a number)\nconst sanitizeTotalRows = val => {\n const totalRows = toInteger(val) || DEFAULT_TOTAL_ROWS\n return totalRows < 0 ? 0 : totalRows\n}\n\n// The render function is brought in via the `paginationMixin`\n// @vue/component\nexport const BPagination = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [paginationMixin],\n props,\n computed: {\n numberOfPages() {\n const result = Math.ceil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage))\n return result < 1 ? 1 : result\n },\n 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(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 (\n newVal.numberOfPages !== oldVal.numberOfPages &&\n this.currentPage > newVal.numberOfPages\n ) {\n // If `numberOfPages` changes and is less than\n // the `currentPage` number, reset to page 1\n this.currentPage = 1\n }\n }\n this.localNumberOfPages = newVal.numberOfPages\n }\n },\n created() {\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages\n // Set the initial page value\n const currentPage = toInteger(this.value) || 0\n if (currentPage > 0) {\n this.currentPage = currentPage\n } else {\n this.$nextTick(() => {\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() {\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(num, evt) {\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 }\n // Update the v-model\n this.currentPage = num\n // Emit event triggered by user interaction\n this.$emit('change', this.currentPage)\n this.$nextTick(() => {\n // Keep the current button focused if possible\n const target = evt.target\n if (isVisible(target) && this.$el.contains(target) && target.focus) {\n target.focus()\n } else {\n this.focusCurrent()\n }\n })\n },\n makePage(pageNum) {\n return pageNum\n },\n linkProps() {\n // Always '#' for pagination component\n return { href: '#' }\n }\n }\n})\n","import { BPagination } from './pagination'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst PaginationPlugin = /*#__PURE__*/ pluginFactory({\n components: { BPagination }\n})\n\nexport { PaginationPlugin, BPagination }\n","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'\n\nconst NAME = 'BPaginationNav'\n\n// Sanitize the provided number of pages (converting to a number)\nexport const sanitizeNumberOfPages = value => {\n const numberOfPages = toInteger(value) || 1\n return numberOfPages < 1 ? 1 : numberOfPages\n}\n\nconst props = {\n size: {\n type: String,\n default: () => getComponentConfig(NAME, 'size')\n },\n numberOfPages: {\n type: [Number, String],\n default: 1,\n validator(value) /* istanbul ignore next */ {\n const num = toInteger(value)\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 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\n // default: undefined\n },\n exact: {\n type: Boolean,\n default: false\n },\n exactActiveClass: {\n type: String\n // default: undefined\n },\n // nuxt-link specific prop(s)\n noPrefetch: {\n type: Boolean,\n default: false\n }\n}\n\n// The render function is brought in via the pagination mixin\n// @vue/component\nexport const BPaginationNav = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [paginationMixin],\n props,\n computed: {\n // Used by render function to trigger wrapping in '<nav>' element\n isNav() {\n return true\n },\n computedValue() {\n // Returns the value prop as a number or `null` if undefined or < 1\n const val = toInteger(this.value)\n return isNaN(val) || val < 1 ? null : val\n }\n },\n watch: {\n numberOfPages() {\n this.$nextTick(() => {\n this.setNumberOfPages()\n })\n },\n pages() {\n this.$nextTick(() => {\n this.setNumberOfPages()\n })\n }\n },\n created() {\n this.setNumberOfPages()\n },\n mounted() {\n if (this.$router) {\n // We only add the watcher if vue router is detected\n this.$watch('$route', () => {\n this.$nextTick(() => {\n requestAF(() => {\n this.guessCurrentPage()\n })\n })\n })\n }\n },\n methods: {\n setNumberOfPages() {\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 this.$nextTick(() => {\n this.guessCurrentPage()\n })\n },\n onClick(pageNum, evt) {\n // Dont do anything if clicking the current active page\n if (pageNum === this.currentPage) {\n return\n }\n requestAF(() => {\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 this.currentPage = pageNum\n this.$emit('change', pageNum)\n })\n this.$nextTick(() => {\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 const target = evt.currentTarget || evt.target\n target.blur()\n } catch (e) {}\n })\n },\n getPageInfo(pageNum) {\n if (!isArray(this.pages) || this.pages.length === 0 || isUndefined(this.pages[pageNum - 1])) {\n const link = `${this.baseUrl}${pageNum}`\n return {\n link: this.useRouter ? { path: link } : link,\n text: toString(pageNum)\n }\n }\n const info = this.pages[pageNum - 1]\n if (isObject(info)) {\n const link = info.link\n return {\n // Normalize link for router use\n link: isObject(link) ? link : this.useRouter ? { path: link } : link,\n // Make sure text has a value\n text: toString(info.text || pageNum)\n }\n } else {\n return { link: toString(info), text: toString(pageNum) }\n }\n },\n makePage(pageNum) {\n const info = this.getPageInfo(pageNum)\n if (this.pageGen && isFunction(this.pageGen)) {\n return this.pageGen(pageNum, info)\n }\n return info.text\n },\n makeLink(pageNum) {\n const info = this.getPageInfo(pageNum)\n if (this.linkGen && isFunction(this.linkGen)) {\n return this.linkGen(pageNum, info)\n }\n return info.link\n },\n linkProps(pageNum) {\n const link = this.makeLink(pageNum)\n const 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 if (this.useRouter || isObject(link)) {\n props.to = link\n } else {\n props.href = link\n }\n return props\n },\n resolveLink(to = '') {\n // Given a to (or href string), convert to normalized route-like structure\n // Works only client side!!\n let link\n try {\n // Convert the `to` to a HREF via a temporary `a` tag\n link = document.createElement('a')\n link.href = computeHref({ to }, 'a', '/', '/')\n // 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 document.body.appendChild(link)\n // Once href is assigned, the link will be normalized to the full URL bits\n const { pathname, hash, search } = link\n // Remove link from document\n document.body.removeChild(link)\n // Return the location in a route-like object\n return { path: pathname, hash: hash, query: parseQuery(search) }\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 return {}\n }\n },\n resolveRoute(to = '') {\n // Given a to (or href string), convert to normalized route location structure\n // works only when router available!!\n try {\n const route = this.$router.resolve(to, this.$route).route\n return { path: route.path, hash: route.hash, query: route.query }\n } catch (e) {\n /* istanbul ignore next */\n return {}\n }\n },\n guessCurrentPage() {\n let guess = this.computedValue\n const $router = this.$router\n const $route = this.$route\n // This section only occurs if we are client side, or server-side with $router\n /* istanbul ignore else */\n if (!this.noPageDetect && !guess && (isBrowser || (!isBrowser && $router))) {\n // Current route (if router available)\n const currRoute =\n $router && $route ? { path: $route.path, hash: $route.hash, query: $route.query } : {}\n // Current page full HREF (if client side). Can't be done as a computed prop!\n const loc = isBrowser ? window.location || document.location : null\n const currLink = loc\n ? { path: loc.pathname, hash: loc.hash, query: parseQuery(loc.search) }\n : {}\n // Loop through the possible pages looking for a match until found\n for (let page = 1; !guess && page <= this.localNumberOfPages; page++) {\n const to = this.makeLink(page)\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 /* istanbul ignore next */\n guess = -1\n }\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 this.currentPage = guess > 0 ? guess : 0\n }\n }\n})\n","import { BPaginationNav } from './pagination-nav'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst PaginationNavPlugin = /*#__PURE__*/ pluginFactory({\n components: { BPaginationNav }\n})\n\nexport { PaginationNavPlugin, BPaginationNav }\n","// 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//\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'\n\nconst NAME = 'BVPopper'\n\nconst 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}\n\nconst 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}\n\n// @vue/component\nexport const 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() {\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() /* istanbul ignore next */ {\n // Overridden by template component\n return 'unknown'\n },\n popperConfig() {\n const placement = this.placement\n return {\n placement: this.getAttachment(placement),\n modifiers: {\n offset: { offset: this.getOffset(placement) },\n flip: { behavior: this.fallbackPlacement },\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: { element: '.arrow' },\n preventOverflow: {\n padding: this.boundaryPadding,\n boundariesElement: this.boundary\n }\n },\n 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: data => {\n // Handle flipping arrow classes\n this.popperPlacementChange(data)\n }\n }\n }\n },\n created() {\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\n // Ensure we show as we mount\n this.localShow = true\n // Create popper instance before shown\n this.$on('show', el => {\n this.popperCreate(el)\n })\n // Self destruct once hidden\n this.$on('hidden', () => {\n this.$nextTick(this.$destroy)\n })\n // If parent is destroyed, ensure we are destroyed\n this.$parent.$once('hook:destroyed', this.$destroy)\n },\n 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() {\n // TBD\n },\n updated() {\n // Update popper if needed\n // TODO: Should this be a watcher on `this.popperConfig` instead?\n this.popperUpdate()\n },\n beforeDestroy() {\n this.popperDestroy()\n },\n destroyed() {\n // Make sure template is removed from DOM\n const el = this.$el\n el && el.parentNode && el.parentNode.removeChild(el)\n },\n methods: {\n // \"Public\" method to trigger hide template\n hide() {\n this.localShow = false\n },\n // Private\n getAttachment(placement) {\n return AttachmentMap[String(placement).toUpperCase()] || 'auto'\n },\n getOffset(placement) {\n if (!this.offset) {\n // Could set a ref for the arrow element\n const arrow = this.$refs.arrow || select('.arrow', this.$el)\n const arrowOffset =\n (parseFloat(getCS(arrow).width) || 0) + (parseFloat(this.arrowPadding) || 0)\n switch (OffsetMap[String(placement).toUpperCase()] || 0) {\n case +1:\n /* istanbul ignore next: can't test in JSDOM */\n return `+50%p - ${arrowOffset}px`\n case -1:\n /* istanbul ignore next: can't test in JSDOM */\n return `-50%p + ${arrowOffset}px`\n default:\n return 0\n }\n }\n /* istanbul ignore next */\n return this.offset\n },\n popperCreate(el) {\n this.popperDestroy()\n // We use `el` rather than `this.$el` just in case the original\n // mountpoint root element type was changed by the template\n this.$_popper = new Popper(this.target, el, this.popperConfig)\n },\n popperDestroy() {\n this.$_popper && this.$_popper.destroy()\n this.$_popper = null\n },\n popperUpdate() {\n this.$_popper && this.$_popper.scheduleUpdate()\n },\n popperPlacementChange(data) {\n // Callback used by popper to adjust the arrow placement\n this.attachment = this.getAttachment(data.placement)\n },\n renderTemplate(h) /* istanbul ignore next */ {\n // Will be overridden by templates\n return h('div')\n }\n },\n render(h) {\n // Note: `show` and 'fade' classes are only appled during transition\n return h(\n BVTransition,\n {\n // Transitions as soon as mounted\n props: { appear: true, noFade: this.noFade },\n on: {\n // Events used by parent component/instance\n beforeEnter: el => this.$emit('show', el),\n afterEnter: el => this.$emit('shown', el),\n beforeLeave: el => this.$emit('hide', el),\n afterLeave: el => this.$emit('hidden', el)\n }\n },\n [this.localShow ? this.renderTemplate(h) : h()]\n )\n }\n})\n","import Vue from '../../../utils/vue'\nimport scopedStyleAttrsMixin from '../../../mixins/scoped-style-attrs'\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect'\nimport { BVPopper } from './bv-popper'\n\nconst NAME = 'BVTooltipTemplate'\n\n// @vue/component\nexport const 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() {\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() {\n return 'tooltip'\n },\n templateClasses() {\n return [\n {\n // Disables pointer events to hide the tooltip when the user\n // hovers over its content\n noninteractive: !this.interactive,\n [`b-${this.templateType}-${this.variant}`]: this.variant,\n // `attachment` will come from BVToolpop\n [`bs-${this.templateType}-${this.attachment}`]: this.attachment\n },\n this.customClass\n ]\n },\n templateAttributes() {\n return {\n id: this.id,\n role: 'tooltip',\n tabindex: '-1',\n // Add the scoped style data attribute to the template root element\n ...this.scopedStyleAttrs\n }\n },\n templateListeners() {\n // Used for hover/focus trigger listeners\n return {\n mouseenter: evt => {\n /* istanbul ignore next: difficult to test in JSDOM */\n this.$emit('mouseenter', evt)\n },\n mouseleave: evt => {\n /* istanbul ignore next: difficult to test in JSDOM */\n this.$emit('mouseleave', evt)\n },\n focusin: evt => {\n /* istanbul ignore next: difficult to test in JSDOM */\n this.$emit('focusin', evt)\n },\n focusout: evt => {\n /* istanbul ignore next: difficult to test in JSDOM */\n this.$emit('focusout', evt)\n }\n }\n }\n },\n methods: {\n renderTemplate(h) {\n // Title can be a scoped slot function\n const $title = isFunction(this.title)\n ? this.title({})\n : isUndefinedOrNull(this.title)\n ? h()\n : this.title\n\n // Directive versions only\n const domProps = this.html && !isFunction(this.title) ? { innerHTML: this.title } : {}\n\n return h(\n 'div',\n {\n staticClass: 'tooltip b-tooltip',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n },\n [\n h('div', { ref: 'arrow', staticClass: 'arrow' }),\n h('div', { staticClass: 'tooltip-inner', domProps }, [$title])\n ]\n )\n }\n }\n})\n","// Tooltip \"Class\" (Built as a renderless Vue instance)\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\n\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 {\n closest,\n contains,\n getAttr,\n getById,\n hasAttr,\n hasClass,\n isDisabled,\n isElement,\n isVisible,\n removeAttr,\n select,\n setAttr\n} from '../../../utils/dom'\nimport { EVENT_OPTIONS_NO_CAPTURE, eventOn, eventOff, eventOnOff } from '../../../utils/events'\nimport {\n isFunction,\n isNumber,\n isPlainObject,\n isString,\n isUndefined,\n isUndefinedOrNull\n} 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'\n\nconst NAME = 'BVTooltip'\n\n// Modal container selector for appending tooltip/popover\nconst MODAL_SELECTOR = '.modal-content'\n// Modal `$root` hidden event\nconst MODAL_CLOSE_EVENT = 'bv::modal::hidden'\n\n// For dropdown sniffing\nconst DROPDOWN_CLASS = 'dropdown'\nconst DROPDOWN_OPEN_SELECTOR = '.dropdown-menu.show'\n\n// Data specific to popper and template\n// We don't use props, as we need reactivity (we can't pass reactive props)\nconst 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, // '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}\n\n// @vue/component\nexport const BVTooltip = /*#__PURE__*/ Vue.extend({\n name: NAME,\n props: {\n // None\n },\n data() {\n return {\n // BTooltip/BPopover/VBTooltip/VBPopover will update this data\n // Via the exposed updateData() method on this instance\n // BVPopover will override some of these defaults\n ...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() {\n // Overwritten by BVPopover\n return 'tooltip'\n },\n computedId() {\n return this.id || `__bv_${this.templateType}_${this._uid}__`\n },\n computedDelay() {\n // Normalizes delay into object form\n const delay = { show: 0, hide: 0 }\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 return delay\n },\n computedTriggers() {\n // Returns the triggers in sorted array form\n // TODO: Switch this to object form for easier lookup\n return concat(this.triggers)\n .filter(Boolean)\n .join(' ')\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .sort()\n },\n isWithActiveTrigger() {\n for (const trigger in this.activeTrigger) {\n if (this.activeTrigger[trigger]) {\n return true\n }\n }\n return false\n },\n 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(newTriggers, oldTriggers) {\n // Triggers have changed, so re-register them\n /* istanbul ignore next */\n if (!looseEqual(newTriggers, oldTriggers)) {\n this.$nextTick(() => {\n // Disable trigger listeners\n this.unListen()\n // Clear any active triggers that are no longer in the list of triggers\n oldTriggers.forEach(trigger => {\n if (!arrayIncludes(newTriggers, trigger)) {\n if (this.activeTrigger[trigger]) {\n this.activeTrigger[trigger] = false\n }\n }\n })\n // Re-enable the trigger listeners\n this.listen()\n })\n }\n },\n computedTemplateData() {\n // If any of the while open reactive \"props\" change,\n // ensure that the template updates accordingly\n this.handleTemplateUpdate()\n },\n disabled(newVal) {\n newVal ? this.disable() : this.enable()\n }\n },\n created() {\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)\n\n // Destroy ourselves when the parent is destroyed\n if (this.$parent) {\n this.$parent.$once('hook:beforeDestroy', this.$destroy)\n }\n\n this.$nextTick(() => {\n const target = this.getTarget()\n if (target && contains(document.body, target)) {\n // Copy the parent's scoped style attribute\n this.scopeId = getScopId(this.$parent)\n // Set up all trigger handlers and listeners\n this.listen()\n } else {\n /* istanbul ignore next */\n warn('Unable to find target element in document.', this.templateType)\n }\n })\n },\n updated() /* istanbul ignore next */ {\n // Usually called when the slots/data changes\n this.$nextTick(this.handleTemplateUpdate)\n },\n deactivated() /* istanbul ignore next */ {\n // In a keepalive that has been deactivated, so hide\n // the tooltip/popover if it is showing\n this.forceHide()\n },\n beforeDestroy() /* istanbul ignore next */ {\n // Remove all handler/listeners\n this.unListen()\n this.setWhileOpenListeners(false)\n // Clear any timeouts/intervals\n this.clearHoverTimeout()\n this.clearVisibilityInterval()\n // Destroy the template\n this.destroyTemplate()\n },\n methods: {\n // --- Methods for creating and destroying the template ---\n getTemplate() {\n // Overridden by BVPopover\n return BVTooltipTemplate\n },\n updateData(data = {}) {\n // Method for updating popper/template data\n // We only update data if it exists, and has not changed\n let titleUpdated = false\n keys(templateData).forEach(prop => {\n if (!isUndefined(data[prop]) && this[prop] !== data[prop]) {\n this[prop] = data[prop]\n if (prop === 'title') {\n titleUpdated = true\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() {\n // Creates the template instance and show it\n const container = this.getContainer()\n const Template = this.getTemplate()\n const $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 }))\n // We set the initial reactive data (values that can be changed while open)\n this.handleTemplateUpdate()\n // Template transition phase events (handled once only)\n // When the template has mounted, but not visibly shown yet\n $tip.$once('show', this.onTemplateShow)\n // When the template has completed showing\n $tip.$once('shown', this.onTemplateShown)\n // When the template has started to hide\n $tip.$once('hide', this.onTemplateHide)\n // When the template has completed hiding\n $tip.$once('hidden', this.onTemplateHidden)\n // When the template gets destroyed for any reason\n $tip.$once('hook:destroyed', this.destroyTemplate)\n // Convenience events from template\n // To save us from manually adding/removing DOM\n // listeners to tip element when it is open\n $tip.$on('focusin', this.handleEvent)\n $tip.$on('focusout', this.handleEvent)\n $tip.$on('mouseenter', this.handleEvent)\n $tip.$on('mouseleave', this.handleEvent)\n // Mount (which triggers the `show`)\n $tip.$mount(container.appendChild(document.createElement('div')))\n // Template will automatically remove its markup from DOM when hidden\n },\n 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()\n // Clear out any stragging active triggers\n this.clearActiveTriggers()\n // Reset the hover state\n this.$_hoverState = ''\n },\n // Destroy the template instance and reset state\n destroyTemplate() {\n this.setWhileOpenListeners(false)\n this.clearHoverTimeout()\n this.$_hoverState = ''\n this.clearActiveTriggers()\n this.localPlacementTarget = null\n try {\n this.$_tip && this.$_tip.$destroy()\n } catch {}\n this.$_tip = null\n this.removeAriaDescribedby()\n this.restoreTitle()\n this.localShow = false\n },\n getTemplateElement() {\n return this.$_tip ? this.$_tip.$el : null\n },\n handleTemplateUpdate() {\n // Update our template title/content \"props\"\n // So that the template updates accordingly\n const $tip = this.$_tip\n if ($tip) {\n const props = ['title', 'content', 'variant', 'customClass', 'noFade', 'interactive']\n // Only update the values if they have changed\n props.forEach(prop => {\n if ($tip[prop] !== this[prop]) {\n $tip[prop] = this[prop]\n }\n })\n }\n },\n // --- Show/Hide handlers ---\n // Show the tooltip\n show() {\n const target = this.getTarget()\n if (\n !target ||\n !contains(document.body, target) ||\n !isVisible(target) ||\n this.dropdownOpen() ||\n ((isUndefinedOrNull(this.title) || this.title === '') &&\n (isUndefinedOrNull(this.content) || this.content === ''))\n ) {\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 }\n // If tip already exists, exit early\n if (this.$_tip || this.localShow) {\n /* istanbul ignore next */\n return\n }\n // In the process of showing\n this.localShow = true\n // Create a cancelable BvEvent\n const showEvt = this.buildEvent('show', { cancelable: true })\n this.emitEvent(showEvt)\n // Don't show if event cancelled\n /* istanbul ignore next: ignore for now */\n if (showEvt.defaultPrevented) {\n // Destroy the template (if for some reason it was created)\n /* istanbul ignore next */\n this.destroyTemplate()\n /* istanbul ignore next */\n return\n }\n // Fix the title attribute on target\n this.fixTitle()\n // Set aria-describedby on target\n this.addAriaDescribedby()\n // Create and show the tooltip\n this.createTemplateAndShow()\n },\n hide(force = false) {\n // Hide the tooltip\n const tip = this.getTemplateElement()\n if (!tip || !this.localShow) {\n /* istanbul ignore next */\n this.restoreTitle()\n /* istanbul ignore next */\n return\n }\n\n // Emit cancelable BvEvent 'hide'\n // We disable cancelling if `force` is true\n const hideEvt = this.buildEvent('hide', { cancelable: !force })\n this.emitEvent(hideEvt)\n /* istanbul ignore next: ignore for now */\n if (hideEvt.defaultPrevented) {\n // Don't hide if event cancelled\n /* istanbul ignore next */\n return\n }\n\n // Tell the template to hide\n this.hideTemplate()\n },\n forceHide() {\n // Forcefully hides/destroys the template, regardless of any active triggers\n const tip = this.getTemplateElement()\n if (!tip || !this.localShow) {\n /* istanbul ignore next */\n return\n }\n // Disable while open listeners/watchers\n // This is also done in the template `hide` evt handler\n this.setWhileOpenListeners(false)\n // Clear any hover enter/leave event\n this.clearHoverTimeout()\n this.$_hoverState = ''\n this.clearActiveTriggers()\n // Disable the fade animation on the template\n if (this.$_tip) {\n this.$_tip.noFade = true\n }\n // Hide the tip (with force = true)\n this.hide(true)\n },\n enable() {\n this.$_enabled = true\n // Create a non-cancelable BvEvent\n this.emitEvent(this.buildEvent('enabled'))\n },\n disable() {\n this.$_enabled = false\n // Create a non-cancelable BvEvent\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() {\n // Enable while open listeners/watchers\n this.setWhileOpenListeners(true)\n },\n // When template show transition completes\n onTemplateShown() {\n const prevHoverState = this.$_hoverState\n this.$_hoverState = ''\n if (prevHoverState === 'out') {\n this.leave(null)\n }\n // Emit a non-cancelable BvEvent 'shown'\n this.emitEvent(this.buildEvent('shown'))\n },\n // When template is starting to hide\n 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() {\n // Destroy the template\n this.destroyTemplate()\n // Emit a non-cancelable BvEvent 'shown'\n this.emitEvent(this.buildEvent('hidden'))\n },\n // --- Utility methods ---\n getTarget() {\n // Handle case where target may be a component ref\n let target = this.target ? this.target.$el || this.target : null\n // If an ID\n target = isString(target) ? getById(target.replace(/^#/, '')) : target\n // If a function\n target = isFunction(target) ? target() : target\n // If an element ref\n return isElement(target) ? target : null\n },\n 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() {\n // Returns the ID of the trigger element\n const target = this.getTarget()\n return target && target.id ? target.id : null\n },\n getContainer() {\n // Handle case where container may be a component ref\n const container = this.container ? this.container.$el || this.container : false\n const body = document.body\n const target = this.getTarget()\n // 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 return container === false\n ? closest(MODAL_SELECTOR, target) || body\n : isString(container)\n ? getById(container.replace(/^#/, '')) || body\n : body\n },\n getBoundary() {\n return this.boundary ? this.boundary.$el || this.boundary : 'scrollParent'\n },\n isInModal() {\n const target = this.getTarget()\n return target && closest(MODAL_SELECTOR, target)\n },\n isDropdown() {\n // Returns true if trigger is a dropdown\n const target = this.getTarget()\n return target && hasClass(target, DROPDOWN_CLASS)\n },\n dropdownOpen() {\n // Returns true if trigger is a dropdown and the dropdown menu is open\n const target = this.getTarget()\n return this.isDropdown() && target && select(DROPDOWN_OPEN_SELECTOR, target)\n },\n clearHoverTimeout() {\n if (this.$_hoverTimeout) {\n clearTimeout(this.$_hoverTimeout)\n this.$_hoverTimeout = null\n }\n },\n clearVisibilityInterval() {\n if (this.$_visibleInterval) {\n clearInterval(this.$_visibleInterval)\n this.$_visibleInterval = null\n }\n },\n clearActiveTriggers() {\n for (const trigger in this.activeTrigger) {\n this.activeTrigger[trigger] = false\n }\n },\n addAriaDescribedby() {\n // Add aria-describedby on trigger element, without removing any other IDs\n const target = this.getTarget()\n let desc = getAttr(target, 'aria-describedby') || ''\n desc = desc\n .split(/\\s+/)\n .concat(this.computedId)\n .join(' ')\n .trim()\n // Update/add aria-described by\n setAttr(target, 'aria-describedby', desc)\n },\n removeAriaDescribedby() {\n // Remove aria-describedby on trigger element, without removing any other IDs\n const target = this.getTarget()\n let desc = getAttr(target, 'aria-describedby') || ''\n desc = desc\n .split(/\\s+/)\n .filter(d => d !== this.computedId)\n .join(' ')\n .trim()\n // Update or remove aria-describedby\n if (desc) {\n /* istanbul ignore next */\n setAttr(target, 'aria-describedby', desc)\n } else {\n removeAttr(target, 'aria-describedby')\n }\n },\n fixTitle() {\n // If the target has a title attribute, null it out and\n // store on data-title\n const target = this.getTarget()\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() {\n // If target had a title, restore the title attribute\n // and remove the data-title attribute\n const target = this.getTarget()\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(type, options = {}) {\n // Defaults to a non-cancellable event\n return new BvEvent(type, {\n cancelable: false,\n target: this.getTarget(),\n relatedTarget: this.getTemplateElement() || null,\n componentId: this.computedId,\n vueTarget: this,\n // Add in option overrides\n ...options\n })\n },\n emitEvent(bvEvt) {\n // Emits a BvEvent on $root and this instance\n const evtName = bvEvt.type\n const $root = this.$root\n if ($root && $root.$emit) {\n // Emit an event on $root\n $root.$emit(`bv::${this.templateType}::${evtName}`, bvEvt)\n }\n this.$emit(evtName, bvEvt)\n },\n // --- Event handler setup methods ---\n listen() {\n // Enable trigger event handlers\n const el = this.getTarget()\n if (!el) {\n /* istanbul ignore next */\n return\n }\n // Listen for global show/hide events\n this.setRootListener(true)\n // Set up our listeners on the target trigger element\n this.computedTriggers.forEach(trigger => {\n if (trigger === 'click') {\n eventOn(el, 'click', this.handleEvent, EVENT_OPTIONS_NO_CAPTURE)\n } else if (trigger === 'focus') {\n eventOn(el, 'focusin', this.handleEvent, EVENT_OPTIONS_NO_CAPTURE)\n eventOn(el, 'focusout', this.handleEvent, EVENT_OPTIONS_NO_CAPTURE)\n } else if (trigger === 'blur') {\n // Used to close $tip when element looses focus\n /* istanbul ignore next */\n eventOn(el, 'focusout', this.handleEvent, EVENT_OPTIONS_NO_CAPTURE)\n } else if (trigger === 'hover') {\n eventOn(el, 'mouseenter', this.handleEvent, EVENT_OPTIONS_NO_CAPTURE)\n eventOn(el, 'mouseleave', this.handleEvent, EVENT_OPTIONS_NO_CAPTURE)\n }\n }, this)\n },\n unListen() /* istanbul ignore next */ {\n // Remove trigger event handlers\n const events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave']\n const target = this.getTarget()\n\n // Stop listening for global show/hide/enable/disable events\n this.setRootListener(false)\n\n // Clear out any active target listeners\n events.forEach(evt => {\n target && eventOff(target, evt, this.handleEvent, EVENT_OPTIONS_NO_CAPTURE)\n }, this)\n },\n setRootListener(on) {\n // Listen for global `bv::{hide|show}::{tooltip|popover}` hide request event\n const $root = this.$root\n if ($root) {\n const method = on ? '$on' : '$off'\n const type = this.templateType\n $root[method](`bv::hide::${type}`, this.doHide)\n $root[method](`bv::show::${type}`, this.doShow)\n $root[method](`bv::disable::${type}`, this.doDisable)\n $root[method](`bv::enable::${type}`, this.doEnable)\n }\n },\n setWhileOpenListeners(on) {\n // Events that are only registered when the template is showing\n // Modal close events\n this.setModalListener(on)\n // Dropdown open events (if we are attached to a dropdown)\n this.setDropdownListener(on)\n // Periodic $element visibility check\n // For handling when tip target is in <keepalive>, tabs, carousel, etc\n this.visibleCheck(on)\n // On-touch start listeners\n this.setOnTouchStartListener(on)\n },\n // Handler for periodic visibility check\n visibleCheck(on) {\n this.clearVisibilityInterval()\n const target = this.getTarget()\n const tip = this.getTemplateElement()\n if (on) {\n this.$_visibleInterval = setInterval(() => {\n if (tip && this.localShow && (!target.parentNode || !isVisible(target))) {\n // Target element is no longer visible or not in DOM, so force-hide the tooltip\n this.forceHide()\n }\n }, 100)\n }\n },\n 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(on) /* istanbul ignore next: JSDOM doesn't support `ontouchstart` */ {\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(el => {\n eventOnOff(on, el, 'mouseover', this.$_noop)\n })\n }\n },\n setDropdownListener(on) {\n const target = this.getTarget()\n if (!target || !this.$root || !this.isDropdown) {\n return\n }\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 if (target.__vue__) {\n target.__vue__[on ? '$on' : '$off']('shown', this.forceHide)\n }\n },\n // --- Event handlers ---\n handleEvent(evt) {\n // General trigger event handler\n // target is the trigger element\n const target = this.getTarget()\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 const type = evt.type\n const 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 (\n (type === 'focusout' &&\n (arrayIncludes(triggers, 'focus') || arrayIncludes(triggers, 'blur'))) ||\n (type === 'mouseleave' && arrayIncludes(triggers, 'hover'))\n ) {\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 const tip = this.getTemplateElement()\n // `evtTarget` is the element which is loosing focus/hover and\n const evtTarget = evt.target\n // `relatedTarget` is the element gaining focus/hover\n const relatedTarget = evt.relatedTarget\n /* istanbul ignore next */\n if (\n // From tip to target\n (tip && contains(tip, evtTarget) && contains(target, relatedTarget)) ||\n // From target to tip\n (tip && contains(target, evtTarget) && contains(tip, relatedTarget)) ||\n // Within tip\n (tip && contains(tip, evtTarget) && contains(tip, relatedTarget)) ||\n // Within target\n (contains(target, evtTarget) && contains(target, relatedTarget))\n ) {\n // If focus/hover moves within `tip` and `target`, don't trigger a leave\n return\n }\n // Otherwise trigger a leave\n this.leave(evt)\n }\n },\n 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(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(id) /*istanbul ignore next: ignore for now */ {\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(id) /*istanbul ignore next: ignore for now */ {\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() {\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return\n }\n this.activeTrigger.click = !this.activeTrigger.click\n if (this.isWithActiveTrigger) {\n this.enter(null)\n } else {\n /* istanbul ignore next */\n this.leave(null)\n }\n },\n toggle() /* istanbul ignore next */ {\n // Manual toggle handler\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return\n }\n // Should we register as an active trigger?\n // this.activeTrigger.manual = !this.activeTrigger.manual\n if (this.localShow) {\n this.leave(null)\n } else {\n this.enter(null)\n }\n },\n enter(evt = null) {\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 if (this.localShow || this.$_hoverState === 'in') {\n this.$_hoverState = 'in'\n return\n }\n this.clearHoverTimeout()\n this.$_hoverState = 'in'\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(() => {\n /* istanbul ignore else */\n if (this.$_hoverState === 'in') {\n this.show()\n } else if (!this.localShow) {\n this.restoreTitle()\n }\n }, this.computedDelay.show)\n }\n },\n leave(evt = null) {\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 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 if (this.isWithActiveTrigger) {\n return\n }\n this.clearHoverTimeout()\n this.$_hoverState = 'out'\n if (!this.computedDelay.hide) {\n this.hide()\n } else {\n this.$_hoverTimeout = setTimeout(() => {\n if (this.$_hoverState === 'out') {\n this.hide()\n }\n }, this.computedDelay.hide)\n }\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'\n\nconst NAME = 'BTooltip'\n\n// @vue/component\nexport const BTooltip = /*#__PURE__*/ Vue.extend({\n name: NAME,\n props: {\n title: {\n type: String\n // default: undefined\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(value) {\n return (\n (isArray(value) && value.every(v => isString(v))) ||\n arrayIncludes(['flip', 'clockwise', 'counterclockwise'], value)\n )\n }\n },\n variant: {\n type: String,\n default: () => getComponentConfig(NAME, 'variant')\n },\n customClass: {\n type: String,\n default: () => getComponentConfig(NAME, 'customClass')\n },\n delay: {\n type: [Number, Object, String],\n default: () => getComponentConfig(NAME, 'delay')\n },\n boundary: {\n // String: scrollParent, window, or viewport\n // Element: element reference\n // Object: Vue component\n type: [String, HTMLElement, Object],\n default: () => getComponentConfig(NAME, 'boundary')\n },\n boundaryPadding: {\n type: [Number, String],\n default: () => getComponentConfig(NAME, 'boundaryPadding')\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]\n // default: undefined\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() {\n return {\n localShow: this.show,\n localTitle: '',\n localContent: ''\n }\n },\n computed: {\n 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() {\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(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(newVal) {\n if (newVal) {\n this.doDisable()\n } else {\n this.doEnable()\n }\n },\n localShow(newVal) {\n // TODO: May need to be done in a `$nextTick()`\n this.$emit('update:show', newVal)\n },\n templateData() {\n this.$nextTick(() => {\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() {\n this.$nextTick(this.updateContent)\n }\n },\n created() {\n // Non reactive properties\n this.$_bv_toolpop = null\n },\n 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() {\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)\n // Destroy the tip instance\n this.$_bv_toolpop && this.$_bv_toolpop.$destroy()\n this.$_bv_toolpop = null\n },\n mounted() {\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(() => {\n // Load the on demand child instance\n const Component = this.getComponent()\n // Ensure we have initial content\n this.updateContent()\n // Pass down the scoped style attribute if available\n const scopeId = getScopId(this) || getScopId(this.$parent)\n // Create the instance\n const $toolpop = (this.$_bv_toolpop = new Component({\n parent: this,\n // Pass down the scoped style ID\n _scopeId: scopeId || undefined\n }))\n // Set the initial data\n $toolpop.updateData(this.templateData)\n // Set listeners\n $toolpop.$on('show', this.onShow)\n $toolpop.$on('shown', this.onShown)\n $toolpop.$on('hide', this.onHide)\n $toolpop.$on('hidden', this.onHidden)\n $toolpop.$on('disabled', this.onDisabled)\n $toolpop.$on('enabled', this.onEnabled)\n // Initially disabled?\n if (this.disabled) {\n // Initially disabled\n this.doDisable()\n }\n // Listen to open signals from others\n this.$on('open', this.doOpen)\n // Listen to close signals from others\n this.$on('close', this.doClose)\n // Listen to disable signals from others\n this.$on('disable', this.doDisable)\n // Listen to enable signals from others\n this.$on('enable', this.doEnable)\n // Initially show tooltip?\n if (this.localShow) {\n this.$_bv_toolpop && this.$_bv_toolpop.show()\n }\n })\n },\n methods: {\n getComponent() {\n // Overridden by BPopover\n return BVTooltip\n },\n 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(val) {\n val = isUndefinedOrNull(val) ? '' : val\n // We only update the value if it has changed\n if (this.localTitle !== val) {\n this.localTitle = val\n }\n },\n setContent(val) {\n val = isUndefinedOrNull(val) ? '' : val\n // We only update the value if it has changed\n if (this.localContent !== val) {\n this.localContent = val\n }\n },\n // --- Template event handlers ---\n onShow(bvEvt) {\n // Placeholder\n this.$emit('show', bvEvt)\n if (bvEvt) {\n this.localShow = !bvEvt.defaultPrevented\n }\n },\n onShown(bvEvt) {\n // Tip is now showing\n this.localShow = true\n this.$emit('shown', bvEvt)\n },\n onHide(bvEvt) {\n this.$emit('hide', bvEvt)\n },\n onHidden(bvEvt) {\n // Tip is no longer showing\n this.$emit('hidden', bvEvt)\n this.localShow = false\n },\n 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(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() {\n !this.localShow && this.$_bv_toolpop && this.$_bv_toolpop.show()\n },\n doClose() {\n this.localShow && this.$_bv_toolpop && this.$_bv_toolpop.hide()\n },\n doDisable() {\n this.$_bv_toolpop && this.$_bv_toolpop.disable()\n },\n doEnable() {\n this.$_bv_toolpop && this.$_bv_toolpop.enable()\n }\n },\n 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})\n","import Vue from '../../../utils/vue'\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect'\n\nimport { BVTooltipTemplate } from '../../tooltip/helpers/bv-tooltip-template'\n\nconst NAME = 'BVPopoverTemplate'\n\n// @vue/component\nexport const BVPopoverTemplate = /*#__PURE__*/ Vue.extend({\n name: NAME,\n extends: BVTooltipTemplate,\n computed: {\n templateType() {\n return 'popover'\n }\n },\n methods: {\n renderTemplate(h) {\n // Title and content could be a scoped slot function\n const $title = isFunction(this.title) ? this.title({}) : this.title\n const $content = isFunction(this.content) ? this.content({}) : this.content\n\n // Directive usage only\n const titleDomProps = this.html && !isFunction(this.title) ? { innerHTML: this.title } : {}\n const contentDomProps =\n this.html && !isFunction(this.content) ? { innerHTML: this.content } : {}\n\n return h(\n 'div',\n {\n staticClass: 'popover b-popover',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n },\n [\n h('div', { ref: 'arrow', staticClass: 'arrow' }),\n isUndefinedOrNull($title) || $title === ''\n ? h()\n : h('h3', { staticClass: 'popover-header', domProps: titleDomProps }, [$title]),\n isUndefinedOrNull($content) || $content === ''\n ? h()\n : h('div', { staticClass: 'popover-body', domProps: contentDomProps }, [$content])\n ]\n )\n }\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\n\nimport Vue from '../../../utils/vue'\nimport { BVTooltip } from '../../tooltip/helpers/bv-tooltip'\nimport { BVPopoverTemplate } from './bv-popover-template'\n\nconst NAME = 'BVPopover'\n\n// @vue/component\nexport const BVPopover = /*#__PURE__*/ Vue.extend({\n name: NAME,\n extends: BVTooltip,\n computed: {\n // Overwrites BVTooltip\n templateType() {\n return 'popover'\n }\n },\n methods: {\n getTemplate() {\n // Overwrites BVTooltip\n return BVPopoverTemplate\n }\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'\n\nconst NAME = 'BPopover'\n\nexport const BPopover = /*#__PURE__*/ Vue.extend({\n name: NAME,\n extends: BTooltip,\n inheritAttrs: false,\n props: {\n title: {\n type: String\n // default: undefined\n },\n content: {\n type: String\n // default: undefined\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: () => getComponentConfig(NAME, 'variant')\n },\n customClass: {\n type: String,\n default: () => getComponentConfig(NAME, 'customClass')\n },\n delay: {\n type: [Number, Object, String],\n default: () => getComponentConfig(NAME, 'delay')\n },\n boundary: {\n // String: scrollParent, window, or viewport\n // Element: element reference\n // Object: Vue component\n type: [String, HTMLElement, Object],\n default: () => getComponentConfig(NAME, 'boundary')\n },\n boundaryPadding: {\n type: [Number, String],\n default: () => getComponentConfig(NAME, 'boundaryPadding')\n }\n },\n methods: {\n getComponent() {\n // Overridden by BPopover\n return BVPopover\n },\n 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 }\n // Render function provided by BTooltip\n})\n","import 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 {\n isFunction,\n isNumber,\n isPlainObject,\n isString,\n isUndefined,\n isUndefinedOrNull\n} from '../../utils/inspect'\nimport { keys } from '../../utils/object'\nimport { BVPopover } from '../../components/popover/helpers/bv-popover'\n\n// Key which we use to store tooltip object on element\nconst BV_POPOVER = '__BV_Popover__'\n\n// Default trigger\nconst DefaultTrigger = 'click'\n\n// Valid event triggers\nconst validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true,\n manual: true\n}\n\n// Directive modifier test regular expressions. Pre-compile for performance\nconst htmlRE = /^html$/i\nconst noFadeRE = /^nofade$/i\nconst placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i\nconst boundaryRE = /^(window|viewport|scrollParent)$/i\nconst delayRE = /^d\\d+$/i\nconst delayShowRE = /^ds\\d+$/i\nconst delayHideRE = /^dh\\d+$/i\nconst offsetRE = /^o-?\\d+$/i\nconst variantRE = /^v-.+$/i\nconst spacesRE = /\\s+/\n\n// Build a Popover config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\nconst parseBindings = (bindings, vnode) => /* istanbul ignore next: not easy to test */ {\n // We start out with a basic config\n const NAME = 'BPopover'\n let config = {\n title: undefined,\n content: undefined,\n trigger: '', // Default set below if needed\n placement: 'right',\n fallbackPlacement: 'flip',\n container: false, // 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 }\n\n // Process `bindings.value`\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 = { ...config, ...bindings.value }\n }\n\n // If argument, assume element ID of container element\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = `#${bindings.arg}`\n }\n\n // If title is not provided, try title attribute\n if (isUndefined(config.title)) {\n // Try attribute\n const data = vnode.data || {}\n config.title = data.attrs && !isUndefinedOrNull(data.attrs.title) ? data.attrs.title : undefined\n }\n\n // Normalize delay\n if (!isPlainObject(config.delay)) {\n config.delay = {\n show: parseInt(config.delay, 10) || 0,\n hide: parseInt(config.delay, 10) || 0\n }\n }\n\n // Process modifiers\n keys(bindings.modifiers).forEach(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 const 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 })\n\n // Special handling of event trigger modifiers trigger is\n // a space separated list\n const selectedTriggers = {}\n\n // Parse current config object trigger\n concat(config.trigger || '')\n .filter(identity)\n .join(' ')\n .trim()\n .toLowerCase()\n .split(spacesRE)\n .forEach(trigger => {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true\n }\n })\n\n // Parse modifiers for triggers\n keys(bindings.modifiers).forEach(mod => {\n mod = mod.toLowerCase()\n if (validTriggers[mod]) {\n // If modifier is a valid trigger\n selectedTriggers[mod] = true\n }\n })\n\n // Sanitize triggers\n config.trigger = keys(selectedTriggers).join(' ')\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus'\n }\n if (!config.trigger) {\n // Use default trigger\n config.trigger = DefaultTrigger\n }\n\n return config\n}\n\n// Add or update Popover on our element\nconst applyPopover = (el, bindings, vnode) => {\n if (!isBrowser) {\n /* istanbul ignore next */\n return\n }\n const config = parseBindings(bindings, vnode)\n if (!el[BV_POPOVER]) {\n const $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', () => /* istanbul ignore next: for now */ {\n // Before showing the popover, we update the title\n // and content if they are functions\n const data = {}\n if (isFunction(config.title)) {\n data.title = config.title(el)\n }\n if (isFunction(config.content)) {\n data.content = config.content(el)\n }\n if (keys(data).length > 0) {\n el[BV_POPOVER].updateData(data)\n }\n })\n }\n const 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 const oldData = el[BV_POPOVER].__bv_prev_data__\n el[BV_POPOVER].__bv_prev_data__ = data\n if (!looseEqual(data, oldData)) {\n // We only update the instance if data has changed\n const newData = {\n target: el\n }\n keys(data).forEach(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] =\n (prop === 'title' || prop === 'content') && isFunction(data[prop])\n ? data[prop](el)\n : data[prop]\n }\n })\n el[BV_POPOVER].updateData(newData)\n }\n}\n\n// Remove Popover from our element\nconst removePopover = el => {\n if (el[BV_POPOVER]) {\n el[BV_POPOVER].$destroy()\n el[BV_POPOVER] = null\n }\n delete el[BV_POPOVER]\n}\n\n// Export our directive\nexport const VBPopover = {\n 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(el, bindings, vnode) {\n // Performed in a `$nextTick()` to prevent endless render/update loops\n vnode.context.$nextTick(() => {\n applyPopover(el, bindings, vnode)\n })\n },\n unbind(el) {\n removePopover(el)\n }\n}\n","import { VBPopover } from './popover'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst VBPopoverPlugin = /*#__PURE__*/ pluginFactory({\n directives: { VBPopover }\n})\n\nexport { VBPopoverPlugin, VBPopover }\n","import { BPopover } from './popover'\nimport { VBPopoverPlugin } from '../../directives/popover'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst PopoverPlugin = /*#__PURE__*/ pluginFactory({\n components: { BPopover },\n plugins: { VBPopoverPlugin }\n})\n\nexport { PopoverPlugin, BPopover }\n","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'\n\nconst NAME = 'BProgressBar'\n\n// @vue/component\nexport const BProgressBar = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [normalizeSlotMixin],\n inject: {\n bvProgress: {\n default() /* istanbul ignore next */ {\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: () => getComponentConfig(NAME, 'variant')\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() {\n return [\n this.computedVariant ? `bg-${this.computedVariant}` : '',\n this.computedStriped || this.computedAnimated ? 'progress-bar-striped' : '',\n this.computedAnimated ? 'progress-bar-animated' : ''\n ]\n },\n progressBarStyles() {\n return {\n width: 100 * (this.computedValue / this.computedMax) + '%'\n }\n },\n computedValue() {\n return toFloat(this.value) || 0\n },\n computedMax() {\n // Prefer our max over parent setting\n const max = toFloat(this.max)\n return isNaN(max) ? toFloat(this.bvProgress.max) || 100 : max\n },\n computedPrecision() {\n // Prefer our precision over parent setting\n const precision = toInteger(this.precision)\n return isNaN(precision) ? toInteger(this.bvProgress.precision) || 0 : precision\n },\n computedProgress() {\n const precision = this.computedPrecision\n const p = Math.pow(10, precision)\n return toFixed((100 * p * this.computedValue) / this.computedMax / p, precision)\n },\n computedVariant() {\n // Prefer our variant over parent setting\n return this.variant || this.bvProgress.variant\n },\n computedStriped() {\n // Prefer our striped over parent setting\n return isBoolean(this.striped) ? this.striped : this.bvProgress.striped || false\n },\n computedAnimated() {\n // Prefer our animated over parent setting\n return isBoolean(this.animated) ? this.animated : this.bvProgress.animated || false\n },\n computedShowProgress() {\n // Prefer our showProgress over parent setting\n return isBoolean(this.showProgress)\n ? this.showProgress\n : this.bvProgress.showProgress || false\n },\n computedShowValue() {\n // Prefer our showValue over parent setting\n return isBoolean(this.showValue) ? this.showValue : this.bvProgress.showValue || false\n }\n },\n render(h) {\n let childNodes = h()\n if (this.hasNormalizedSlot('default')) {\n childNodes = this.normalizeSlot('default')\n } else if (this.label || this.labelHtml) {\n childNodes = h('span', { domProps: htmlOrText(this.labelHtml, this.label) })\n } else if (this.computedShowProgress) {\n childNodes = this.computedProgress\n } else if (this.computedShowValue) {\n childNodes = toFixed(this.computedValue, this.computedPrecision)\n }\n return h(\n 'div',\n {\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 },\n [childNodes]\n )\n }\n})\n","import { BProgress } from './progress'\nimport { BProgressBar } from './progress-bar'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst ProgressPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BProgress,\n BProgressBar\n }\n})\n\nexport { ProgressPlugin, BProgress, BProgressBar }\n","import Vue from '../../utils/vue'\nimport { getComponentConfig } from '../../utils/config'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport { BProgressBar } from './progress-bar'\n\nconst NAME = 'BProgress'\n\n// @vue/component\nexport const BProgress = /*#__PURE__*/ Vue.extend({\n name: NAME,\n mixins: [normalizeSlotMixin],\n provide() {\n return { bvProgress: this }\n },\n props: {\n // These props can be inherited via the child b-progress-bar(s)\n variant: {\n type: String,\n default: () => getComponentConfig(NAME, 'variant')\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() {\n return { height: this.height || null }\n }\n },\n render(h) {\n let childNodes = this.normalizeSlot('default')\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 return h('div', { class: ['progress'], style: this.progressHeight }, [childNodes])\n }\n})\n","import { BSpinner } from './spinner'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst SpinnerPlugin = /*#__PURE__*/ pluginFactory({\n components: { BSpinner }\n})\n\nexport { SpinnerPlugin, BSpinner }\n","import Vue from '../../utils/vue'\nimport { mergeData } from 'vue-functional-data-merge'\nimport { getComponentConfig } from '../../utils/config'\nimport { normalizeSlot } from '../../utils/normalize-slot'\n\nconst NAME = 'BSpinner'\n\n// @vue/component\nexport const 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 label: {\n type: String,\n default: null\n },\n variant: {\n type: String,\n default: () => getComponentConfig(NAME, 'variant')\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(h, { props, data, slots, scopedSlots }) {\n const $slots = slots()\n const $scopedSlots = scopedSlots || {}\n let label = normalizeSlot('label', {}, $scopedSlots, $slots) || props.label\n if (label) {\n label = h('span', { staticClass: 'sr-only' }, label)\n }\n return h(\n props.tag,\n mergeData(data, {\n attrs: {\n role: label ? props.role || 'status' : null,\n 'aria-hidden': label ? null : 'true'\n },\n class: {\n [`spinner-${props.type}`]: props.type,\n [`spinner-${props.type}-sm`]: props.small,\n [`text-${props.variant}`]: props.variant\n }\n }),\n [label || h()]\n )\n }\n})\n","// 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'\n\n// @vue/component\nexport default {\n methods: {\n hasListener(name) {\n // Only includes listeners registerd via `v-on:name`\n const $listeners = this.$listeners || {}\n // 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 const $events = this._events || {}\n // Registered listeners in `this._events` are always an array,\n // but might be zero length\n return !isUndefined($listeners[name]) || (isArray($events[name]) && $events[name].length > 0)\n }\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\n// Precompile regular expressions for performance\nconst RX_UNDERSCORE = /_/g\nconst RX_LOWER_UPPER = /([a-z])([A-Z])/g\nconst RX_START_SPACE_WORD = /(\\s|^)(\\w)/g\n\nconst startCase = str =>\n str\n .replace(RX_UNDERSCORE, ' ')\n .replace(RX_LOWER_UPPER, (str, $1, $2) => $1 + ' ' + $2)\n .replace(RX_START_SPACE_WORD, (str, $1, $2) => $1 + $2.toUpperCase())\n\nexport default startCase\n","// Constants used by table helpers\n\n// Object of item keys that should be ignored for headers and\n// stringification and filter events\nexport const IGNORED_FIELD_KEYS = {\n _rowVariant: true,\n _cellVariants: true,\n _showDetails: true\n}\n\n// Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\nexport const EVENT_FILTER = [\n 'a',\n 'a *', // Include content inside links\n 'button',\n 'button *', // Include content inside buttons\n 'input:not(.disabled):not([disabled])',\n 'select:not(.disabled):not([disabled])',\n 'textarea:not(.disabled):not([disabled])',\n '[role=\"link\"]',\n '[role=\"link\"] *',\n '[role=\"button\"]',\n '[role=\"button\"] *',\n '[tabindex]:not(.disabled):not([disabled])'\n].join(',')\n","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'\n\n// Private function to massage field entry into common object format\nconst processField = (key, value) => {\n let field = null\n if (isString(value)) {\n // Label shortcut\n field = { key: key, label: value }\n } else if (isFunction(value)) {\n // Formatter shortcut\n field = { key: key, formatter: value }\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 /* istanbul ignore next */\n field = { key: key }\n }\n return field\n}\n\n// We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\nconst normalizeFields = (origFields, items) => {\n const fields = []\n\n if (isArray(origFields)) {\n // Normalize array Form\n origFields.filter(identity).forEach(f => {\n if (isString(f)) {\n fields.push({ key: f, label: startCase(f) })\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 const key = keys(f)[0]\n const field = processField(key, f[key])\n if (field) {\n fields.push(field)\n }\n }\n })\n }\n\n // If no field provided, take a sample from first record (if exits)\n if (fields.length === 0 && isArray(items) && items.length > 0) {\n const sample = items[0]\n keys(sample).forEach(k => {\n if (!IGNORED_FIELD_KEYS[k]) {\n fields.push({ key: k, label: startCase(k) })\n }\n })\n }\n\n // Ensure we have a unique array of fields and that they have String labels\n const memo = {}\n return fields.filter(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 return false\n })\n}\n\nexport default normalizeFields\n","import looseEqual from '../../../utils/loose-equal'\nimport { isArray, isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect'\nimport { clone } from '../../../utils/object'\nimport normalizeFields from './normalize-fields'\n\nexport default {\n props: {\n items: {\n // Provider mixin adds in `Function` type\n type: Array,\n default() /* istanbul ignore next */ {\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() {\n return []\n }\n }\n },\n 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() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return normalizeFields(this.fields, this.localItems)\n },\n 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 const parent = this.$parent\n return this.computedFields.reduce((obj, f) => {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = clone(f)\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n let formatter = f.formatter\n if (isString(formatter) && isFunction(parent[formatter])) {\n formatter = parent[formatter]\n } else if (!isFunction(formatter)) {\n /* istanbul ignore next */\n formatter = undefined\n }\n // Return formatter function or `undefined` if none\n obj[f.key].formatter = formatter\n }\n return obj\n }, {})\n },\n computedItems() {\n // Fallback if various mixins not provided\n return (\n this.paginatedItems ||\n this.sortedItems ||\n this.filteredItems ||\n this.localItems ||\n []\n ).slice()\n },\n 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(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(newVal) {\n this.$emit('input', newVal)\n },\n // Watch for context changes\n 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() {\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(key) {\n const field = this.computedFieldsObj[key]\n // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n return field ? field.formatter : undefined\n }\n }\n}\n","// Mixin for providing stacked tables\n\nexport default {\n props: {\n stacked: {\n type: [Boolean, String],\n default: false\n }\n },\n computed: {\n isStacked() {\n // `true` when always stacked, or returns breakpoint specified\n return this.stacked === '' ? true : this.stacked\n },\n isStackedAlways() {\n return this.isStacked === true\n },\n stackedTableClasses() {\n return {\n 'b-table-stacked': this.isStackedAlways,\n [`b-table-stacked-${this.stacked}`]: !this.isStackedAlways && this.isStacked\n }\n }\n }\n}\n","import { keys } from '../../../utils/object'\nimport { arrayIncludes } from '../../../utils/array'\nimport { isFunction } from '../../../utils/inspect'\nimport { IGNORED_FIELD_KEYS } from './constants'\n\n// Return a copy of a row after all reserved fields have been filtered out\nconst sanitizeRow = (row, ignoreFields, includeFields, fieldsObj = {}) =>\n keys(row).reduce((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 (\n !IGNORED_FIELD_KEYS[key] &&\n !(ignoreFields && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) &&\n !(includeFields && includeFields.length > 0 && !arrayIncludes(includeFields, key))\n ) {\n const f = fieldsObj[key] || {}\n const val = row[key]\n // `f.filterByFormatted` will either be a function or boolean\n // `f.formater` will have already been noramlized into a function ref\n const filterByFormatted = f.filterByFormatted\n const formatter = isFunction(filterByFormatted)\n ? filterByFormatted\n : filterByFormatted\n ? f.formatter\n : null\n obj[key] = isFunction(formatter) ? formatter(val, key, row) : val\n }\n return obj\n }, {})\n\nexport default sanitizeRow\n","import { keys } from '../../../utils/object'\nimport { isDate, isObject, isUndefinedOrNull } from '../../../utils/inspect'\nimport { toString } from '../../../utils/string'\n\n// 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\nconst stringifyObjectValues = val => {\n if (isUndefinedOrNull(val)) {\n /* istanbul ignore next */\n return ''\n }\n // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n if (isObject(val) && !isDate(val)) {\n return keys(val)\n .sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .filter(v => !isUndefinedOrNull(v)) // Ignore undefined/null values\n .map(k => stringifyObjectValues(val[k]))\n .join(' ')\n }\n return toString(val)\n}\n\nexport default stringifyObjectValues\n","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'\n\nconst DEBOUNCE_DEPRECATED_MSG =\n 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"<b-form-input>\" instead.'\n\nconst RX_SPACES = /[\\s\\uFEFF\\xA0]+/g\n\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\n // default: undefined\n },\n filterIncludedFields: {\n type: Array\n // default: undefined\n },\n filterDebounce: {\n type: [Number, String],\n deprecated: DEBOUNCE_DEPRECATED_MSG,\n default: 0,\n validator: val => /^\\d+/.test(String(val))\n }\n },\n 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() {\n return this.filterIgnoredFields ? concat(this.filterIgnoredFields).filter(Boolean) : null\n },\n computedFilterIncluded() {\n return this.filterIncludedFields ? concat(this.filterIncludedFields).filter(Boolean) : null\n },\n computedFilterDebounce() {\n const ms = toInteger(this.filterDebounce) || 0\n /* istanbul ignore next */\n if (ms > 0) {\n warn(DEBOUNCE_DEPRECATED_MSG, 'BTable')\n }\n return ms\n },\n localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true\n },\n // For watching changes to `filteredItems` vs `localItems`\n 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() {\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() {\n const items = this.localItems || []\n // Note the criteria is debounced and sanitized\n const criteria = this.localFilter\n\n // 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 const filterFn = this.localFiltering\n ? this.filterFnFactory(this.localFilterFn, criteria) ||\n this.defaultFilterFnFactory(criteria)\n : null\n\n // We only do local filtering when requested and there are records to filter\n return filterFn && items.length > 0 ? items.filter(filterFn) : items\n }\n },\n watch: {\n // Watch for debounce being set to 0\n 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(newCriteria) {\n const timeout = this.computedFilterDebounce\n clearTimeout(this.$_filterTimer)\n this.$_filterTimer = null\n if (timeout && timeout > 0) {\n // If we have a debounce time, delay the update of `localFilter`\n this.$_filterTimer = setTimeout(() => {\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({ filteredItems, localFilter }) {\n // Determine if the dataset is filtered or not\n let isFiltered = false\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 if (isFiltered) {\n this.$emit('filtered', filteredItems, filteredItems.length)\n }\n this.isFiltered = isFiltered\n },\n 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() {\n // Create non-reactive prop where we store the debounce timer id\n this.$_filterTimer = null\n // 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 this.$nextTick(() => {\n this.isFiltered = Boolean(this.localFilter)\n })\n },\n beforeDestroy() /* istanbul ignore next */ {\n clearTimeout(this.$_filterTimer)\n this.$_filterTimer = null\n },\n methods: {\n filterSanitize(criteria) {\n // Sanitizes filter criteria based on internal or external filtering\n if (\n this.localFiltering &&\n !this.localFilterFn &&\n !(isString(criteria) || isRegExp(criteria))\n ) {\n // If using internal filter function, which only accepts string or RegExp,\n // return '' to signify no filter\n return ''\n }\n\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 return cloneDeep(criteria)\n },\n // Filter Function factories\n 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 (\n !filterFn ||\n !isFunction(filterFn) ||\n !criteria ||\n looseEqual(criteria, []) ||\n looseEqual(criteria, {})\n ) {\n return null\n }\n\n // Build the wrapped filter test function, passing the criteria to the provided function\n const 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 }\n\n // Return the wrapped function\n return fn\n },\n defaultFilterFnFactory(criteria) {\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 }\n\n // Build the RegExp needed for filtering\n let regExp = criteria\n if (isString(regExp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n const pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+')\n // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n regExp = new RegExp(`.*${pattern}.*`, 'i')\n }\n\n // Generate the wrapped filter test function to use\n const 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(\n stringifyRecordValues(\n item,\n this.computedFilterIgnored,\n this.computedFilterIncluded,\n this.computedFieldsObj\n )\n )\n }\n\n // Return the generated function\n return fn\n }\n }\n}\n","import { isObject } from '../../../utils/inspect'\nimport sanitizeRow from './sanitize-row'\nimport stringifyObjectValues from './stringify-object-values'\n\n// Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\nconst stringifyRecordValues = (row, ignoreFields, includeFields, fieldsObj) => {\n return isObject(row)\n ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj))\n : ''\n}\n\nexport default stringifyRecordValues\n","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nconst stableSort = (array, compareFn) => {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array\n .map((a, index) => [index, a])\n .sort(\n function(a, b) {\n return this(a[1], b[1]) || a[0] - b[0]\n }.bind(compareFn)\n )\n .map(e => e[1])\n}\n\nexport default stableSort\n","import 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'\n\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: direction => arrayIncludes(['asc', 'desc', 'last'], direction)\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: () => {\n return { numeric: true }\n }\n },\n sortCompareLocale: {\n // String: locale code\n // Array: array of Locale strings\n type: [String, Array]\n // default: undefined\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() {\n return {\n localSortBy: this.sortBy || '',\n localSortDesc: this.sortDesc || false\n }\n },\n computed: {\n localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting\n },\n isSortable() {\n return this.computedFields.some(f => f.sortable)\n },\n 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 const items = (this.filteredItems || this.localItems || []).slice()\n const sortBy = this.localSortBy\n const sortDesc = this.localSortDesc\n const sortCompare = this.sortCompare\n const localSorting = this.localSorting\n const sortOptions = { ...this.sortCompareOptions, usage: 'sort' }\n const sortLocale = this.sortCompareLocale || undefined\n const nullLast = this.sortNullLast\n if (sortBy && localSorting) {\n const field = this.computedFieldsObj[sortBy] || {}\n const sortByFormatted = field.sortByFormatted\n const formatter = isFunction(sortByFormatted)\n ? sortByFormatted\n : sortByFormatted\n ? this.getFieldFormatter(sortBy)\n : undefined\n // `stableSort` returns a new array, and leaves the original array intact\n return stableSort(items, (a, b) => {\n let result = null\n if (isFunction(sortCompare)) {\n // Call user provided sortCompare routine\n result = sortCompare(a, b, sortBy, sortDesc, formatter, sortOptions, sortLocale)\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(\n a,\n b,\n sortBy,\n sortDesc,\n formatter,\n sortOptions,\n sortLocale,\n nullLast\n )\n }\n // Negate result if sorting in descending order\n return (result || 0) * (sortDesc ? -1 : 1)\n })\n }\n return items\n }\n },\n watch: {\n isSortable(newVal) /* istanbul ignore next: pain in the butt to test */ {\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(newVal) {\n if (newVal === this.localSortDesc) {\n /* istanbul ignore next */\n return\n }\n this.localSortDesc = newVal || false\n },\n sortBy(newVal) {\n if (newVal === this.localSortBy) {\n /* istanbul ignore next */\n return\n }\n this.localSortBy = newVal || ''\n },\n // Update .sync props\n localSortDesc(newVal, oldVal) {\n // Emit update to sort-desc.sync\n if (newVal !== oldVal) {\n this.$emit('update:sortDesc', newVal)\n }\n },\n localSortBy(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit('update:sortBy', newVal)\n }\n }\n },\n 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(key, field, evt, isFoot) {\n if (!this.isSortable) {\n /* istanbul ignore next */\n return\n }\n if (isFoot && this.noFooterSorting) {\n return\n }\n // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n let sortChanged = false\n const toggleLocalSortDesc = () => {\n const sortDirection = field.sortDirection || this.sortDirection\n if (sortDirection === 'asc') {\n this.localSortDesc = false\n } else if (sortDirection === 'desc') {\n this.localSortDesc = true\n } else {\n // sortDirection === 'last'\n // Leave at last sort direction from previous column\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\n // this.localSortDesc = false\n toggleLocalSortDesc()\n }\n sortChanged = true\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = ''\n toggleLocalSortDesc()\n sortChanged = true\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(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':\n field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n }\n },\n sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || (isFoot && this.noFooterSorting)) {\n // No attributes if not a sortable table\n return {}\n }\n const sortable = field.sortable\n // Assemble the aria-sort attribute value\n const ariaSort =\n sortable && this.localSortBy === key\n ? this.localSortDesc\n ? 'descending'\n : 'ascending'\n : sortable\n ? 'none'\n : null\n // Return the attribute\n return {\n 'aria-sort': ariaSort\n }\n },\n 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 const sortable = field.sortable\n // The correctness of these labels is very important for screen-reader users.\n let labelSorting = ''\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\n // Handle sortDirection setting\n const sortDirection = this.sortDirection || field.sortDirection\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 }\n // Return the sr-only sort label or null if no label\n return trim(labelSorting) || null\n }\n }\n}\n","import get from '../../../utils/get'\nimport { isDate, isFunction, isNumber, isUndefinedOrNull } from '../../../utils/inspect'\nimport stringifyObjectValues from './stringify-object-values'\n\n// 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\nconst defaultSortCompare = (a, b, sortBy, sortDesc, formatter, localeOpts, locale, nullLast) => {\n let aa = get(a, sortBy, null)\n let bb = get(b, sortBy, null)\n if (isFunction(formatter)) {\n aa = formatter(aa, sortBy, a)\n bb = formatter(bb, sortBy, b)\n }\n aa = isUndefinedOrNull(aa) ? '' : aa\n bb = isUndefinedOrNull(bb) ? '' : bb\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 }\n // Do localized string comparison\n return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOpts)\n}\n\nexport default defaultSortCompare\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() {\n return this.hasProvider ? !!this.noProviderPaging : true\n },\n paginatedItems() {\n let items = this.sortedItems || this.filteredItems || this.localItems || []\n const currentPage = Math.max(parseInt(this.currentPage, 10) || 1, 1)\n const perPage = Math.max(parseInt(this.perPage, 10) || 0, 0)\n // Apply local pagination\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 }\n // Return the items to display in the table\n return items\n }\n }\n}\n","import { htmlOrText } from '../../../utils/html'\n\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() {\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() {\n const h = this.$createElement\n\n // Build the caption\n const $captionSlot = this.normalizeSlot('table-caption')\n let $caption = h()\n\n if ($captionSlot || this.caption || this.captionHtml) {\n const data = {\n key: 'caption',\n attrs: { id: this.captionId }\n }\n if (!$captionSlot) {\n data.domProps = htmlOrText(this.captionHtml, this.caption)\n }\n $caption = h('caption', data, [$captionSlot])\n }\n\n return $caption\n }\n }\n}\n","export default {\n methods: {\n renderColgroup() {\n const h = this.$createElement\n\n const fields = this.computedFields\n let $colgroup = h()\n\n if (this.hasNormalizedSlot('table-colgroup')) {\n $colgroup = h('colgroup', { key: 'colgroup' }, [\n this.normalizeSlot('table-colgroup', { columns: fields.length, fields: fields })\n ])\n }\n\n return $colgroup\n }\n }\n}\n","import { closest, getAttr, getById, matches, select } from '../../../utils/dom'\nimport { EVENT_FILTER } from './constants'\n\nconst TABLE_TAG_NAMES = ['TD', 'TH', 'TR']\n\n// 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\nconst 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 const el = evt.target\n // Exit early when element is disabled or a table element\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false\n }\n // Ignore the click when it was inside a dropdown menu\n if (closest('.dropdown-menu', el)) {\n return true\n }\n const label = el.tagName === 'LABEL' ? el : closest('label', el)\n // 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 if (label) {\n const labelFor = getAttr(label, 'for')\n const input = labelFor ? getById(labelFor) : select('input, select, textarea', label)\n if (input && !input.disabled) {\n return true\n }\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 return matches(el, EVENT_FILTER)\n}\n\nexport default filterEvent\n","import { getSel, isElement } from '../../../utils/dom'\n\n// 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\nconst textSelectionActive = (el = document) => {\n const sel = getSel()\n return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el)\n ? sel.containsNode(el, true)\n : false\n}\n\nexport default textSelectionActive\n","import Vue from '../../utils/vue'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\nexport const props = {\n headVariant: {\n // Also sniffed by <b-tr> / <b-td> / <b-th>\n type: String, // supported values: 'lite', 'dark', or null\n default: null\n }\n}\n\n// @vue/component\nexport const BThead = /*#__PURE__*/ Vue.extend({\n name: 'BThead',\n mixins: [normalizeSlotMixin],\n inheritAttrs: false,\n provide() {\n return {\n bvTableRowGroup: this\n }\n },\n inject: {\n bvTable: {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n default() /* istanbul ignore next */ {\n return {}\n }\n }\n },\n props,\n computed: {\n isThead() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return true\n },\n isDark() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.dark\n },\n isStacked() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.isStacked\n },\n isResponsive() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.isResponsive\n },\n 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() {\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() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.tableVariant\n },\n theadClasses() {\n return [this.headVariant ? `thead-${this.headVariant}` : null]\n },\n theadAttrs() {\n return { role: 'rowgroup', ...this.$attrs }\n }\n },\n render(h) {\n return h(\n 'thead',\n {\n class: this.theadClasses,\n attrs: this.theadAttrs,\n // Pass down any native listeners\n on: this.$listeners\n },\n this.normalizeSlot('default')\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\nexport const props = {\n footVariant: {\n type: String, // supported values: 'lite', 'dark', or null\n default: null\n }\n}\n\n// @vue/component\nexport const BTfoot = /*#__PURE__*/ Vue.extend({\n name: 'BTfoot',\n mixins: [normalizeSlotMixin],\n inheritAttrs: false,\n provide() {\n return {\n bvTableRowGroup: this\n }\n },\n inject: {\n bvTable: {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n default() /* istanbul ignore next */ {\n return {}\n }\n }\n },\n props,\n computed: {\n isTfoot() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return true\n },\n isDark() /* istanbul ignore next: Not currently sniffed in tests */ {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.dark\n },\n isStacked() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.isStacked\n },\n isResponsive() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.isResponsive\n },\n isStickyHeader() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n // Sticky headers are only supported in thead\n return false\n },\n 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() /* istanbul ignore next: Not currently sniffed in tests */ {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.tableVariant\n },\n tfootClasses() {\n return [this.footVariant ? `thead-${this.footVariant}` : null]\n },\n tfootAttrs() {\n return { role: 'rowgroup', ...this.$attrs }\n }\n },\n render(h) {\n return h(\n 'tfoot',\n {\n class: this.tfootClasses,\n attrs: this.tfootAttrs,\n // Pass down any native listeners\n on: this.$listeners\n },\n this.normalizeSlot('default')\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\nexport const props = {\n variant: {\n type: String,\n default: null\n }\n}\n\nconst LIGHT = 'light'\nconst DARK = 'dark'\n\n// @vue/component\nexport const BTr = /*#__PURE__*/ Vue.extend({\n name: 'BTr',\n mixins: [normalizeSlotMixin],\n inheritAttrs: false,\n provide() {\n return {\n bvTableTr: this\n }\n },\n inject: {\n bvTableRowGroup: {\n default() /* istanbul ignore next */ {\n return {}\n }\n }\n },\n props,\n computed: {\n inTbody() {\n // Sniffed by <b-td> / <b-th>\n return this.bvTableRowGroup.isTbody\n },\n inThead() {\n // Sniffed by <b-td> / <b-th>\n return this.bvTableRowGroup.isThead\n },\n inTfoot() {\n // Sniffed by <b-td> / <b-th>\n return this.bvTableRowGroup.isTfoot\n },\n isDark() {\n // Sniffed by <b-td> / <b-th>\n return this.bvTableRowGroup.isDark\n },\n isStacked() {\n // Sniffed by <b-td> / <b-th>\n return this.bvTableRowGroup.isStacked\n },\n isResponsive() {\n // Sniffed by <b-td> / <b-th>\n return this.bvTableRowGroup.isResponsive\n },\n isStickyHeader() {\n // Sniffed by <b-td> / <b-th>\n // Sticky headers are only supported in thead\n return this.bvTableRowGroup.isStickyHeader\n },\n 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() {\n // Sniffed by <b-td> / <b-th>\n return this.bvTableRowGroup.tableVariant\n },\n headVariant() {\n // Sniffed by <b-td> / <b-th>\n return this.inThead ? this.bvTableRowGroup.headVariant : null\n },\n footVariant() {\n // Sniffed by <b-td> / <b-th>\n return this.inTfoot ? this.bvTableRowGroup.footVariant : null\n },\n isRowDark() {\n return this.headVariant === LIGHT || this.footVariant === LIGHT\n ? false\n : this.headVariant === DARK || this.footVariant === DARK\n ? true\n : this.isDark\n },\n trClasses() {\n return [this.variant ? `${this.isRowDark ? 'bg' : 'table'}-${this.variant}` : null]\n },\n trAttrs() {\n return { role: 'row', ...this.$attrs }\n }\n },\n render(h) {\n return h(\n 'tr',\n {\n class: this.trClasses,\n attrs: this.trAttrs,\n // Pass native listeners to child\n on: this.$listeners\n },\n this.normalizeSlot('default')\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { isUndefinedOrNull } from '../../utils/inspect'\nimport { toString } from '../../utils/string'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\nconst digitsRx = /^\\d+$/\n\n// Parse a rowspan or colspan into a digit (or null if < 1 or NaN)\nconst parseSpan = val => {\n val = parseInt(val, 10)\n return digitsRx.test(String(val)) && val > 0 ? val : null\n}\n\n/* istanbul ignore next */\nconst spanValidator = val => isUndefinedOrNull(val) || parseSpan(val) > 0\n\nexport const 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}\n\n// @vue/component\nexport const BTd = /*#__PURE__*/ Vue.extend({\n name: 'BTableCell',\n mixins: [normalizeSlotMixin],\n inheritAttrs: false,\n inject: {\n bvTableTr: {\n default() /* istanbul ignore next */ {\n return {}\n }\n }\n },\n props,\n computed: {\n tag() {\n // Overridden by <b-th>\n return 'td'\n },\n inTbody() {\n return this.bvTableTr.inTbody\n },\n inThead() {\n return this.bvTableTr.inThead\n },\n inTfoot() {\n return this.bvTableTr.inTfoot\n },\n isDark() {\n return this.bvTableTr.isDark\n },\n isStacked() {\n return this.bvTableTr.isStacked\n },\n isStackedCell() {\n // We only support stacked-heading in tbody in stacked mode\n return this.inTbody && this.isStacked\n },\n isResponsive() {\n return this.bvTableTr.isResponsive\n },\n 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() {\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() {\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() {\n return this.bvTableTr.variant\n },\n headVariant() {\n return this.bvTableTr.headVariant\n },\n footVariant() /* istanbul ignore next: need to add in tests for footer variant */ {\n return this.bvTableTr.footVariant\n },\n tableVariant() {\n return this.bvTableTr.tableVariant\n },\n computedColspan() {\n return parseSpan(this.colspan)\n },\n computedRowspan() {\n return parseSpan(this.rowspan)\n },\n 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 let variant = this.variant\n if (\n (!variant && this.isStickyHeader && !this.headVariant) ||\n (!variant && this.isStickyColumn)\n ) {\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 return [\n variant ? `${this.isDark ? 'bg' : 'table'}-${variant}` : null,\n this.isStickyColumn ? 'b-table-sticky-column' : null\n ]\n },\n cellAttrs() {\n // We use computed props here for improved performance by caching\n // the results of the object spread (Object.assign)\n const headOrFoot = this.inThead || this.inTfoot\n // Make sure col/rowspan's are > 0 or null\n const colspan = this.computedColspan\n const rowspan = this.computedRowspan\n // Default role and scope\n let role = 'cell'\n let scope = null\n\n // Compute role and scope\n // We only add scopes with an explicit span of 1 or greater\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 {\n colspan: colspan,\n rowspan: rowspan,\n role: role,\n scope: scope,\n // Allow users to override role/scope plus add other attributes\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':\n this.isStackedCell && !isUndefinedOrNull(this.stackedHeading)\n ? toString(this.stackedHeading)\n : null\n }\n }\n },\n render(h) {\n const content = [this.normalizeSlot('default')]\n return h(\n this.tag,\n {\n class: this.cellClasses,\n attrs: this.cellAttrs,\n // Transfer any native listeners\n on: this.$listeners\n },\n [this.isStackedCell ? h('div', [content]) : content]\n )\n }\n})\n","import Vue from '../../utils/vue'\nimport { BTd } from './td'\n\n// @vue/component\nexport const BTh = /*#__PURE__*/ Vue.extend({\n name: 'BTh',\n extends: BTd,\n computed: {\n tag() {\n return 'th'\n }\n }\n})\n","import 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'\n\nexport default {\n props: {\n headVariant: {\n type: String, // 'light', 'dark' or `null` (or custom)\n default: () => getComponentConfig('BTable', 'headVariant')\n },\n headRowVariant: {\n type: String, // Any Bootstrap theme variant (or custom)\n default: null\n },\n theadClass: {\n type: [String, Array, Object]\n // default: undefined\n },\n theadTrClass: {\n type: [String, Array, Object]\n // default: undefined\n }\n },\n methods: {\n fieldClasses(field) {\n // Header field (<th>) classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : '']\n },\n 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 /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return\n }\n evt.stopPropagation()\n evt.preventDefault()\n this.$emit('head-clicked', field.key, field, evt, isFoot)\n },\n renderThead(isFoot = false) {\n const h = this.$createElement\n const 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 }\n\n // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n const selectAllRows = this.isSelectable ? this.selectAllRows : () => {}\n const clearSelected = this.isSelectable ? this.clearSelected : () => {}\n\n // Helper function to generate a field <th> cell\n const makeCell = (field, colIndex) => {\n let ariaLabel = null\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 /* istanbul ignore next */\n ariaLabel = startCase(field.key)\n }\n const hasHeadClickListener = this.hasListener('head-clicked') || this.isSortable\n const handlers = {}\n if (hasHeadClickListener) {\n handlers.click = evt => {\n this.headClicked(evt, field, isFoot)\n }\n handlers.keydown = evt => {\n const keyCode = evt.keyCode\n if (keyCode === KeyCodes.ENTER || keyCode === KeyCodes.SPACE) {\n this.headClicked(evt, field, isFoot)\n }\n }\n }\n const sortAttrs = this.isSortable ? this.sortTheadThAttrs(field.key, field, isFoot) : {}\n const sortClass = this.isSortable ? this.sortTheadThClasses(field.key, field, isFoot) : null\n const sortLabel = this.isSortable ? this.sortTheadThLabel(field.key, field, isFoot) : null\n const 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: {\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', {}),\n ...sortAttrs\n },\n on: handlers\n }\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 let slotNames = [`head(${field.key})`, `head(${field.key.toLowerCase()})`, 'head()']\n if (isFoot) {\n // Footer will fallback to header slot names\n slotNames = [\n `foot(${field.key})`,\n `foot(${field.key.toLowerCase()})`,\n 'foot()',\n ...slotNames\n ]\n }\n const scope = {\n label: field.label,\n column: field.key,\n field,\n isFoot,\n // Add in row select methods\n selectAllRows,\n clearSelected\n }\n const content =\n this.normalizeSlot(slotNames, scope) ||\n (field.labelHtml ? h('div', { domProps: htmlOrText(field.labelHtml) }) : field.label)\n const srLabel = sortLabel ? h('span', { staticClass: 'sr-only' }, ` (${sortLabel})`) : null\n // Return the header cell\n return h(BTh, data, [content, srLabel].filter(identity))\n }\n\n // Generate the array of <th> cells\n const $cells = fields.map(makeCell).filter(identity)\n\n // Genrate the row(s)\n const $trs = []\n if (isFoot) {\n const trProps = {\n variant: isUndefinedOrNull(this.footRowVariant)\n ? this.headRowVariant\n : this.footRowVariant\n }\n $trs.push(h(BTr, { class: this.tfootTrClass, props: trProps }, $cells))\n } else {\n const scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows,\n clearSelected\n }\n $trs.push(this.normalizeSlot('thead-top', scope) || h())\n $trs.push(\n h(BTr, { class: this.theadTrClass, props: { variant: this.headRowVariant } }, $cells)\n )\n }\n\n return h(\n isFoot ? BTfoot : BThead,\n {\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 : { headVariant: this.headVariant || null }\n },\n $trs\n )\n }\n }\n}\n","import { getComponentConfig } from '../../../utils/config'\nimport { BTfoot } from '../tfoot'\n\nexport default {\n props: {\n footClone: {\n type: Boolean,\n default: false\n },\n footVariant: {\n type: String, // 'dark', 'light', or `null` (or custom)\n default: () => getComponentConfig('BTable', 'footVariant')\n },\n footRowVariant: {\n type: String, // 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() {\n const h = this.$createElement\n if (this.hasNormalizedSlot('custom-foot')) {\n return h(\n BTfoot,\n {\n key: 'bv-tfoot-custom',\n class: this.tfootClass || null,\n props: { 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 )\n } else {\n return h()\n }\n },\n renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom()\n }\n }\n}\n","import Vue from '../../utils/vue'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\nexport const props = {\n tbodyTransitionProps: {\n type: Object\n // default: undefined\n },\n tbodyTransitionHandlers: {\n type: Object\n // default: undefined\n }\n}\n\n// @vue/component\nexport const BTbody = /*#__PURE__*/ Vue.extend({\n name: 'BTbody',\n mixins: [normalizeSlotMixin],\n inheritAttrs: false,\n provide() {\n return {\n bvTableRowGroup: this\n }\n },\n inject: {\n bvTable: {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n default() /* istanbul ignore next */ {\n return {}\n }\n }\n },\n props,\n computed: {\n isTbody() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return true\n },\n isDark() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.dark\n },\n isStacked() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.isStacked\n },\n isResponsive() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.isResponsive\n },\n isStickyHeader() {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n // Sticky headers are only supported in thead\n return false\n },\n 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() /* istanbul ignore next: Not currently sniffed in tests */ {\n // Sniffed by <b-tr> / <b-td> / <b-th>\n return this.bvTable.tableVariant\n },\n isTransitionGroup() {\n return this.tbodyTransitionProps || this.tbodyTransitionHandlers\n },\n tbodyAttrs() {\n return { role: 'rowgroup', ...this.$attrs }\n },\n tbodyProps() {\n return this.tbodyTransitionProps ? { ...this.tbodyTransitionProps, tag: 'tbody' } : {}\n }\n },\n render(h) {\n const data = {\n props: this.tbodyProps,\n attrs: this.tbodyAttrs\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 return h(\n this.isTransitionGroup ? 'transition-group' : 'tbody',\n data,\n this.normalizeSlot('default')\n )\n }\n})\n","import 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\nconst props = {\n ...tbodyProps,\n tbodyClass: {\n type: [String, Array, Object]\n // default: undefined\n }\n}\n\nexport default {\n mixins: [tbodyRowMixin],\n props,\n methods: {\n // Helper methods\n 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 const refs = this.$refs || {}\n const tbody = refs.tbody ? refs.tbody.$el || refs.tbody : null\n const trs = (refs.itemRows || []).map(tr => tr.$el || tr)\n return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0\n ? arrayFrom(tbody.children).filter(tr => arrayIncludes(trs, tr))\n : []\n },\n getTbodyTrIndex(el) {\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n /* istanbul ignore next: should not normally happen */\n if (!isElement(el)) {\n return -1\n }\n const tr = el.tagName === 'TR' ? el : closest('tr', el, true)\n return tr ? this.getTbodyTrs().indexOf(tr) : -1\n },\n 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 const rowIndex = this.getTbodyTrIndex(evt.target)\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n const item = this.computedItems[rowIndex]\n this.$emit(type, item, rowIndex, evt)\n }\n }\n },\n tbodyRowEvtStopped(evt) {\n return this.stopIfBusy && this.stopIfBusy(evt)\n },\n // Delegated row event handlers\n onTbodyRowKeydown(evt) {\n // Keyboard navigation and row click emulation\n const target = evt.target\n if (\n this.tbodyRowEvtStopped(evt) ||\n target.tagName !== 'TR' ||\n target !== document.activeElement ||\n target.tabIndex !== 0\n ) {\n // Early exit if not an item row TR\n return\n }\n const keyCode = evt.keyCode\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 (\n arrayIncludes([KeyCodes.UP, KeyCodes.DOWN, KeyCodes.HOME, KeyCodes.END], keyCode)\n ) {\n // Keyboard navigation\n const rowIndex = this.getTbodyTrIndex(target)\n if (rowIndex > -1) {\n evt.stopPropagation()\n evt.preventDefault()\n const trs = this.getTbodyTrs()\n const shift = evt.shiftKey\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(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 this.emitTbodyRowEvent('row-clicked', evt)\n },\n onTbodyRowMiddleMouseRowClicked(evt) {\n if (!this.tbodyRowEvtStopped(evt) && evt.which === 2) {\n this.emitTbodyRowEvent('row-middle-clicked', evt)\n }\n },\n onTbodyRowContextmenu(evt) {\n if (!this.tbodyRowEvtStopped(evt)) {\n this.emitTbodyRowEvent('row-contextmenu', evt)\n }\n },\n 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() {\n // Render the tbody element and children\n const items = this.computedItems\n // Shortcut to `createElement` (could use `this._c()` instead)\n const h = this.$createElement\n const hasRowClickHandler = this.hasListener('row-clicked') || this.hasSelectableRowClick\n\n // Prepare the tbody rows\n const $rows = []\n\n // Add the item data rows or the busy slot\n const $busy = this.renderBusy ? this.renderBusy() : null\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\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 const cache = {}\n const defaultSlotName = this.hasNormalizedSlot('cell()') ? 'cell()' : null\n this.computedFields.forEach(field => {\n const key = field.key\n const fullName = `cell(${key})`\n const lowerName = `cell(${key.toLowerCase()})`\n cache[key] = this.hasNormalizedSlot(fullName)\n ? fullName\n : this.hasNormalizedSlot(lowerName)\n ? lowerName\n : defaultSlotName\n })\n // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n this.$_bodyFieldSlotNameCache = cache\n\n // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n $rows.push(this.renderTopRow ? this.renderTopRow() : h())\n\n // Render the rows\n items.forEach((item, rowIndex) => {\n // Render the individual item row (rows if details slot)\n $rows.push(this.renderTbodyRow(item, rowIndex))\n })\n\n // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n $rows.push(this.renderEmpty ? this.renderEmpty() : h())\n\n // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n $rows.push(this.renderBottomRow ? this.renderBottomRow() : h())\n }\n\n // Note: these events will only emit if a listener is registered\n const 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\n // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n }\n // Add in click/keydown listeners if needed\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked\n handlers.keydown = this.onTbodyRowKeydown\n }\n\n // Assemble rows into the tbody\n const $tbody = h(\n BTbody,\n {\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 },\n $rows\n )\n\n // Return the assembled tbody\n return $tbody\n }\n }\n}\n","import 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'\n\nconst detailsSlotName = 'row-details'\n\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(item, key, tdValue, defValue) {\n const parent = this.$parent\n if (tdValue) {\n const value = get(item, key, '')\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 return tdValue\n }\n return defValue\n },\n getThValues(item, key, thValue, type, defValue) {\n const parent = this.$parent\n if (thValue) {\n const value = get(item, key, '')\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 return thValue\n }\n return defValue\n },\n // Method to get the value for a field\n getFormattedValue(item, field) {\n const key = field.key\n const formatter = this.getFieldFormatter(key)\n let value = get(item, key, null)\n if (isFunction(formatter)) {\n value = formatter(value, key, item)\n }\n return isUndefinedOrNull(value) ? '' : value\n },\n // Factory function methods\n toggleDetailsFactory(hasDetailsSlot, item) {\n // Returns a function to toggle a row's details slot\n return () => {\n if (hasDetailsSlot) {\n this.$set(item, '_showDetails', !item._showDetails)\n }\n }\n },\n // Row event handlers\n 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(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(field, colIndex, item, rowIndex) {\n // Renders a TD or TH for a row's field\n const h = this.$createElement\n const hasDetailsSlot = this.hasNormalizedSlot(detailsSlotName)\n const formatted = this.getFormattedValue(item, field)\n const key = field.key\n const stickyColumn =\n !this.isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn\n // 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 const cellTag = stickyColumn\n ? field.isRowHeader\n ? BTh\n : BTd\n : field.isRowHeader\n ? 'th'\n : 'td'\n const cellVariant =\n item._cellVariants && item._cellVariants[key]\n ? item._cellVariants[key]\n : field.variant || null\n const 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-${rowIndex}-cell-${colIndex}-${key}`,\n class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n props: {},\n attrs: {\n 'aria-colindex': String(colIndex + 1),\n ...(field.isRowHeader\n ? this.getThValues(item, key, field.thAttr, 'row', {})\n : 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'] =\n 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\n // Add in the variant class\n if (cellVariant) {\n data.class.push(`${this.dark ? 'bg' : 'table'}-${cellVariant}`)\n }\n }\n const 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 }\n // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n if (this.supportsSelectableRows) {\n slotScope.rowSelected = this.isRowSelected(rowIndex)\n slotScope.selectRow = () => this.selectRow(rowIndex)\n slotScope.unselectRow = () => this.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 const slotName = this.$_bodyFieldSlotNameCache[key]\n let $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted)\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 }\n // Render either a td or th cell\n return h(cellTag, data, [$childNodes])\n },\n renderTbodyRow(item, rowIndex) {\n // Renders an item's row (or rows if details supported)\n const h = this.$createElement\n const fields = this.computedFields\n const tableStriped = this.striped\n const hasDetailsSlot = this.hasNormalizedSlot(detailsSlotName)\n const rowShowDetails = item._showDetails && hasDetailsSlot\n const hasRowClickHandler = this.$listeners['row-clicked'] || this.hasSelectableRowClick\n\n // We can return more than one TR if rowDetails enabled\n const $rows = []\n\n // 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 const detailsId = rowShowDetails ? this.safeId(`_details_${rowIndex}_`) : null\n\n // For each item data field in row\n const $tds = fields.map((field, colIndex) => {\n return this.renderTbodyRowCell(field, colIndex, item, rowIndex)\n })\n\n // Calculate the row number in the dataset (indexed from 1)\n let ariaRowIndex = null\n if (this.currentPage && this.perPage && this.perPage > 0) {\n ariaRowIndex = String((this.currentPage - 1) * this.perPage + rowIndex + 1)\n }\n\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 const primaryKey = this.primaryKey\n const primaryKeyValue = toString(get(item, primaryKey)) || null\n const rowKey = primaryKeyValue || toString(rowIndex)\n\n // 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 const rowId = primaryKeyValue ? this.safeId(`_row_${primaryKeyValue}`) : null\n\n // Selectable classes and attributes\n const selectableClasses = this.selectableRowClasses ? this.selectableRowClasses(rowIndex) : {}\n const selectableAttrs = this.selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}\n\n // Additional classes and attributes\n const userTrClasses = isFunction(this.tbodyTrClass)\n ? this.tbodyTrClass(item, 'row')\n : this.tbodyTrClass\n const userTrAttrs = isFunction(this.tbodyTrAttr)\n ? this.tbodyTrAttr(item, 'row')\n : this.tbodyTrAttr\n\n // Add the item row\n $rows.push(\n h(\n BTr,\n {\n key: `__b-table-row-${rowKey}__`,\n ref: 'itemRows',\n refInFor: true,\n class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n props: { variant: item._rowVariant || null },\n attrs: {\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 },\n on: {\n // Note: These events are not A11Y friendly!\n mouseenter: this.rowHovered,\n mouseleave: this.rowUnhovered\n }\n },\n $tds\n )\n )\n\n // Row Details slot\n if (rowShowDetails) {\n const detailsScope = {\n item: item,\n index: rowIndex,\n fields: fields,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n }\n // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n if (this.supportsSelectableRows) {\n detailsScope.rowSelected = this.isRowSelected(rowIndex)\n detailsScope.selectRow = () => this.selectRow(rowIndex)\n detailsScope.unselectRow = () => this.unselectRow(rowIndex)\n }\n\n // Render the details slot in a TD\n const $details = h(BTd, { props: { colspan: fields.length }, class: this.detailsTdClass }, [\n this.normalizeSlot(detailsSlotName, detailsScope)\n ])\n\n // Add a hidden row to keep table row striping consistent when details showing\n // Only added if the table is striped\n if (tableStriped) {\n $rows.push(\n // We don't use `BTr` here as we don't need the extra functionality\n h('tr', {\n key: `__b-table-details-stripe__${rowKey}`,\n staticClass: 'd-none',\n attrs: { 'aria-hidden': 'true', role: 'presentation' }\n })\n )\n }\n\n // Add the actual details row\n const userDetailsTrClasses = isFunction(this.tbodyTrClass)\n ? this.tbodyTrClass(item, detailsSlotName)\n : this.tbodyTrClass\n const userDetailsTrAttrs = isFunction(this.tbodyTrAttr)\n ? this.tbodyTrAttr(item, detailsSlotName)\n : this.tbodyTrAttr\n $rows.push(\n h(\n BTr,\n {\n key: `__b-table-details__${rowKey}`,\n staticClass: 'b-table-details',\n class: [userDetailsTrClasses],\n props: { variant: item._rowVariant || null },\n attrs: {\n ...userDetailsTrAttrs,\n // Users cannot override the following attributes\n id: detailsId,\n tabindex: '-1'\n }\n },\n [$details]\n )\n )\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 if (tableStriped) {\n // Add extra placeholder if table is striped\n $rows.push(h())\n }\n }\n\n // Return the row(s)\n return $rows\n }\n }\n}\n","import { htmlOrText } from '../../../utils/html'\nimport { isFunction } from '../../../utils/inspect'\nimport { BTr } from '../tr'\nimport { BTd } from '../td'\n\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() {\n const h = this.$createElement\n const items = this.computedItems\n let $empty\n\n if (\n this.showEmpty &&\n (!items || items.length === 0) &&\n !(this.computedBusy && this.hasNormalizedSlot('table-busy'))\n ) {\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 if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: this.isFiltered\n ? htmlOrText(this.emptyFilteredHtml, this.emptyFilteredText)\n : htmlOrText(this.emptyHtml, this.emptyText)\n })\n }\n $empty = h(BTd, { props: { colspan: this.computedFields.length || null } }, [\n h('div', { attrs: { role: 'alert', 'aria-live': 'polite' } }, [$empty])\n ])\n $empty = h(\n BTr,\n {\n key: this.isFiltered ? 'b-empty-filtered-row' : 'b-empty-row',\n staticClass: 'b-table-empty-row',\n class: [\n isFunction(this.tbodyTrClass)\n ? this.tbodyTrClass(null, 'row-empty')\n : this.tbodyTrClass\n ],\n attrs: isFunction(this.tbodyTrAttr)\n ? this.tbodyTrAttr(null, 'row-empty')\n : this.tbodyTrAttr\n },\n [$empty]\n )\n }\n\n return $empty || h()\n }\n }\n}\n","import { isFunction } from '../../../utils/inspect'\nimport { BTr } from '../tr'\n\nconst slotName = 'top-row'\n\nexport default {\n methods: {\n renderTopRow() {\n const h = this.$createElement\n\n // 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 if (!this.hasNormalizedSlot(slotName) || this.stacked === true || this.stacked === '') {\n return h()\n }\n\n const fields = this.computedFields\n\n return h(\n BTr,\n {\n key: 'b-top-row',\n staticClass: 'b-table-top-row',\n class: [\n isFunction(this.tbodyTrClass) ? this.tbodyTrClass(null, 'row-top') : this.tbodyTrClass\n ],\n attrs: isFunction(this.tbodyTrAttr) ? this.tbodyTrAttr(null, 'row-top') : this.tbodyTrAttr\n },\n [this.normalizeSlot(slotName, { columns: fields.length, fields: fields })]\n )\n }\n }\n}\n","import { isFunction } from '../../../utils/inspect'\nimport { BTr } from '../tr'\n\nconst slotName = 'bottom-row'\n\nexport default {\n methods: {\n renderBottomRow() {\n const h = this.$createElement\n\n // 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 if (!this.hasNormalizedSlot(slotName) || this.stacked === true || this.stacked === '') {\n return h()\n }\n\n const fields = this.computedFields\n\n return h(\n BTr,\n {\n key: 'b-bottom-row',\n staticClass: 'b-table-bottom-row',\n class: [\n isFunction(this.tbodyTrClass)\n ? this.tbodyTrClass(null, 'row-bottom')\n : this.tbodyTrClass\n ],\n attrs: isFunction(this.tbodyTrAttr)\n ? this.tbodyTrAttr(null, 'row-bottom')\n : this.tbodyTrAttr\n },\n this.normalizeSlot(slotName, { columns: fields.length, fields: fields })\n )\n }\n }\n}\n","import { isFunction } from '../../../utils/inspect'\nimport { BTr } from '../tr'\nimport { BTd } from '../td'\n\nconst busySlotName = 'table-busy'\n\nexport default {\n props: {\n busy: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n localBusy: false\n }\n },\n computed: {\n computedBusy() {\n return this.busy || this.localBusy\n }\n },\n watch: {\n localBusy(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit('update:busy', newVal)\n }\n }\n },\n methods: {\n // Event handler helper\n 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 return false\n },\n // Render the busy indicator or return `null` if not busy\n renderBusy() {\n const h = this.$createElement\n\n // Return a busy indicator row, or `null` if not busy\n if (this.computedBusy && this.hasNormalizedSlot(busySlotName)) {\n // Show the busy slot\n return h(\n BTr,\n {\n key: 'table-busy-slot',\n staticClass: 'b-table-busy-slot',\n class: [\n isFunction(this.tbodyTrClass)\n ? this.tbodyTrClass(null, busySlotName)\n : this.tbodyTrClass\n ],\n attrs: isFunction(this.tbodyTrAttr)\n ? this.tbodyTrAttr(null, busySlotName)\n : this.tbodyTrAttr\n },\n [\n h(BTd, { props: { colspan: this.computedFields.length || null } }, [\n this.normalizeSlot(busySlotName)\n ])\n ]\n )\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}\n","import 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'\n\nexport default {\n props: {\n selectable: {\n type: Boolean,\n default: false\n },\n selectMode: {\n type: String,\n default: 'multi',\n validator: val => arrayIncludes(['range', 'multi', 'single'], val)\n },\n selectedVariant: {\n type: String,\n default: () => getComponentConfig('BTable', 'selectedVariant')\n },\n noSelectOnClick: {\n // Disable use of click handlers for row selection\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n }\n },\n computed: {\n isSelectable() {\n return this.selectable && this.selectMode\n },\n hasSelectableRowClick() {\n return this.isSelectable && !this.noSelectOnClick\n },\n supportsSelectableRows() {\n return true\n },\n selectableHasSelection() {\n return (\n this.isSelectable &&\n this.selectedRows &&\n this.selectedRows.length > 0 &&\n this.selectedRows.some(identity)\n )\n },\n selectableIsMultiSelect() {\n return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode)\n },\n selectableTableClasses() {\n return {\n 'b-table-selectable': this.isSelectable,\n [`b-table-select-${this.selectMode}`]: this.isSelectable,\n 'b-table-selecting': this.selectableHasSelection,\n 'b-table-selectable-no-click': this.isSelectable && !this.hasSelectableRowClick\n }\n },\n 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\n ? null\n : this.selectableIsMultiSelect\n ? 'true'\n : 'false'\n }\n }\n },\n watch: {\n computedItems(newVal, oldVal) {\n // Reset for selectable\n let equal = false\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 for (let 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 if (!equal) {\n this.clearSelected()\n }\n },\n selectable(newVal) {\n this.clearSelected()\n this.setSelectionHandlers(newVal)\n },\n selectMode() {\n this.clearSelected()\n },\n hasSelectableRowClick(newVal) {\n this.clearSelected()\n this.setSelectionHandlers(!newVal)\n },\n selectedRows(selectedRows, oldVal) {\n if (this.isSelectable && !looseEqual(selectedRows, oldVal)) {\n const items = []\n // `.forEach()` skips over non-existent indices (on sparse arrays)\n selectedRows.forEach((v, idx) => {\n if (v) {\n items.push(this.computedItems[idx])\n }\n })\n this.$emit('row-selected', items)\n }\n }\n },\n beforeMount() {\n // Set up handlers if needed\n if (this.isSelectable) {\n this.setSelectionHandlers(true)\n }\n },\n methods: {\n // Public methods\n selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (\n this.isSelectable &&\n isNumber(index) &&\n index >= 0 &&\n index < this.computedItems.length &&\n !this.isRowSelected(index)\n ) {\n const selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : []\n selectedRows[index] = true\n this.selectedLastClicked = -1\n this.selectedRows = selectedRows\n }\n },\n unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n const selectedRows = this.selectedRows.slice()\n selectedRows[index] = false\n this.selectedLastClicked = -1\n this.selectedRows = selectedRows\n }\n },\n selectAllRows() {\n const length = this.computedItems.length\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1\n this.selectedRows = this.selectableIsMultiSelect ? range(length).map(() => true) : [true]\n }\n },\n isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return !!(isNumber(index) && this.selectedRows[index])\n },\n clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1\n this.selectedRows = []\n },\n // Internal private methods\n selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n const variant = this.selectedVariant\n return {\n 'b-table-row-selected': true,\n [`${this.dark ? 'bg' : 'table'}-${variant}`]: variant\n }\n } else {\n return {}\n }\n },\n selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n }\n },\n setSelectionHandlers(on) {\n const method = on && !this.noSelectOnClick ? '$on' : '$off'\n // Handle row-clicked event\n this[method]('row-clicked', this.selectionHandler)\n // Clear selection on filter, pagination, and sort changes\n this[method]('filtered', this.clearSelected)\n this[method]('context-changed', this.clearSelected)\n },\n 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 const selectMode = this.selectMode\n let selectedRows = this.selectedRows.slice()\n let selected = !selectedRows[index]\n // Note 'multi' mode needs no special event handling\n if (selectMode === 'single') {\n selectedRows = []\n } else if (selectMode === 'range') {\n if (this.selectedLastRow > -1 && evt.shiftKey) {\n // range\n for (\n let idx = Math.min(this.selectedLastRow, index);\n idx <= Math.max(this.selectedLastRow, index);\n idx++\n ) {\n selectedRows[idx] = true\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 this.selectedLastRow = selected ? index : -1\n }\n }\n selectedRows[index] = selected\n this.selectedRows = selectedRows\n }\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'\n\nexport default {\n mixins: [listenOnRootMixin],\n props: {\n // Prop override(s)\n items: {\n // Adds in 'Function' support\n type: [Array, Function],\n default() /* istanbul ignore next */ {\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() {\n return isFunction(this.items)\n },\n 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 const ctx = {\n apiUrl: this.apiUrl,\n filter: null,\n sortBy: null,\n sortDesc: null,\n perPage: null,\n currentPage: null\n }\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter\n }\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy\n ctx.sortDesc = this.localSortDesc\n }\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage\n ctx.currentPage = this.currentPage\n }\n return clone(ctx)\n }\n },\n watch: {\n // Provider update triggering\n 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(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() {\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 }\n // Listen for global messages to tell us to force refresh the table\n this.listenOnRoot('bv::refresh::table', id => {\n if (id === this.id || id === this) {\n this.refresh()\n }\n })\n },\n methods: {\n refresh() {\n // Public Method: Force a refresh of the provider function\n this.$off('refreshed', this.refresh)\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 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(items) {\n this.localItems = isArray(items) ? items.slice() : []\n this.localBusy = false\n this.$emit('refreshed')\n // New root emit\n if (this.id) {\n this.emitOnRoot('bv::table::refreshed', this.id)\n }\n },\n _providerUpdate() {\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return\n }\n // If table is busy, wait until refreshed before calling again\n if (this.computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh)\n return\n }\n\n // Set internal busy state\n this.localBusy = true\n\n // Call provider function with context and optional callback after DOM is fully updated\n this.$nextTick(() => {\n try {\n // Call provider function passing it the context and optional callback\n const data = this.items(this.context, this._providerSetLocal)\n if (isPromise(data)) {\n // Provider returned Promise\n data.then(items => {\n // Provider resolved with items\n this._providerSetLocal(items)\n })\n } else if (isArray(data)) {\n // Provider returned Array data\n this._providerSetLocal(data)\n } else {\n /* istanbul ignore if */\n if (this.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 /* istanbul ignore next */\n warn(\n \"Provider function didn't request callback and did not return a promise or data.\",\n 'BTable'\n )\n this.localBusy = false\n }\n }\n } catch (e) /* istanbul ignore next */ {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(`Provider function error [${e.name}] ${e.message}.`, 'BTable')\n this.localBusy = false\n this.$off('refreshed', this.refresh)\n }\n })\n }\n }\n}\n","import identity from '../../../utils/identity'\nimport { isBoolean } from '../../../utils/inspect'\nimport { toString } from '../../../utils/string'\n\n// 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() {\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() {\n const responsive = this.responsive === '' ? true : this.responsive\n return this.isStacked ? false : responsive\n },\n isStickyHeader() {\n const stickyHeader = this.stickyHeader === '' ? true : this.stickyHeader\n return this.isStacked ? false : stickyHeader\n },\n wrapperClasses() {\n return [\n this.isStickyHeader ? 'b-table-sticky-header' : '',\n this.isResponsive === true\n ? 'table-responsive'\n : this.isResponsive\n ? `table-responsive-${this.responsive}`\n : ''\n ].filter(identity)\n },\n wrapperStyles() {\n return this.isStickyHeader && !isBoolean(this.isStickyHeader)\n ? { maxHeight: this.isStickyHeader }\n : {}\n },\n tableClasses() {\n const hover = this.isTableSimple\n ? this.hover\n : this.hover && this.computedItems.length > 0 && !this.computedBusy\n\n return [\n // User supplied classes\n this.tableClass,\n // 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 },\n this.tableVariant ? `${this.dark ? 'bg' : 'table'}-${this.tableVariant}` : '',\n // Stacked table classes\n this.stackedTableClasses,\n // Selectable classes\n this.selectableTableClasses\n ]\n },\n tableAttrs() {\n // Preserve user supplied aria-describedby, if provided in `$attrs`\n const adb =\n [(this.$attrs || {})['aria-describedby'], this.captionId].filter(identity).join(' ') || null\n const items = this.computedItems\n const filteredItems = this.filteredItems\n const fields = this.computedFields\n const selectableAttrs = this.selectableTableAttrs || {}\n const ariaAttrs = this.isTableSimple\n ? {}\n : {\n 'aria-busy': this.computedBusy ? 'true' : 'false',\n 'aria-colcount': toString(fields.length),\n 'aria-describedby': adb\n }\n const rowCount =\n items && filteredItems && filteredItems.length > items.length\n ? toString(filteredItems.length)\n : null\n\n return {\n // We set `aria-rowcount` before merging in `$attrs`,\n // in case user has supplied their own\n 'aria-rowcount': rowCount,\n // Merge in user supplied `$attrs` if any\n ...this.$attrs,\n // Now we can override any `$attrs` here\n id: this.safeId(),\n role: 'table',\n ...ariaAttrs,\n ...selectableAttrs\n }\n }\n },\n render(h) {\n const $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)\n\n // Build the `<colgroup>`\n $content.push(this.renderColgroup ? this.renderColgroup() : null)\n\n // Build the `<thead>`\n $content.push(this.renderThead ? this.renderThead() : null)\n\n // Build the `<tbody>`\n $content.push(this.renderTbody ? this.renderTbody() : null)\n\n // Build the `<tfoot>`\n $content.push(this.renderTfoot ? this.renderTfoot() : null)\n }\n\n // Assemble `<table>`\n const $table = h(\n 'table',\n {\n key: 'b-table',\n staticClass: 'table b-table',\n class: this.tableClasses,\n attrs: this.tableAttrs\n },\n $content.filter(identity)\n )\n\n // Add responsive/sticky wrapper if needed and return table\n return this.wrapperClasses.length > 0\n ? h('div', { key: 'wrap', class: this.wrapperClasses, style: this.wrapperStyles }, [$table])\n : $table\n }\n}\n","import Vue from '../../utils/vue'\n\n// Mixins\nimport hasListenerMixin from '../../mixins/has-listener'\nimport idMixin from '../../mixins/id'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\n// Table helper Mixins\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'\n\n// Main table renderer mixin\nimport tableRendererMixin from './helpers/mixin-table-renderer'\n\n// b-table component definition\n// @vue/component\nexport const 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: [\n // Required Mixins\n hasListenerMixin,\n idMixin,\n normalizeSlotMixin,\n itemsMixin,\n tableRendererMixin,\n stackedMixin,\n theadMixin,\n tfootMixin,\n tbodyMixin,\n // Features Mixins\n stackedMixin,\n filteringMixin,\n sortingMixin,\n paginationMixin,\n captionMixin,\n colgroupMixin,\n selectableMixin,\n emptyMixin,\n topRowMixin,\n bottomRowMixin,\n busyMixin,\n providerMixin\n ]\n // render function provided by table-renderer mixin\n})\n","import Vue from '../../utils/vue'\n\n// Mixins\nimport hasListenerMixin from '../../mixins/has-listener'\nimport idMixin from '../../mixins/id'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\n// Table helper Mixins\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'\n\n// Main table renderer mixin\nimport tableRendererMixin from './helpers/mixin-table-renderer'\n\n// b-table-lite component definition\n// @vue/component\nexport const 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: [\n // Required mixins\n hasListenerMixin,\n idMixin,\n normalizeSlotMixin,\n itemsMixin,\n tableRendererMixin,\n stackedMixin,\n theadMixin,\n tfootMixin,\n tbodyMixin,\n // Features Mixins\n // These are pretty lightweight, and are useful for lightweight tables\n captionMixin,\n colgroupMixin\n ]\n // render function provided by table-renderer mixin\n})\n","import Vue from '../../utils/vue'\n\n// Mixins\nimport idMixin from '../../mixins/id'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\n\n// Main table renderer mixin\nimport tableRendererMixin from './helpers/mixin-table-renderer'\n\n// Feature miins\nimport stackedMixin from './helpers/mixin-stacked'\n\n// b-table-simple component definition\n// @vue/component\nexport const 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: [\n // Required mixins\n idMixin,\n normalizeSlotMixin,\n tableRendererMixin,\n // feature mixin\n // Stacked requires extra handling by users via\n // the table cell `stacked-heading` prop\n stackedMixin\n ],\n computed: {\n isTableSimple() {\n return true\n }\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'\n\nconst TableLitePlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BTableLite\n }\n})\n\nconst TableSimplePlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BTableSimple,\n BTbody,\n BThead,\n BTfoot,\n BTr,\n BTd,\n BTh\n }\n})\n\nconst TablePlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BTable\n },\n plugins: {\n TableLitePlugin,\n TableSimplePlugin\n }\n})\n\nexport {\n // Plugins\n TablePlugin,\n TableLitePlugin,\n TableSimplePlugin,\n // Table components\n BTable,\n BTableLite,\n BTableSimple,\n // Helper components\n BTbody,\n BThead,\n BTfoot,\n BTr,\n BTd,\n BTh\n}\n","import Vue from '../../utils/vue'\nimport identity from '../../utils/identity'\nimport KeyCodes from '../../utils/key-codes'\nimport looseEqual from '../../utils/loose-equal'\nimport observeDom from '../../utils/observe-dom'\nimport stableSort from '../../utils/stable-sort'\nimport { arrayIncludes, concat } from '../../utils/array'\nimport { BvEvent } from '../../utils/bv-event.class'\nimport { requestAF, selectAll } from '../../utils/dom'\nimport { isEvent } from '../../utils/inspect'\nimport { omit } from '../../utils/object'\nimport idMixin from '../../mixins/id'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport { BLink } from '../link/link'\nimport { BNav, props as BNavProps } from '../nav/nav'\n\n// -- Constants --\n\nconst navProps = omit(BNavProps, ['tabs', 'isNavBar', 'cardHeader'])\n\n// -- Utils --\n\n// Filter function to filter out disabled tabs\nconst notDisabled = tab => !tab.disabled\n\n// --- Helper components ---\n\n// @vue/component\nconst BTabButtonHelper = /*#__PURE__*/ Vue.extend({\n name: 'BTabButtonHelper',\n inject: {\n bvTabs: {\n default() /* istanbul ignore next */ {\n return {}\n }\n }\n },\n props: {\n // Reference to the child <b-tab> instance\n tab: { default: null },\n tabs: {\n type: Array,\n default() /* istanbul ignore next */ {\n return []\n }\n },\n id: { type: String, default: null },\n controls: { type: String, default: null },\n tabIndex: { type: Number, default: null },\n posInSet: { type: Number, default: null },\n setSize: { type: Number, default: null },\n noKeyNav: { type: Boolean, default: false }\n },\n methods: {\n focus() {\n if (this.$refs && this.$refs.link && this.$refs.link.focus) {\n this.$refs.link.focus()\n }\n },\n handleEvt(evt) {\n const stop = () => {\n evt.preventDefault()\n evt.stopPropagation()\n }\n if (this.tab.disabled) {\n /* istanbul ignore next */\n return\n }\n const type = evt.type\n const key = evt.keyCode\n const shift = evt.shiftKey\n if (type === 'click') {\n stop()\n this.$emit('click', evt)\n } else if (type === 'keydown' && key === KeyCodes.SPACE) {\n // For ARIA tabs the SPACE key will also trigger a click/select\n // Even with keyboard navigation disabled, SPACE should \"click\" the button\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n stop()\n this.$emit('click', evt)\n } else if (type === 'keydown' && !this.noKeyNav) {\n // For keyboard navigation\n if (key === KeyCodes.UP || key === KeyCodes.LEFT || key === KeyCodes.HOME) {\n stop()\n if (shift || key === KeyCodes.HOME) {\n this.$emit('first', evt)\n } else {\n this.$emit('prev', evt)\n }\n } else if (key === KeyCodes.DOWN || key === KeyCodes.RIGHT || key === KeyCodes.END) {\n stop()\n if (shift || key === KeyCodes.END) {\n this.$emit('last', evt)\n } else {\n this.$emit('next', evt)\n }\n }\n }\n }\n },\n render(h) {\n const link = h(\n BLink,\n {\n ref: 'link',\n staticClass: 'nav-link',\n class: [\n {\n active: this.tab.localActive && !this.tab.disabled,\n disabled: this.tab.disabled\n },\n this.tab.titleLinkClass,\n // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n this.tab.localActive ? this.bvTabs.activeNavItemClass : null\n ],\n props: { disabled: this.tab.disabled },\n attrs: {\n role: 'tab',\n id: this.id,\n // Roving tab index when keynav enabled\n tabindex: this.tabIndex,\n 'aria-selected': this.tab.localActive && !this.tab.disabled ? 'true' : 'false',\n 'aria-setsize': this.setSize,\n 'aria-posinset': this.posInSet,\n 'aria-controls': this.controls\n },\n on: {\n click: this.handleEvt,\n keydown: this.handleEvt\n }\n },\n [this.tab.normalizeSlot('title') || this.tab.title]\n )\n return h(\n 'li',\n {\n staticClass: 'nav-item',\n class: [this.tab.titleItemClass],\n attrs: { role: 'presentation' }\n },\n [link]\n )\n }\n})\n\n// @vue/component\nexport const BTabs = /*#__PURE__*/ Vue.extend({\n name: 'BTabs',\n mixins: [idMixin, normalizeSlotMixin],\n provide() {\n return {\n bvTabs: this\n }\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n ...navProps,\n tag: {\n type: String,\n default: 'div'\n },\n card: {\n type: Boolean,\n default: false\n },\n end: {\n // Synonym for 'bottom'\n type: Boolean,\n default: false\n },\n noFade: {\n type: Boolean,\n default: false\n },\n noNavStyle: {\n type: Boolean,\n default: false\n },\n noKeyNav: {\n type: Boolean,\n default: false\n },\n lazy: {\n // This prop is sniffed by the <b-tab> child\n type: Boolean,\n default: false\n },\n contentClass: {\n type: [String, Array, Object],\n default: null\n },\n navClass: {\n type: [String, Array, Object],\n default: null\n },\n navWrapperClass: {\n type: [String, Array, Object],\n default: null\n },\n activeNavItemClass: {\n // Only applied to the currently active <b-nav-item>\n type: [String, Array, Object],\n default: null\n },\n activeTabClass: {\n // Only applied to the currently active <b-tab>\n // This prop is sniffed by the <b-tab> child\n type: [String, Array, Object],\n default: null\n },\n value: {\n // v-model\n type: Number,\n default: null\n }\n },\n data() {\n let tabIdx = parseInt(this.value, 10)\n tabIdx = isNaN(tabIdx) ? -1 : tabIdx\n return {\n // Index of current tab\n currentTab: tabIdx,\n // Array of direct child <b-tab> instances, in DOM order\n tabs: [],\n // Array of child instances registered (for triggering reactive updates)\n registeredTabs: [],\n // Flag to know if we are mounted or not\n isMounted: false\n }\n },\n computed: {\n fade() {\n // This computed prop is sniffed by the tab child\n return !this.noFade\n },\n localNavClass() {\n const classes = []\n if (this.card && this.vertical) {\n classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0')\n }\n return [...classes, this.navClass]\n }\n },\n watch: {\n currentTab(newVal) {\n let index = -1\n // Ensure only one tab is active at most\n this.tabs.forEach((tab, idx) => {\n if (newVal === idx && !tab.disabled) {\n tab.localActive = true\n index = idx\n } else {\n tab.localActive = false\n }\n })\n // Update the v-model\n this.$emit('input', index)\n },\n value(newVal, oldVal) {\n if (newVal !== oldVal) {\n newVal = parseInt(newVal, 10)\n newVal = isNaN(newVal) ? -1 : newVal\n oldVal = parseInt(oldVal, 10) || 0\n const tabs = this.tabs\n if (tabs[newVal] && !tabs[newVal].disabled) {\n this.activateTab(tabs[newVal])\n } else {\n // Try next or prev tabs\n if (newVal < oldVal) {\n this.previousTab()\n } else {\n this.nextTab()\n }\n }\n }\n },\n registeredTabs() {\n // Each b-tab will register/unregister itself.\n // We use this to detect when tabs are added/removed\n // to trigger the update of the tabs.\n this.$nextTick(() => {\n requestAF(() => {\n this.updateTabs()\n })\n })\n },\n tabs(newVal, oldVal) {\n // If tabs added, removed, or re-ordered, we emit a `changed` event.\n // We use `tab._uid` instead of `tab.safeId()`, as the later is changed\n // in a nextTick if no explicit ID is provided, causing duplicate emits.\n if (!looseEqual(newVal.map(t => t._uid), oldVal.map(t => t._uid))) {\n // In a nextTick to ensure currentTab has been set first.\n this.$nextTick(() => {\n // We emit shallow copies of the new and old arrays of tabs, to\n // prevent users from potentially mutating the internal arrays.\n this.$emit('changed', newVal.slice(), oldVal.slice())\n })\n }\n },\n isMounted(newVal) {\n // Trigger an update after mounted. Needed for tabs inside lazy modals.\n if (newVal) {\n requestAF(() => {\n this.updateTabs()\n })\n }\n // Enable or disable the observer\n this.setObserver(newVal)\n }\n },\n created() {\n const tabIdx = parseInt(this.value, 10)\n this.currentTab = isNaN(tabIdx) ? -1 : tabIdx\n this._bvObserver = null\n // For SSR and to make sure only a single tab is shown on mount\n // We wrap this in a `$nextTick()` to ensure the child tabs have been created\n this.$nextTick(() => {\n this.updateTabs()\n })\n },\n mounted() {\n // Call `updateTabs()` just in case...\n this.updateTabs()\n this.$nextTick(() => {\n // Flag we are now mounted and to switch to DOM for tab probing.\n // As this.$slots.default appears to lie about component instances\n // after b-tabs is destroyed and re-instantiated.\n // And this.$children does not respect DOM order.\n this.isMounted = true\n })\n },\n deactivated() /* istanbul ignore next */ {\n this.isMounted = false\n },\n activated() /* istanbul ignore next */ {\n const tabIdx = parseInt(this.value, 10)\n this.currentTab = isNaN(tabIdx) ? -1 : tabIdx\n this.$nextTick(() => {\n this.updateTabs()\n this.isMounted = true\n })\n },\n beforeDestroy() {\n this.isMounted = false\n },\n destroyed() {\n // Ensure no references to child instances exist\n this.tabs = []\n },\n methods: {\n registerTab(tab) {\n if (!arrayIncludes(this.registeredTabs, tab)) {\n this.registeredTabs.push(tab)\n tab.$once('hook:destroyed', () => {\n this.unregisterTab(tab)\n })\n }\n },\n unregisterTab(tab) {\n this.registeredTabs = this.registeredTabs.slice().filter(t => t !== tab)\n },\n setObserver(on) {\n // DOM observer is needed to detect changes in order of tabs\n if (on) {\n // Make sure no existing observer running\n this.setObserver(false)\n const self = this\n /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n const handler = () => {\n // We delay the update to ensure that `tab.safeId()` has\n // updated with the final ID value.\n self.$nextTick(() => {\n requestAF(() => {\n self.updateTabs()\n })\n })\n }\n // Watch for changes to <b-tab> sub components\n this._bvObserver = observeDom(this.$refs.tabsContainer, handler, {\n childList: true,\n subtree: false,\n attributes: true,\n attributeFilter: ['id']\n })\n } else {\n if (this._bvObserver && this._bvObserver.disconnect) {\n this._bvObserver.disconnect()\n }\n this._bvObserver = null\n }\n },\n getTabs() {\n // We use registeredTabs as the source of truth for child tab components. And we\n // filter out any BTab components that are extended BTab with a root child BTab.\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3260\n const tabs = this.registeredTabs.filter(\n tab => tab.$children.filter(t => t._isTab).length === 0\n )\n // DOM Order of Tabs\n let order = []\n if (this.isMounted && tabs.length > 0) {\n // We rely on the DOM when mounted to get the 'true' order of the b-tab children.\n // querySelectorAll(...) always returns elements in document order, regardless of\n // order specified in the selector.\n const selector = tabs.map(tab => `#${tab.safeId()}`).join(', ')\n order = selectAll(selector, this.$el)\n .map(el => el.id)\n .filter(identity)\n }\n // Stable sort keeps the original order if not found in the\n // `order` array, which will be an empty array before mount.\n return stableSort(tabs, (a, b) => {\n return order.indexOf(a.safeId()) - order.indexOf(b.safeId())\n })\n },\n // Update list of <b-tab> children\n updateTabs() {\n // Probe tabs\n const tabs = this.getTabs()\n\n // Find *last* active non-disabled tab in current tabs\n // We trust tab state over currentTab, in case tabs were added/removed/re-ordered\n let tabIndex = tabs.indexOf(\n tabs\n .slice()\n .reverse()\n .find(tab => tab.localActive && !tab.disabled)\n )\n\n // Else try setting to currentTab\n if (tabIndex < 0) {\n const currentTab = this.currentTab\n if (currentTab >= tabs.length) {\n // Handle last tab being removed, so find the last non-disabled tab\n tabIndex = tabs.indexOf(\n tabs\n .slice()\n .reverse()\n .find(notDisabled)\n )\n } else if (tabs[currentTab] && !tabs[currentTab].disabled) {\n // Current tab is not disabled\n tabIndex = currentTab\n }\n }\n\n // Else find *first* non-disabled tab in current tabs\n if (tabIndex < 0) {\n tabIndex = tabs.indexOf(tabs.find(notDisabled))\n }\n\n // Set the current tab state to active\n tabs.forEach(tab => {\n // tab.localActive = idx === tabIndex && !tab.disabled\n tab.localActive = false\n })\n if (tabs[tabIndex]) {\n tabs[tabIndex].localActive = true\n }\n\n // Update the array of tab children\n this.tabs = tabs\n // Set the currentTab index (can be -1 if no non-disabled tabs)\n this.currentTab = tabIndex\n },\n // Find a button that controls a tab, given the tab reference\n // Returns the button vm instance\n getButtonForTab(tab) {\n return (this.$refs.buttons || []).find(btn => btn.tab === tab)\n },\n // Force a button to re-render its content, given a <b-tab> instance\n // Called by <b-tab> on `update()`\n updateButton(tab) {\n const button = this.getButtonForTab(tab)\n if (button && button.$forceUpdate) {\n button.$forceUpdate()\n }\n },\n // Activate a tab given a <b-tab> instance\n // Also accessed by <b-tab>\n activateTab(tab) {\n let result = false\n if (tab) {\n const index = this.tabs.indexOf(tab)\n if (!tab.disabled && index > -1 && index !== this.currentTab) {\n const tabEvt = new BvEvent('activate-tab', {\n cancelable: true,\n vueTarget: this,\n componentId: this.safeId()\n })\n this.$emit(tabEvt.type, index, this.currentTab, tabEvt)\n if (!tabEvt.defaultPrevented) {\n result = true\n this.currentTab = index\n }\n }\n }\n // Couldn't set tab, so ensure v-model is set to `this.currentTab`\n /* istanbul ignore next: should rarely happen */\n if (!result && this.currentTab !== this.value) {\n this.$emit('input', this.currentTab)\n }\n return result\n },\n // Deactivate a tab given a <b-tab> instance\n // Accessed by <b-tab>\n deactivateTab(tab) {\n if (tab) {\n // Find first non-disabled tab that isn't the one being deactivated\n // If no tabs are available, then don't deactivate current tab\n return this.activateTab(this.tabs.filter(t => t !== tab).find(notDisabled))\n }\n /* istanbul ignore next: should never/rarely happen */\n return false\n },\n // Focus a tab button given its <b-tab> instance\n focusButton(tab) {\n // Wrap in `$nextTick()` to ensure DOM has completed rendering/updating before focusing\n this.$nextTick(() => {\n const button = this.getButtonForTab(tab)\n if (button && button.focus) {\n button.focus()\n }\n })\n },\n // Emit a click event on a specified <b-tab> component instance\n emitTabClick(tab, evt) {\n if (isEvent(evt) && tab && tab.$emit && !tab.disabled) {\n tab.$emit('click', evt)\n }\n },\n // Click handler\n clickTab(tab, evt) {\n this.activateTab(tab)\n this.emitTabClick(tab, evt)\n },\n // Move to first non-disabled tab\n firstTab(focus) {\n const tab = this.tabs.find(notDisabled)\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab)\n this.emitTabClick(tab, focus)\n }\n },\n // Move to previous non-disabled tab\n previousTab(focus) {\n const currentIndex = Math.max(this.currentTab, 0)\n const tab = this.tabs\n .slice(0, currentIndex)\n .reverse()\n .find(notDisabled)\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab)\n this.emitTabClick(tab, focus)\n }\n },\n // Move to next non-disabled tab\n nextTab(focus) {\n const currentIndex = Math.max(this.currentTab, -1)\n const tab = this.tabs.slice(currentIndex + 1).find(notDisabled)\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab)\n this.emitTabClick(tab, focus)\n }\n },\n // Move to last non-disabled tab\n lastTab(focus) {\n const tab = this.tabs\n .slice()\n .reverse()\n .find(notDisabled)\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab)\n this.emitTabClick(tab, focus)\n }\n }\n },\n render(h) {\n const tabs = this.tabs\n\n // Currently active tab\n const activeTab = tabs.find(tab => tab.localActive && !tab.disabled)\n\n // Tab button to allow focusing when no active tab found (keynav only)\n const fallbackTab = tabs.find(tab => !tab.disabled)\n\n // For each <b-tab> found create the tab buttons\n const buttons = tabs.map((tab, index) => {\n let tabIndex = null\n // Ensure at least one tab button is focusable when keynav enabled (if possible)\n if (!this.noKeyNav) {\n // Buttons are not in tab index unless active, or a fallback tab\n tabIndex = -1\n if (activeTab === tab || (!activeTab && fallbackTab === tab)) {\n // Place tab button in tab sequence\n tabIndex = null\n }\n }\n return h(BTabButtonHelper, {\n key: tab._uid || index,\n ref: 'buttons',\n // Needed to make `this.$refs.buttons` an array\n refInFor: true,\n props: {\n tab: tab,\n tabs: tabs,\n id: tab.controlledBy || (tab.safeId ? tab.safeId(`_BV_tab_button_`) : null),\n controls: tab.safeId ? tab.safeId() : null,\n tabIndex,\n setSize: tabs.length,\n posInSet: index + 1,\n noKeyNav: this.noKeyNav\n },\n on: {\n click: evt => {\n this.clickTab(tab, evt)\n },\n first: this.firstTab,\n prev: this.previousTab,\n next: this.nextTab,\n last: this.lastTab\n }\n })\n })\n\n // Nav\n let nav = h(\n BNav,\n {\n ref: 'nav',\n class: this.localNavClass,\n attrs: {\n role: 'tablist',\n id: this.safeId('_BV_tab_controls_')\n },\n props: {\n fill: this.fill,\n justified: this.justified,\n align: this.align,\n tabs: !this.noNavStyle && !this.pills,\n pills: !this.noNavStyle && this.pills,\n vertical: this.vertical,\n small: this.small,\n cardHeader: this.card && !this.vertical\n }\n },\n [this.normalizeSlot('tabs-start') || h(), buttons, this.normalizeSlot('tabs-end') || h()]\n )\n nav = h(\n 'div',\n {\n key: 'bv-tabs-nav',\n class: [\n {\n 'card-header': this.card && !this.vertical && !this.end,\n 'card-footer': this.card && !this.vertical && this.end,\n 'col-auto': this.vertical\n },\n this.navWrapperClass\n ]\n },\n [nav]\n )\n\n let empty = h()\n if (!tabs || tabs.length === 0) {\n empty = h(\n 'div',\n { key: 'bv-empty-tab', class: ['tab-pane', 'active', { 'card-body': this.card }] },\n this.normalizeSlot('empty')\n )\n }\n\n // Main content section\n const content = h(\n 'div',\n {\n ref: 'tabsContainer',\n key: 'bv-tabs-container',\n staticClass: 'tab-content',\n class: [{ col: this.vertical }, this.contentClass],\n attrs: { id: this.safeId('_BV_tab_container_') }\n },\n concat(this.normalizeSlot('default'), empty)\n )\n\n // Render final output\n return h(\n this.tag,\n {\n staticClass: 'tabs',\n class: {\n row: this.vertical,\n 'no-gutters': this.vertical && this.card\n },\n attrs: { id: this.safeId() }\n },\n [this.end ? content : h(), [nav], this.end ? h() : content]\n )\n }\n})\n","import { BTabs } from './tabs'\nimport { BTab } from './tab'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst TabsPlugin = /*#__PURE__*/ pluginFactory({\n components: {\n BTabs,\n BTab\n }\n})\n\nexport { TabsPlugin, BTabs, BTab }\n","import Vue from '../../utils/vue'\nimport idMixin from '../../mixins/id'\nimport normalizeSlotMixin from '../../mixins/normalize-slot'\nimport BVTransition from '../../utils/bv-transition'\n\n// @vue/component\nexport const BTab = /*#__PURE__*/ Vue.extend({\n name: 'BTab',\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n bvTabs: {\n default: () => ({})\n }\n },\n props: {\n active: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n },\n buttonId: {\n type: String,\n default: ''\n },\n title: {\n type: String,\n default: ''\n },\n titleItemClass: {\n // Sniffed by tabs.js and added to nav 'li.nav-item'\n type: [String, Array, Object],\n default: null\n },\n titleLinkClass: {\n // Sniffed by tabs.js and added to nav 'a.nav-link'\n type: [String, Array, Object],\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n noBody: {\n type: Boolean,\n default: false\n },\n lazy: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n localActive: this.active && !this.disabled,\n show: false\n }\n },\n computed: {\n tabClasses() {\n return [\n {\n active: this.localActive,\n disabled: this.disabled,\n 'card-body': this.bvTabs.card && !this.noBody\n },\n // Apply <b-tabs> `activeTabClass` styles when this tab is active\n this.localActive ? this.bvTabs.activeTabClass : null\n ]\n },\n controlledBy() {\n return this.buttonId || this.safeId('__BV_tab_button__')\n },\n computedNoFade() {\n return !(this.bvTabs.fade || false)\n },\n computedLazy() {\n return this.bvTabs.lazy || this.lazy\n },\n _isTab() {\n // For parent sniffing of child\n return true\n }\n },\n watch: {\n localActive(newVal) {\n // Make 'active' prop work with `.sync` modifier\n this.$emit('update:active', newVal)\n },\n active(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal) {\n // If activated post mount\n this.activate()\n } else {\n /* istanbul ignore next */\n if (!this.deactivate()) {\n // Tab couldn't be deactivated, so we reset the synced active prop\n // Deactivation will fail if no other tabs to activate\n this.$emit('update:active', this.localActive)\n }\n }\n }\n },\n disabled(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal && this.localActive && this.bvTabs.firstTab) {\n this.localActive = false\n this.bvTabs.firstTab()\n }\n }\n }\n },\n mounted() {\n // Inform b-tabs of our presence\n this.registerTab()\n // Initially show on mount if active and not disabled\n this.show = this.localActive\n },\n updated() {\n // Force the tab button content to update (since slots are not reactive)\n // Only done if we have a title slot, as the title prop is reactive\n if (this.hasNormalizedSlot('title') && this.bvTabs.updateButton) {\n this.bvTabs.updateButton(this)\n }\n },\n destroyed() {\n // inform b-tabs of our departure\n this.unregisterTab()\n },\n methods: {\n // Private methods\n registerTab() {\n // Inform `b-tabs` of our presence\n this.bvTabs.registerTab && this.bvTabs.registerTab(this)\n },\n unregisterTab() {\n // Inform `b-tabs` of our departure\n this.bvTabs.unregisterTab && this.bvTabs.unregisterTab(this)\n },\n // Public methods\n activate() {\n if (this.bvTabs.activateTab && !this.disabled) {\n return this.bvTabs.activateTab(this)\n } else {\n // Not inside a <b-tabs> component or tab is disabled\n return false\n }\n },\n deactivate() {\n if (this.bvTabs.deactivateTab && this.localActive) {\n return this.bvTabs.deactivateTab(this)\n } else {\n // Not inside a <b-tabs> component or not active to begin with\n return false\n }\n }\n },\n render(h) {\n const content = h(\n this.tag,\n {\n ref: 'panel',\n staticClass: 'tab-pane',\n class: this.tabClasses,\n directives: [\n {\n name: 'show',\n rawName: 'v-show',\n value: this.localActive,\n expression: 'localActive'\n }\n ],\n attrs: {\n role: 'tabpanel',\n id: this.safeId(),\n 'aria-hidden': this.localActive ? 'false' : 'true',\n 'aria-labelledby': this.controlledBy || null\n }\n },\n // Render content lazily if requested\n [this.localActive || !this.computedLazy ? this.normalizeSlot('default') : h()]\n )\n return h(BVTransition, { props: { mode: 'out-in', noFade: this.computedNoFade } }, [content])\n }\n})\n","\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\nimport Vue from '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\nexport default index;\nexport { Portal, PortalTarget, MountingPortal, wormhole as Wormhole };\n//# sourceMappingURL=portal-vue.esm.js.map\n","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'\n\n// --- Constants ---\n\nconst NAME = 'BToaster'\n\nexport const props = {\n name: {\n type: String,\n required: true\n },\n ariaLive: {\n type: String,\n default: () => getComponentConfig(NAME, 'ariaLive')\n },\n ariaAtomic: {\n type: String,\n default: () => getComponentConfig(NAME, 'ariaAtomic') // Allowed: 'true' or 'false' or null\n },\n role: {\n // Aria role\n type: String,\n default: () => getComponentConfig(NAME, 'role')\n }\n /*\n transition: {\n type: [Boolean, String, Object],\n default: false\n }\n */\n}\n\n// @vue/component\nexport const DefaultTransition = /*#__PURE__*/ Vue.extend({\n data() {\n return {\n // Transition classes base name\n name: 'b-toaster'\n }\n },\n methods: {\n onAfterEnter(el) {\n // Handle bug where enter-to class is not removed.\n // Bug is related to portal-vue and transition-groups.\n requestAF(() => {\n removeClass(el, `${this.name}-enter-to`)\n // 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(h) {\n return h(\n 'transition-group',\n {\n props: { tag: 'div', name: this.name },\n on: { afterEnter: this.onAfterEnter }\n },\n this.$slots.default\n )\n }\n})\n\n// @vue/component\nexport const BToaster = /*#__PURE__*/ Vue.extend({\n name: NAME,\n props,\n 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() {\n this.staticName = this.name\n /* istanbul ignore if */\n if (Wormhole.hasTarget(this.staticName)) {\n warn(\n `A \"<portal-target>\" with name \"${this.name}\" already exists in the document.`,\n 'BToaster'\n )\n this.dead = true\n } else {\n this.doRender = true\n this.$once('hook:beforeDestroy', () => {\n // Let toasts made with `this.$bvToast.toast()` know that this toaster\n // is being destroyed and should should also destroy/hide themselves\n this.$root.$emit('bv::toaster::destroyed', this.staticName)\n })\n }\n },\n destroyed() {\n // Remove from DOM if needed\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(h) {\n let $toaster = h('div', { class: ['d-none', { 'b-dead-toaster': this.dead }] })\n if (this.doRender) {\n const $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(\n 'div',\n {\n staticClass: 'b-toaster',\n class: [this.staticName],\n attrs: {\n id: this.staticName,\n role: this.role || null, // Fallback to null to make sure attribute doesn't exist\n 'aria-live': this.ariaLive,\n 'aria-atomic': this.ariaAtomic\n }\n },\n [$target]\n )\n }\n return $toaster\n }\n})\n","import 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'\n\n// --- Constants ---\n\nconst NAME = 'BToast'\n\nconst MIN_DURATION = 1000\n\n// --- Props ---\n\nexport const 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: () => getComponentConfig(NAME, 'toaster')\n },\n visible: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: () => getComponentConfig(NAME, 'variant')\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: () => getComponentConfig(NAME, 'autoHideDelay')\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: () => getComponentConfig(NAME, 'toastClass')\n },\n headerClass: {\n type: [String, Object, Array],\n default: () => getComponentConfig(NAME, 'headerClass')\n },\n bodyClass: {\n type: [String, Object, Array],\n default: () => getComponentConfig(NAME, 'bodyClass')\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}\n\n// @vue/component\nexport const 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,\n 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() {\n return {\n 'b-toast-solid': this.solid,\n 'b-toast-append': this.appendToast,\n 'b-toast-prepend': !this.appendToast,\n [`b-toast-${this.variant}`]: this.variant\n }\n },\n slotScope() {\n return {\n hide: this.hide\n }\n },\n computedDuration() {\n // Minimum supported duration is 1 second\n return Math.max(toInteger(this.autoHideDelay) || 0, MIN_DURATION)\n },\n computedToaster() {\n return String(this.toaster)\n },\n 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(newVal) {\n newVal ? this.show() : this.hide()\n },\n localShow(newVal) {\n if (newVal !== this.visible) {\n this.$emit('change', newVal)\n }\n },\n toaster() /* istanbul ignore next */ {\n // If toaster target changed, make sure toaster exists\n this.$nextTick(this.ensureToaster)\n },\n static(newVal) /* istanbul ignore next */ {\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() {\n this.isMounted = true\n this.$nextTick(() => {\n if (this.visible) {\n requestAF(() => {\n this.show()\n })\n }\n })\n // Listen for global $root show events\n this.listenOnRoot('bv::show::toast', id => {\n if (id === this.safeId()) {\n this.show()\n }\n })\n // Listen for global $root hide events\n this.listenOnRoot('bv::hide::toast', id => {\n if (!id || id === this.safeId()) {\n this.hide()\n }\n })\n // Make sure we hide when toaster is destroyed\n /* istanbul ignore next: difficult to test */\n this.listenOnRoot('bv::toaster::destroyed', toaster => {\n /* istanbul ignore next */\n if (toaster === this.computedToaster) {\n /* istanbul ignore next */\n this.hide()\n }\n })\n },\n beforeDestroy() {\n this.clearDismissTimer()\n },\n methods: {\n show() {\n if (!this.localShow) {\n this.ensureToaster()\n const 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(() => {\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(() => {\n this.localShow = true\n })\n })\n }\n },\n hide() {\n if (this.localShow) {\n const 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(() => {\n this.localShow = false\n })\n }\n },\n buildEvent(type, options = {}) {\n return new BvEvent(type, {\n cancelable: false,\n target: this.$el || null,\n relatedTarget: null,\n ...options,\n vueTarget: this,\n componentId: this.safeId()\n })\n },\n emitEvent(bvEvt) {\n const type = bvEvt.type\n this.$root.$emit(`bv::toast:${type}`, bvEvt)\n this.$emit(type, bvEvt)\n },\n ensureToaster() {\n if (this.static) {\n return\n }\n if (!Wormhole.hasTarget(this.computedToaster)) {\n const div = document.createElement('div')\n document.body.appendChild(div)\n const toaster = new BToaster({\n parent: this.$root,\n propsData: {\n name: this.computedToaster\n }\n })\n toaster.$mount(div)\n }\n },\n startDismissTimer() {\n this.clearDismissTimer()\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() {\n clearTimeout(this.timer)\n this.timer = null\n },\n setHoverHandler(on) {\n const 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() {\n // Determine time remaining, and then pause timer\n if (this.noAutoHide || this.noHoverPause || !this.timer || this.resumeDismiss) {\n return\n }\n const passed = Date.now() - this.dismissStarted\n if (passed > 0) {\n this.clearDismissTimer()\n this.resumeDismiss = Math.max(this.computedDuration - passed, MIN_DURATION)\n }\n },\n 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 this.startDismissTimer()\n },\n onLinkClick() {\n // We delay the close to allow time for the\n // browser to process the link click\n this.$nextTick(() => {\n requestAF(() => {\n this.hide()\n })\n })\n },\n onBeforeEnter() {\n this.isTransitioning = true\n },\n onAfterEnter() {\n this.isTransitioning = false\n const hiddenEvt = this.buildEvent('shown')\n this.emitEvent(hiddenEvt)\n this.startDismissTimer()\n this.setHoverHandler(true)\n },\n onBeforeLeave() {\n this.isTransitioning = true\n },\n onAfterLeave() {\n this.isTransitioning = false\n this.order = 0\n this.resumeDismiss = this.dismissStarted = 0\n const hiddenEvt = this.buildEvent('hidden')\n this.emitEvent(hiddenEvt)\n this.doRender = false\n },\n makeToast(h) {\n // Render helper for generating the toast\n // Assemble the header content\n const $headerContent = []\n const $title = this.normalizeSlot('toast-title', this.slotScope)\n if ($title) {\n $headerContent.push($title)\n } else if (this.title) {\n $headerContent.push(h('strong', { staticClass: 'mr-2' }, this.title))\n }\n if (!this.noCloseButton) {\n $headerContent.push(\n h(BButtonClose, {\n staticClass: 'ml-auto mb-1',\n on: {\n click: () => {\n this.hide()\n }\n }\n })\n )\n }\n // Assemble the header (if needed)\n let $header = h()\n if ($headerContent.length > 0) {\n $header = h(\n 'header',\n { staticClass: 'toast-header', class: this.headerClass },\n $headerContent\n )\n }\n // Toast body\n const isLink = this.href || this.to\n const $body = h(\n isLink ? BLink : 'div',\n {\n staticClass: 'toast-body',\n class: this.bodyClass,\n props: isLink ? { to: this.to, href: this.href } : {},\n on: isLink ? { click: this.onLinkClick } : {}\n },\n [this.normalizeSlot('default', this.slotScope) || h()]\n )\n // Build the toast\n const $toast = h(\n 'div',\n {\n key: `toast-${this._uid}`,\n ref: 'toast',\n staticClass: 'toast',\n class: this.toastClass,\n attrs: {\n ...this.$attrs,\n tabindex: '0',\n id: this.safeId()\n }\n },\n [$header, $body]\n )\n return $toast\n }\n },\n render(h) {\n if (!this.doRender || !this.isMounted) {\n return h()\n }\n const name = `b-toast-${this._uid}`\n // If scoped styles are applied and the toast is not static,\n // make sure the scoped style data attribute is applied\n const scopedStyleAttrs = !this.static ? this.scopedStyleAttrs : {}\n\n return h(\n Portal,\n {\n props: {\n name: name,\n to: this.computedToaster,\n order: this.order,\n slim: true,\n disabled: this.static\n }\n },\n [\n h(\n 'div',\n {\n key: name,\n ref: 'b-toast',\n staticClass: 'b-toast',\n class: this.bToastClasses,\n attrs: {\n ...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 },\n [\n h(BVTransition, { props: { noFade: this.noFade }, on: this.transitionHandlers }, [\n this.localShow ? this.makeToast(h) : h()\n ])\n ]\n )\n ]\n )\n }\n})\n","/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\n\nimport { concat } from '../../../utils/array'\nimport { getComponentConfig } from '../../../utils/config'\nimport { requestAF } from '../../../utils/dom'\nimport { isUndefined, isString } from '../../../utils/inspect'\nimport {\n assign,\n defineProperties,\n defineProperty,\n keys,\n omit,\n readonlyDescriptor\n} from '../../../utils/object'\nimport { pluginFactory } from '../../../utils/plugins'\nimport { warn, warnNotClient } from '../../../utils/warn'\nimport { BToast, props as toastProps } from '../toast'\n\n// --- Constants ---\n\nconst PROP_NAME = '$bvToast'\nconst PROP_NAME_PRIV = '_bv__toast'\n\n// 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`\nconst BASE_PROPS = ['id', ...keys(omit(toastProps, ['static', 'visible']))]\n\n// Map prop names to toast slot names\nconst propsToSlots = {\n toastContent: 'default',\n title: 'toast-title'\n}\n\n// --- Utility methods ---\n\n// Method to filter only recognized props that are not undefined\nconst filterOptions = options => {\n return BASE_PROPS.reduce((memo, key) => {\n if (!isUndefined(options[key])) {\n memo[key] = options[key]\n }\n return memo\n }, {})\n}\n\n// Method to install `$bvToast` VM injection\nconst plugin = Vue => {\n // Create a private sub-component constructor that\n // extends BToast and self-destructs after hidden\n // @vue/component\n const BToastPop = Vue.extend({\n name: 'BToastPop',\n extends: BToast,\n 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() {\n const self = this\n // Self destruct handler\n const handleDestroy = () => {\n // Ensure the toast has been force hidden\n self.localShow = false\n self.doRender = false\n self.$nextTick(() => {\n self.$nextTick(() => {\n // In a `requestAF()` to release control back to application\n // and to allow the portal-target time to remove the content\n requestAF(() => {\n self.$destroy()\n })\n })\n })\n }\n // Self destruct if parent destroyed\n this.$parent.$once('hook:destroyed', handleDestroy)\n // Self destruct after hidden\n this.$once('hidden', handleDestroy)\n // Self destruct when toaster is destroyed\n this.listenOnRoot('bv::toaster::destroyed', toaster => {\n /* istanbul ignore next: hard to test */\n if (toaster === self.toaster) {\n handleDestroy()\n }\n })\n }\n })\n\n // Private method to generate the on-demand toast\n const makeToast = (props, $parent) => {\n if (warnNotClient(PROP_NAME)) {\n /* istanbul ignore next */\n return\n }\n // Create an instance of `BToastPop` component\n const 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: {\n ...filterOptions(getComponentConfig('BToast') || {}),\n // Add in (filtered) user supplied props\n ...omit(props, keys(propsToSlots)),\n // Props that can't be overridden\n static: false,\n visible: true\n }\n })\n // Convert certain props to slots\n keys(propsToSlots).forEach(prop => {\n let value = props[prop]\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', { class: 'mr-2' }, value)]\n }\n toast.$slots[propsToSlots[prop]] = concat(value)\n }\n })\n // Create a mount point (a DIV) and mount it (which triggers the show)\n const div = document.createElement('div')\n document.body.appendChild(div)\n toast.$mount(div)\n }\n\n // Declare BvToast instance property class\n class BvToast {\n constructor(vm) {\n // Assign the new properties to this instance\n assign(this, { _vm: vm, _root: vm.$root })\n // Set these properties as read-only and non-enumerable\n defineProperties(this, {\n _vm: readonlyDescriptor(),\n _root: readonlyDescriptor()\n })\n }\n\n // --- Public Instance methods ---\n\n // Opens a user defined toast and returns immediately\n toast(content, options = {}) {\n if (!content || warnNotClient(PROP_NAME)) {\n /* istanbul ignore next */\n return\n }\n makeToast({ ...filterOptions(options), toastContent: content }, this._vm)\n }\n\n // shows a `<b-toast>` component with the specified ID\n show(id) {\n if (id) {\n this._root.$emit('bv::show::toast', id)\n }\n }\n\n // Hide a toast with specified ID, or if not ID all toasts\n hide(id = null) {\n this._root.$emit('bv::hide::toast', id)\n }\n }\n\n // Add our instance mixin\n Vue.mixin({\n 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 })\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 if (!Vue.prototype.hasOwnProperty(PROP_NAME)) {\n defineProperty(Vue.prototype, PROP_NAME, {\n get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n warn(`\"${PROP_NAME}\" must be accessed from a Vue instance \"this\" context.`, 'BToast')\n }\n return this[PROP_NAME_PRIV]\n }\n })\n }\n}\n\nexport const BVToastPlugin = /*#__PURE__*/ pluginFactory({\n plugins: { plugin }\n})\n","import { BVToastPlugin } from './helpers/bv-toast'\nimport { BToast } from './toast'\nimport { BToaster } from './toaster'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst ToastPlugin = /*#__PURE__*/ pluginFactory({\n components: { BToast, BToaster },\n // $bvToast injection\n plugins: { BVToastPlugin }\n})\n\nexport { ToastPlugin, BToast, BToaster }\n","import 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 {\n isFunction,\n isNumber,\n isPlainObject,\n isString,\n isUndefined,\n isUndefinedOrNull\n} from '../../utils/inspect'\nimport { keys } from '../../utils/object'\nimport { BVTooltip } from '../../components/tooltip/helpers/bv-tooltip'\n\n// Key which we use to store tooltip object on element\nconst BV_TOOLTIP = '__BV_Tooltip__'\n\n// Default trigger\nconst DefaultTrigger = 'hover focus'\n\n// Valid event triggers\nconst validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true,\n manual: true\n}\n\n// Directive modifier test regular expressions. Pre-compile for performance\nconst htmlRE = /^html$/i\nconst noninteractiveRE = /^noninteractive$/i\nconst noFadeRE = /^nofade$/i\nconst placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i\nconst boundaryRE = /^(window|viewport|scrollParent)$/i\nconst delayRE = /^d\\d+$/i\nconst delayShowRE = /^ds\\d+$/i\nconst delayHideRE = /^dh\\d+$/i\nconst offsetRE = /^o-?\\d+$/i\nconst variantRE = /^v-.+$/i\nconst spacesRE = /\\s+/\n\n// Build a Tooltip config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\nconst parseBindings = (bindings, vnode) => /* istanbul ignore next: not easy to test */ {\n // We start out with a basic config\n const NAME = 'BTooltip'\n // Default config\n let config = {\n title: undefined,\n trigger: '', // Default set below if needed\n placement: 'top',\n fallbackPlacement: 'flip',\n container: false, // 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 }\n\n // Process `bindings.value`\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 = { ...config, ...bindings.value }\n }\n\n // If title is not provided, try title attribute\n if (isUndefined(config.title)) {\n // Try attribute\n const data = vnode.data || {}\n config.title = data.attrs && !isUndefinedOrNull(data.attrs.title) ? data.attrs.title : undefined\n }\n\n // Normalize delay\n if (!isPlainObject(config.delay)) {\n config.delay = {\n show: parseInt(config.delay, 10) || 0,\n hide: parseInt(config.delay, 10) || 0\n }\n }\n\n // If argument, assume element ID of container element\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = `#${bindings.arg}`\n }\n\n // Process modifiers\n keys(bindings.modifiers).forEach(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 const 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 })\n\n // Special handling of event trigger modifiers trigger is\n // a space separated list\n const selectedTriggers = {}\n\n // Parse current config object trigger\n concat(config.trigger || '')\n .filter(identity)\n .join(' ')\n .trim()\n .toLowerCase()\n .split(spacesRE)\n .forEach(trigger => {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true\n }\n })\n\n // Parse modifiers for triggers\n keys(bindings.modifiers).forEach(mod => {\n mod = mod.toLowerCase()\n if (validTriggers[mod]) {\n // If modifier is a valid trigger\n selectedTriggers[mod] = true\n }\n })\n\n // Sanitize triggers\n config.trigger = keys(selectedTriggers).join(' ')\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus'\n }\n if (!config.trigger) {\n // Use default trigger\n config.trigger = DefaultTrigger\n }\n\n // Return the config\n return config\n}\n\n// Add/update Tooltip on our element\nconst applyTooltip = (el, bindings, vnode) => {\n if (!isBrowser) {\n /* istanbul ignore next */\n return\n }\n const config = parseBindings(bindings, vnode)\n if (!el[BV_TOOLTIP]) {\n const $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', () => /* istanbul ignore next: for now */ {\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 const 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 const oldData = el[BV_TOOLTIP].__bv_prev_data__\n el[BV_TOOLTIP].__bv_prev_data__ = data\n if (!looseEqual(data, oldData)) {\n // We only update the instance if data has changed\n const newData = {\n target: el\n }\n keys(data).forEach(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}\n\n// Remove Tooltip on our element\nconst removeTooltip = el => {\n if (el[BV_TOOLTIP]) {\n el[BV_TOOLTIP].$destroy()\n el[BV_TOOLTIP] = null\n }\n delete el[BV_TOOLTIP]\n}\n\n// Export our directive\nexport const VBTooltip = {\n 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(el, bindings, vnode) {\n // Performed in a `$nextTick()` to prevent render update loops\n vnode.context.$nextTick(() => {\n applyTooltip(el, bindings, vnode)\n })\n },\n unbind(el) {\n removeTooltip(el)\n }\n}\n","import { VBTooltip } from './tooltip'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst VBTooltipPlugin = /*#__PURE__*/ pluginFactory({\n directives: { VBTooltip }\n})\n\nexport { VBTooltipPlugin, VBTooltip }\n","import { pluginFactory } from '../utils/plugins'\n\n// Component group plugins\nimport { AlertPlugin } from './alert'\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 { 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 { PaginationPlugin } from './pagination'\nimport { PaginationNavPlugin } from './pagination-nav'\nimport { PopoverPlugin } from './popover'\nimport { ProgressPlugin } from './progress'\nimport { SpinnerPlugin } from './spinner'\n// Table plugin includes TableLitePlugin and TableSimplePlugin\nimport { TablePlugin } from './table'\nimport { TabsPlugin } from './tabs'\nimport { ToastPlugin } from './toast'\nimport { TooltipPlugin } from './tooltip'\n\n// Main plugin to install all component group plugins\nexport const componentsPlugin = /*#__PURE__*/ pluginFactory({\n plugins: {\n AlertPlugin,\n BadgePlugin,\n BreadcrumbPlugin,\n ButtonPlugin,\n ButtonGroupPlugin,\n ButtonToolbarPlugin,\n CalendarPlugin,\n CardPlugin,\n CarouselPlugin,\n CollapsePlugin,\n DropdownPlugin,\n EmbedPlugin,\n FormPlugin,\n FormCheckboxPlugin,\n FormDatepickerPlugin,\n FormFilePlugin,\n FormGroupPlugin,\n FormInputPlugin,\n FormRadioPlugin,\n FormSelectPlugin,\n FormSpinbuttonPlugin,\n FormTagsPlugin,\n FormTextareaPlugin,\n ImagePlugin,\n InputGroupPlugin,\n JumbotronPlugin,\n LayoutPlugin,\n LinkPlugin,\n ListGroupPlugin,\n MediaPlugin,\n ModalPlugin,\n NavPlugin,\n NavbarPlugin,\n PaginationPlugin,\n PaginationNavPlugin,\n PopoverPlugin,\n ProgressPlugin,\n SpinnerPlugin,\n TablePlugin,\n TabsPlugin,\n ToastPlugin,\n TooltipPlugin\n }\n})\n","import { BTooltip } from './tooltip'\nimport { VBTooltipPlugin } from '../../directives/tooltip'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst TooltipPlugin = /*#__PURE__*/ pluginFactory({\n components: { BTooltip },\n plugins: { VBTooltipPlugin }\n})\n\nexport { TooltipPlugin, BTooltip }\n","import { VBHover } from './hover'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst VBHoverPlugin = /*#__PURE__*/ pluginFactory({\n directives: { VBHover }\n})\n\nexport { VBHoverPlugin, VBHover }\n","import { VBModal } from './modal'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst VBModalPlugin = /*#__PURE__*/ pluginFactory({\n directives: { VBModal }\n})\n\nexport { VBModalPlugin, VBModal }\n","/*\n * ScrollSpy class definition\n */\n\nimport observeDom from '../../utils/observe-dom'\nimport {\n addClass,\n closest,\n getAttr,\n getBCR,\n hasClass,\n isElement,\n isVisible,\n matches,\n offset,\n position,\n removeClass,\n select,\n selectAll\n} 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/*\n * Constants / Defaults\n */\n\nconst NAME = 'v-b-scrollspy'\nconst ACTIVATE_EVENT = 'bv::scrollspy::activate'\n\nconst Default = {\n element: 'body',\n offset: 10,\n method: 'auto',\n throttle: 75\n}\n\nconst DefaultType = {\n element: '(string|element|component)',\n offset: 'number',\n method: 'string',\n throttle: 'number'\n}\n\nconst ClassName = {\n DROPDOWN_ITEM: 'dropdown-item',\n ACTIVE: 'active'\n}\n\nconst 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}\n\nconst OffsetMethod = {\n OFFSET: 'offset',\n POSITION: 'position'\n}\n\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!\nconst HREF_REGEX = /^.*(#[^#]+)$/\n\n// Transition Events\nconst TransitionEndEvents = [\n 'webkitTransitionEnd',\n 'transitionend',\n 'otransitionend',\n 'oTransitionEnd'\n]\n\n/*\n * Utility Methods\n */\n\n// Better var type detection\nconst toType = obj => /* istanbul ignore next: not easy to test */ {\n return objectToString(obj)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase()\n}\n\n// Check config properties for expected types\nconst typeCheckConfig = (\n componentName,\n config,\n configTypes\n) => /* istanbul ignore next: not easy to test */ {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n let valueType = value && isElement(value) ? 'element' : toType(value)\n // handle Vue instances\n valueType = value && value._isVue ? 'component' : valueType\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n /* istanbul ignore next */\n warn(\n `${componentName}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\"`\n )\n }\n }\n }\n}\n\n/*\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n/* istanbul ignore next: not easy to test */\nclass ScrollSpy /* istanbul ignore next: not easy to test */ {\n constructor(element, config, $root) {\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\n this.updateConfig(config)\n }\n\n static get Name() {\n return NAME\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n 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 const cfg = { ...this.constructor.Default, ...config }\n if ($root) {\n this.$root = $root\n }\n typeCheckConfig(this.constructor.Name, cfg, this.constructor.DefaultType)\n this.$config = cfg\n\n if (this.$root) {\n const self = this\n this.$root.$nextTick(() => {\n self.listen()\n })\n } else {\n this.listen()\n }\n }\n\n 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 listen() {\n const scroller = this.getScroller()\n if (scroller && scroller.tagName !== 'BODY') {\n eventOn(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE)\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(evtName => {\n eventOn(window, evtName, this, EVENT_OPTIONS_NO_CAPTURE)\n })\n this.setObservers(true)\n // Schedule a refresh\n this.handleEvent('refresh')\n }\n\n unlisten() {\n const scroller = this.getScroller()\n this.setObservers(false)\n if (scroller && scroller.tagName !== 'BODY') {\n eventOff(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE)\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(evtName => {\n eventOff(window, evtName, this, EVENT_OPTIONS_NO_CAPTURE)\n })\n }\n\n setObservers(on) {\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 if (this.$obs_targets) {\n this.$obs_targets.disconnect()\n this.$obs_targets = null\n }\n if (on) {\n this.$obs_targets = observeDom(\n this.$el,\n () => {\n this.handleEvent('mutation')\n },\n {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['href']\n }\n )\n this.$obs_scroller = observeDom(\n this.getScroller(),\n () => {\n this.handleEvent('mutation')\n },\n {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['id', 'style', 'class']\n }\n )\n }\n }\n\n // General event handler\n handleEvent(evt) {\n const type = isString(evt) ? evt : evt.type\n\n const self = this\n const resizeThrottle = () => {\n if (!self.$resizeTimeout) {\n self.$resizeTimeout = setTimeout(() => {\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 this.process()\n } else if (/(resize|orientationchange|mutation|refresh)/.test(type)) {\n // Postpone these events by throttle time\n resizeThrottle()\n }\n }\n\n // Refresh the list of target links on the element we are applied to\n refresh() {\n const scroller = this.getScroller()\n if (!scroller) {\n return\n }\n const autoMethod = scroller !== scroller.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET\n const method = this.$config.method === 'auto' ? autoMethod : this.$config.method\n const methodFn = method === OffsetMethod.POSITION ? position : offset\n const offsetBase = method === OffsetMethod.POSITION ? this.getScrollTop() : 0\n\n this.$offsets = []\n this.$targets = []\n\n this.$scrollHeight = this.getScrollHeight()\n\n // Find all the unique link HREFs that we will control\n selectAll(this.$selector, this.$el)\n // Get HREF value\n .map(link => getAttr(link, 'href'))\n // Filter out HREFs that do not match our RegExp\n .filter(href => href && HREF_REGEX.test(href || ''))\n // Find all elements with ID that match HREF hash\n .map(href => {\n // Convert HREF into an ID (including # at beginning)\n const id = href.replace(HREF_REGEX, '$1').trim()\n if (!id) {\n return null\n }\n // Find the element with the ID specified by id\n const el = select(id, scroller)\n if (el && isVisible(el)) {\n return {\n offset: parseInt(methodFn(el).top, 10) + offsetBase,\n target: id\n }\n }\n return null\n })\n .filter(Boolean)\n // Sort them by their offsets (smallest first)\n .sort((a, b) => a.offset - b.offset)\n // record only unique targets/offsets\n .reduce((memo, item) => {\n if (!memo[item.target]) {\n this.$offsets.push(item.offset)\n this.$targets.push(item.target)\n memo[item.target] = true\n }\n return memo\n }, {})\n\n // Return this for easy chaining\n return this\n }\n\n // Handle activating/clearing\n process() {\n const scrollTop = this.getScrollTop() + this.$config.offset\n const scrollHeight = this.getScrollHeight()\n const maxScroll = this.$config.offset + scrollHeight - this.getOffsetHeight()\n\n if (this.$scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this.$targets[this.$targets.length - 1]\n if (this.$activeTarget !== target) {\n this.activate(target)\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 (let i = this.$offsets.length; i--; ) {\n const isActiveTarget =\n this.$activeTarget !== this.$targets[i] &&\n scrollTop >= this.$offsets[i] &&\n (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 getScroller() {\n if (this.$scroller) {\n return this.$scroller\n }\n let scroller = this.$config.element\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 if (!scroller) {\n return null\n }\n this.$scroller = scroller.tagName === 'BODY' ? window : scroller\n return this.$scroller\n }\n\n getScrollTop() {\n const scroller = this.getScroller()\n return scroller === window ? scroller.pageYOffset : scroller.scrollTop\n }\n\n getScrollHeight() {\n return (\n this.getScroller().scrollHeight ||\n Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)\n )\n }\n\n getOffsetHeight() {\n const scroller = this.getScroller()\n return scroller === window ? window.innerHeight : getBCR(scroller).height\n }\n\n activate(target) {\n this.$activeTarget = target\n this.clear()\n\n // Grab the list of target links (<a href=\"{$target}\">)\n const links = selectAll(\n this.$selector\n // Split out the base selectors\n .split(',')\n // Map to a selector that matches links with HREF ending in the ID (including '#')\n .map(selector => `${selector}[href$=\"${target}\"]`)\n // Join back into a single selector string\n .join(','),\n this.$el\n )\n\n links.forEach(link => {\n if (hasClass(link, ClassName.DROPDOWN_ITEM)) {\n // This is a dropdown item, so find the .dropdown-toggle and set its state\n const dropdown = closest(Selector.DROPDOWN, link)\n if (dropdown) {\n this.setActiveState(select(Selector.DROPDOWN_TOGGLE, dropdown), true)\n }\n // Also set this link's state\n this.setActiveState(link, true)\n } else {\n // Set triggered link as active\n this.setActiveState(link, true)\n if (matches(link.parentElement, Selector.NAV_ITEMS)) {\n // Handle nav-link inside nav-item, and set nav-item active\n this.setActiveState(link.parentElement, true)\n }\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 let el = link\n while (el) {\n el = closest(Selector.NAV_LIST_GROUP, el)\n const sibling = el ? el.previousElementSibling : null\n if (sibling && matches(sibling, `${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`)) {\n this.setActiveState(sibling, true)\n }\n // Handle special case where nav-link is inside a nav-item\n if (sibling && matches(sibling, Selector.NAV_ITEMS)) {\n this.setActiveState(select(Selector.NAV_LINKS, sibling), true)\n // Add active state to nav-item as well\n this.setActiveState(sibling, true)\n }\n }\n }\n })\n\n // Signal event to via $root, passing ID of activated target and reference to array of links\n if (links && links.length > 0 && this.$root) {\n this.$root.$emit(ACTIVATE_EVENT, target, links)\n }\n }\n\n clear() {\n selectAll(`${this.$selector}, ${Selector.NAV_ITEMS}`, this.$el)\n .filter(el => hasClass(el, ClassName.ACTIVE))\n .forEach(el => this.setActiveState(el, false))\n }\n\n setActiveState(el, active) {\n if (!el) {\n return\n }\n if (active) {\n addClass(el, ClassName.ACTIVE)\n } else {\n removeClass(el, ClassName.ACTIVE)\n }\n }\n}\n\nexport default ScrollSpy\n","import ScrollSpy from './scrollspy.class'\nimport { isBrowser } from '../../utils/env'\nimport { keys } from '../../utils/object'\nimport { isNumber, isObject, isString } from '../../utils/inspect'\n\n// Key we use to store our instance\nconst BV_SCROLLSPY = '__BV_ScrollSpy__'\n\n// Pre-compiled regular expressions\nconst onlyDigitsRE = /^\\d+$/\nconst offsetRE = /^(auto|position|offset)$/\n\n// Build a ScrollSpy config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n/* istanbul ignore next: not easy to test */\nconst parseBindings = bindings => /* istanbul ignore next: not easy to test */ {\n const config = {}\n\n // If argument, assume element ID\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.element = `#${bindings.arg}`\n }\n\n // Process modifiers\n keys(bindings.modifiers).forEach(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 })\n\n // Process value\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)\n .filter(k => !!ScrollSpy.DefaultType[k])\n .forEach(k => {\n config[k] = bindings.value[k]\n })\n }\n\n return config\n}\n\n// Add or update ScrollSpy on our element\nconst applyScrollspy = (el, bindings, vnode) => /* istanbul ignore next: not easy to test */ {\n if (!isBrowser) {\n /* istanbul ignore next */\n return\n }\n const config = parseBindings(bindings)\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}\n\n// Remove ScrollSpy on our element\n/* istanbul ignore next: not easy to test */\nconst removeScrollspy = el => /* istanbul ignore next: not easy to test */ {\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].dispose()\n el[BV_SCROLLSPY] = null\n delete el[BV_SCROLLSPY]\n }\n}\n\n/*\n * Export our directive\n */\nexport const VBScrollspy = {\n bind(el, bindings, vnode) /* istanbul ignore next: not easy to test */ {\n applyScrollspy(el, bindings, vnode)\n },\n inserted(el, bindings, vnode) /* istanbul ignore next: not easy to test */ {\n applyScrollspy(el, bindings, vnode)\n },\n update(el, bindings, vnode) /* istanbul ignore next: not easy to test */ {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode)\n }\n },\n componentUpdated(el, bindings, vnode) /* istanbul ignore next: not easy to test */ {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode)\n }\n },\n unbind(el) /* istanbul ignore next: not easy to test */ {\n removeScrollspy(el)\n }\n}\n","import { pluginFactory } from '../utils/plugins'\n\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'\n\n// Main plugin for installing all directive plugins\nexport const directivesPlugin = /*#__PURE__*/ pluginFactory({\n plugins: {\n VBHoverPlugin,\n VBModalPlugin,\n VBPopoverPlugin,\n VBScrollspyPlugin,\n VBTogglePlugin,\n VBTooltipPlugin,\n VBVisiblePlugin\n }\n})\n","import { VBScrollspy } from './scrollspy'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst VBScrollspyPlugin = /*#__PURE__*/ pluginFactory({\n directives: { VBScrollspy }\n})\n\nexport { VBScrollspyPlugin, VBScrollspy }\n","import { VBToggle } from './toggle'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst VBTogglePlugin = /*#__PURE__*/ pluginFactory({\n directives: { VBToggle }\n})\n\nexport { VBTogglePlugin, VBToggle }\n","import { VBVisible } from './visible'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst VBVisiblePlugin = /*#__PURE__*/ pluginFactory({\n directives: { VBVisible }\n})\n\nexport { VBVisiblePlugin, VBVisible }\n","import 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'\n\nconst RX_ICON_PREFIX = /^BIcon/\n\n// Helper BIcon component\n// Requires the requested icon component to be installed\nexport const BIcon = /*#__PURE__*/ Vue.extend({\n name: 'BIcon',\n functional: true,\n props: {\n icon: {\n type: String,\n default: null\n },\n ...commonIconProps,\n stacked: {\n type: Boolean,\n default: false\n }\n },\n render(h, { data, props, parent }) {\n const icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, '')\n const iconName = `BIcon${icon}`\n // 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 const components = ((parent || {}).$options || {}).components\n const componentRefOrName =\n icon && components ? components[iconName] || BIconBlank : icon ? iconName : BIconBlank\n return h(componentRefOrName, mergeData(data, { props: { ...props, icon: null } }))\n }\n})\n","import { installFactory } from './utils/plugins'\nimport { componentsPlugin } from './components'\nimport { directivesPlugin } from './directives'\nimport { BVConfigPlugin } from './bv-config'\n\nconst NAME = 'BootstrapVue'\n\n// --- BootstrapVue installer ---\nconst install = /*#__PURE__*/ installFactory({\n plugins: {\n componentsPlugin,\n directivesPlugin\n }\n})\n\n// --- BootstrapVue plugin ---\nconst BootstrapVue = /*#__PURE__*/ {\n install,\n NAME\n}\n\n// --- Named exports for BvConfigPlugin ---\nexport {\n // 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)\n install,\n NAME,\n // BootstrapVue config plugin\n BVConfigPlugin,\n // `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,\n // Main BootstrapVue plugin\n BootstrapVue\n}\n\n// --- Export named injection plugins ---\n// TODO:\n// We should probably move injections into their own\n// parent directory (i.e. `/src/injections`)\nexport { BVModalPlugin } from './components/modal/helpers/bv-modal'\nexport { BVToastPlugin } from './components/toast/helpers/bv-toast'\n\n// 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\n// -- Export Icon components and IconPlugin/BootstrapVueIcons ---\n// export * from './icons'\nexport { IconsPlugin, BootstrapVueIcons } from './icons/plugin'\nexport { BIcon } from './icons/icon'\nexport { BIconstack } from './icons/iconstack'\n// This re-export is only a single level deep, which\n// Webpack 4 (usually) handles correctly when tree shaking\nexport * from './icons/icons'\n\n// --- Export all individual components and component group plugins as named exports ---\n\n// export * from './components/alert'\nexport { AlertPlugin } from './components/alert'\nexport { BAlert } from './components/alert/alert'\n\n// export * from './components/badge'\nexport { BadgePlugin } from './components/badge'\nexport { BBadge } from './components/badge/badge'\n\n// export * from './components/breadcrumb'\nexport { BreadcrumbPlugin } from './components/breadcrumb'\nexport { BBreadcrumb } from './components/breadcrumb/breadcrumb'\nexport { BBreadcrumbItem } from './components/breadcrumb/breadcrumb-item'\n\n// export * from './components/button'\nexport { ButtonPlugin } from './components/button'\nexport { BButton } from './components/button/button'\nexport { BButtonClose } from './components/button/button-close'\n\n// export * from './components/button-group'\nexport { ButtonGroupPlugin } from './components/button-group'\nexport { BButtonGroup } from './components/button-group/button-group'\n\n// export * from './components/button-toolbar'\nexport { ButtonToolbarPlugin } from './components/button-toolbar'\nexport { BButtonToolbar } from './components/button-toolbar/button-toolbar'\n\n// export * from './components/calendar'\nexport { CalendarPlugin } from './components/calendar'\nexport { BCalendar } from './components/calendar/calendar'\n\n// export * from './components/card'\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'\n\n// export * from './components/carousel'\nexport { CarouselPlugin } from './components/carousel'\nexport { BCarousel } from './components/carousel/carousel'\nexport { BCarouselSlide } from './components/carousel/carousel-slide'\n\n// export * from './components/collapse'\nexport { CollapsePlugin } from './components/collapse'\nexport { BCollapse } from './components/collapse/collapse'\n\n// export * from './components/dropdown'\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'\n\n// export * from './components/embed'\nexport { EmbedPlugin } from './components/embed'\nexport { BEmbed } from './components/embed/embed'\n\n// export * from './components/form'\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'\n\n// export * from './components/form-checkbox'\nexport { FormCheckboxPlugin } from './components/form-checkbox'\nexport { BFormCheckbox } from './components/form-checkbox/form-checkbox'\nexport { BFormCheckboxGroup } from './components/form-checkbox/form-checkbox-group'\n\n// export * from './components/form-datepicker'\nexport { FormDatepickerPlugin } from './components/form-datepicker'\nexport { BFormDatepicker } from './components/form-datepicker/form-datepicker'\n\n// export * from './components/form-file'\nexport { FormFilePlugin } from './components/form-file'\nexport { BFormFile } from './components/form-file/form-file'\n\n// export * from './components/form-group'\nexport { FormGroupPlugin } from './components/form-group'\nexport { BFormGroup } from './components/form-group/form-group'\n\n// export * from './components/form-input'\nexport { FormInputPlugin } from './components/form-input'\nexport { BFormInput } from './components/form-input/form-input'\n\n// export * from './components/form-radio'\nexport { FormRadioPlugin } from './components/form-radio'\nexport { BFormRadio } from './components/form-radio/form-radio'\nexport { BFormRadioGroup } from './components/form-radio/form-radio-group'\n\n// export * from './components/form-tags'\nexport { FormTagsPlugin } from './components/form-tags'\nexport { BFormTags } from './components/form-tags/form-tags'\nexport { BFormTag } from './components/form-tags/form-tag'\n\n// export * from './components/form-select'\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'\n\n// export * from './components/form-spinbutton'\nexport { FormSpinbuttonPlugin } from './components/form-spinbutton'\nexport { BFormSpinbutton } from './components/form-spinbutton/form-spinbutton'\n\n// export * from './components/form-textarea'\nexport { FormTextareaPlugin } from './components/form-textarea'\nexport { BFormTextarea } from './components/form-textarea/form-textarea'\n\n// export * from './components/image'\nexport { ImagePlugin } from './components/image'\nexport { BImg } from './components/image/img'\nexport { BImgLazy } from './components/image/img-lazy'\n\n// export * from './components/input-group'\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'\n\n// export * from './components/jumbotron'\nexport { JumbotronPlugin } from './components/jumbotron'\nexport { BJumbotron } from './components/jumbotron/jumbotron'\n\n// export * from './components/layout'\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'\n\n// export * from './components/link'\nexport { LinkPlugin } from './components/link'\nexport { BLink } from './components/link/link'\n\n// export * from './components/list-group'\nexport { ListGroupPlugin } from './components/list-group'\nexport { BListGroup } from './components/list-group/list-group'\nexport { BListGroupItem } from './components/list-group/list-group-item'\n\n// export * from './components/media'\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'\n\n// export * from './components/modal'\nexport { ModalPlugin } from './components/modal'\nexport { BModal } from './components/modal/modal'\n\n// export * from './components/nav'\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'\n\n// export * from './components/navbar'\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'\n\n// export * from './components/pagination'\nexport { PaginationPlugin } from './components/pagination'\nexport { BPagination } from './components/pagination/pagination'\n\n// export * from './components/pagination-nav'\nexport { PaginationNavPlugin } from './components/pagination-nav'\nexport { BPaginationNav } from './components/pagination-nav/pagination-nav'\n\n// export * from './components/popover'\nexport { PopoverPlugin } from './components/popover'\nexport { BPopover } from './components/popover/popover'\n\n// export * from './components/progress'\nexport { ProgressPlugin } from './components/progress'\nexport { BProgress } from './components/progress/progress'\nexport { BProgressBar } from './components/progress/progress-bar'\n\n// export * from './components/spinner'\nexport { SpinnerPlugin } from './components/spinner'\nexport { BSpinner } from './components/spinner/spinner'\n\n// export * from './components/table'\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'\n\n// export * from './components/tabs'\nexport { TabsPlugin } from './components/tabs'\nexport { BTabs } from './components/tabs/tabs'\nexport { BTab } from './components/tabs/tab'\n\n// export * from './components/toast'\nexport { ToastPlugin } from './components/toast'\nexport { BToast } from './components/toast/toast'\nexport { BToaster } from './components/toast/toaster'\n\n// export * from './components/tooltip'\nexport { TooltipPlugin } from './components/tooltip'\nexport { BTooltip } from './components/tooltip/tooltip'\n\n// --- Named exports of all directives (VB<Name>) and plugins (VB<Name>Plugin) ---\n\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\n// export * from './directives/hover'\nexport { VBHoverPlugin } from './directives/hover'\nexport { VBHover } from './directives/hover/hover'\n\n// export * from './directives/modal'\nexport { VBModalPlugin } from './directives/modal'\nexport { VBModal } from './directives/modal/modal'\n\n// export * from './directives/popover'\nexport { VBPopoverPlugin } from './directives/popover'\nexport { VBPopover } from './directives/popover/popover'\n\n// export * from './directives/scrollspy'\nexport { VBScrollspyPlugin } from './directives/scrollspy'\nexport { VBScrollspy } from './directives/scrollspy/scrollspy'\n\n// export * from './directives/toggle'\nexport { VBTogglePlugin } from './directives/toggle'\nexport { VBToggle } from './directives/toggle/toggle'\n\n// export * from './directives/tooltip'\nexport { VBTooltipPlugin } from './directives/tooltip'\nexport { VBTooltip } from './directives/tooltip/tooltip'\n\n// export * from './directives/tooltip'\nexport { VBVisiblePlugin } from './directives/visible'\nexport { VBVisible } from './directives/visible/visible'\n\n// Default export is the BootstrapVue plugin\nexport default BootstrapVue\n","// Main entry point for the browser build\nimport { vueUse } from './utils/plugins'\n\nimport { BootstrapVue } from './index'\n\n// Auto installation only occurs if window.Vue exists\nvueUse(BootstrapVue)\n\nexport default BootstrapVue\n"]}