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.
1 lines
1.3 MiB
1 lines
1.3 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","../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","../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/progress.js","../src/components/progress/index.js","../src/components/spinner/spinner.js","../src/components/spinner/index.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/tab.js","../src/components/tabs/index.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/tooltip/index.js","../src/components/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/scrollspy/index.js","../src/directives/toggle/index.js","../src/directives/visible/index.js","../src/directives/index.js","../src/bv-config.js","../src/icons/icon.js","../src/icons/plugin.js","../src/index.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","installFactoryNoConfig","_ref2","pluginFactory","extend","pluginFactoryNoConfig","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","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","css","mergeData","hasNormalizedSlot","names","$scopedSlots","$slots","normalizeSlot","slot","scope","i","normalizeSlotMixin","methods","vNodes","slots","scopedSlots","componentData","staticClass","class","attrs","aria-label","on","click","evt","stopPropagation","preventDefault","domProps","innerHTML","parseCountDown","show","parseShow","isNumericLike","isNaN","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","AlertPlugin","pluckProps","keysToPluck","objToPluck","transformFn","memo","RX_TRIM_LEFT","RX_REGEXP_REPLACE","RX_UN_KEBAB","RX_HYPHENATE","kebabCase","str","pascalCase","_","c","toUpperCase","charAt","upperFirst","trim","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","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","BBreadcrumb","childNodes","activeDefined","item","idx","BreadcrumbPlugin","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","a","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","BIconAlarm","BIconAlarmFill","BIconAlertCircle","BIconAlertCircleFill","BIconAlertOctagon","BIconAlertOctagonFill","BIconAlertSquare","BIconAlertSquareFill","BIconAlertTriangle","BIconAlertTriangleFill","BIconArchive","BIconArchiveFill","BIconArrowBarBottom","BIconArrowBarLeft","BIconArrowBarRight","BIconArrowBarUp","BIconArrowClockwise","BIconArrowCounterclockwise","BIconArrowDown","BIconArrowDownLeft","BIconArrowDownRight","BIconArrowDownShort","BIconArrowLeft","BIconArrowLeftRight","BIconArrowLeftShort","BIconArrowRepeat","BIconArrowRight","BIconArrowRightShort","BIconArrowUp","BIconArrowUpDown","BIconArrowUpLeft","BIconArrowUpRight","BIconArrowUpShort","BIconArrowsAngleContract","BIconArrowsAngleExpand","BIconArrowsCollapse","BIconArrowsExpand","BIconArrowsFullscreen","BIconAt","BIconAward","BIconBackspace","BIconBackspaceFill","BIconBackspaceReverse","BIconBackspaceReverseFill","BIconBarChart","BIconBarChartFill","BIconBattery","BIconBatteryCharging","BIconBatteryFull","BIconBell","BIconBellFill","BIconBlockquoteLeft","BIconBlockquoteRight","BIconBook","BIconBookHalfFill","BIconBookmark","BIconBookmarkFill","BIconBootstrap","BIconBootstrapFill","BIconBootstrapReboot","BIconBoxArrowBottomLeft","BIconBoxArrowBottomRight","BIconBoxArrowDown","BIconBoxArrowLeft","BIconBoxArrowRight","BIconBoxArrowUp","BIconBoxArrowUpLeft","BIconBoxArrowUpRight","BIconBraces","BIconBrightnessFillHigh","BIconBrightnessFillLow","BIconBrightnessHigh","BIconBrightnessLow","BIconBrush","BIconBucket","BIconBucketFill","BIconBuilding","BIconBullseye","BIconCalendar","BIconCalendarFill","BIconCamera","BIconCameraVideo","BIconCameraVideoFill","BIconCapslock","BIconCapslockFill","BIconChat","BIconChatFill","BIconCheck","BIconCheckBox","BIconCheckCircle","BIconChevronCompactDown","BIconChevronCompactLeft","BIconChevronCompactRight","BIconChevronCompactUp","BIconChevronDown","BIconChevronLeft","BIconChevronRight","BIconChevronUp","BIconCircle","BIconCircleFill","BIconCircleHalf","BIconCircleSlash","BIconClock","BIconClockFill","BIconCloud","BIconCloudDownload","BIconCloudFill","BIconCloudUpload","BIconCode","BIconCodeSlash","BIconColumns","BIconColumnsGutters","BIconCommand","BIconCompass","BIconCone","BIconConeStriped","BIconController","BIconCreditCard","BIconCursor","BIconCursorFill","BIconDash","BIconDiamond","BIconDiamondHalf","BIconDisplay","BIconDisplayFill","BIconDocument","BIconDocumentCode","BIconDocumentDiff","BIconDocumentRichtext","BIconDocumentSpreadsheet","BIconDocumentText","BIconDocuments","BIconDocumentsAlt","BIconDot","BIconDownload","BIconEggFried","BIconEject","BIconEjectFill","BIconEnvelope","BIconEnvelopeFill","BIconEnvelopeOpen","BIconEnvelopeOpenFill","BIconEye","BIconEyeFill","BIconEyeSlash","BIconEyeSlashFill","BIconFilter","BIconFlag","BIconFlagFill","BIconFolder","BIconFolderFill","BIconFolderSymlink","BIconFolderSymlinkFill","BIconFonts","BIconForward","BIconForwardFill","BIconGear","BIconGearFill","BIconGearWide","BIconGearWideConnected","BIconGeo","BIconGraphDown","BIconGraphUp","BIconGrid","BIconGridFill","BIconHammer","BIconHash","BIconHeart","BIconHeartFill","BIconHouse","BIconHouseFill","BIconImage","BIconImageAlt","BIconImageFill","BIconImages","BIconInbox","BIconInboxFill","BIconInboxes","BIconInboxesFill","BIconInfo","BIconInfoFill","BIconInfoSquare","BIconInfoSquareFill","BIconJustify","BIconJustifyLeft","BIconJustifyRight","BIconKanban","BIconKanbanFill","BIconLaptop","BIconLayoutSidebar","BIconLayoutSidebarReverse","BIconLayoutSplit","BIconList","BIconListCheck","BIconListOl","BIconListTask","BIconListUl","BIconLock","BIconLockFill","BIconMap","BIconMic","BIconMoon","BIconMusicPlayer","BIconMusicPlayerFill","BIconOption","BIconOutlet","BIconPause","BIconPauseFill","BIconPen","BIconPencil","BIconPeople","BIconPeopleFill","BIconPerson","BIconPersonFill","BIconPhone","BIconPhoneLandscape","BIconPieChart","BIconPieChartFill","BIconPlay","BIconPlayFill","BIconPlug","BIconPlus","BIconPower","BIconQuestion","BIconQuestionFill","BIconQuestionSquare","BIconQuestionSquareFill","BIconReply","BIconReplyAll","BIconReplyAllFill","BIconReplyFill","BIconScrewdriver","BIconSearch","BIconShield","BIconShieldFill","BIconShieldLock","BIconShieldLockFill","BIconShieldShaded","BIconShift","BIconShiftFill","BIconSkipBackward","BIconSkipBackwardFill","BIconSkipEnd","BIconSkipEndFill","BIconSkipForward","BIconSkipForwardFill","BIconSkipStart","BIconSkipStartFill","BIconSpeaker","BIconSquare","BIconSquareFill","BIconSquareHalf","BIconStar","BIconStarFill","BIconStarHalf","BIconStop","BIconStopFill","BIconStopwatch","BIconStopwatchFill","BIconSun","BIconTable","BIconTablet","BIconTabletLandscape","BIconTag","BIconTagFill","BIconTerminal","BIconTerminalFill","BIconTextCenter","BIconTextIndentLeft","BIconTextIndentRight","BIconTextLeft","BIconTextRight","BIconThreeDots","BIconThreeDotsVertical","BIconToggleOff","BIconToggleOn","BIconToggles","BIconTools","BIconTrash","BIconTrashFill","BIconTriangle","BIconTriangleFill","BIconTriangleHalf","BIconTrophy","BIconTv","BIconTvFill","BIconType","BIconTypeBold","BIconTypeH1","BIconTypeH2","BIconTypeH3","BIconTypeItalic","BIconTypeStrikethrough","BIconTypeUnderline","BIconUnlock","BIconUnlockFill","BIconUpload","BIconVolumeDown","BIconVolumeDownFill","BIconVolumeMute","BIconVolumeMuteFill","BIconVolumeUp","BIconVolumeUpFill","BIconWallet","BIconWatch","BIconWifi","BIconWindow","BIconWrench","BIconX","BIconXCircle","BIconXCircleFill","BIconXOctagon","BIconXOctagonFill","BIconXSquare","BIconXSquareFill","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","lazyProps","imgLazyProps","BCardImgLazy","textTag","BCardText","deck","columns","BCardGroup","CardPlugin","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","n","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","BCarouselSlide","inject","contentClasses","noDrag","dragstart","e","contentChildren","CarouselPlugin","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","t","bindTargets","listenTypes","listener","elm","boundListeners","unbindTargets","BV_TOGGLE","resetProp","handleTargets","handleUpdate","VBToggle","state","CollapsePlugin","BvEvent","eventInit","TypeError","constructor","Defaults","enumerable","configurable","writable","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","Popper","createPopper","focusMenu","element","getPopperConfig","updatePopper","scheduleUpdate","placement","popperConfig","flip","enabled","preventOverflow","boundariesElement","isOpen","rootCloseListener","vm","hide","refocus","_evt","onMousedown","onEsc","onSplitClick","hideHandler","up","focusItem","find","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","BEmbed","EmbedPlugin","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","arr","formMixin","form","autofocus","handleAutofocus","formRadioCheckMixin","checked","plain","buttonVariant","ariaLabelledby","localChecked","isGroup","bvGroup","hasFocus","computedLocalChecked","set","isBtnMode","buttons","isPlain","isCustom","isSwitch","isRadio","switches","switch","isInline","isRequired","getName","groupName","getForm","getSize","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","f","file","v","reset","focusHandler","onFileChange","dataTransfer","setFiles","queue","webkitGetAsEntry","traverseFileTree","all","then","filesArr","filesArray","onReset","onDragover","dropEffect","onDragleave","onDrop","resolve","$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","order","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","debounce","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","o","_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","round","onFocusBlur","stepUp","stepDown","ctrlKey","metaKey","resetTimers","handleStepRepeat","onKeyup","stepper","setMouseup","count","onMouseup","spinId","isVertical","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","computedStyle","styles","resize","computedRows","overflowY","computedMinRows","computedMaxRows","setHeight","visibleCallback","computeHeight","$isServer","lineHeight","border","borderBottomWidth","padding","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","jumbotron-fluid","JumbotronPlugin","COMMON_ALIGNMENT","computeRowColsClass","computeRowColsBreakpoint","rowColsPropList","rowColsProps","noGutters","alignV","alignH","alignContent","BRow","no-gutters","LayoutPlugin","LinkPlugin","flush","horizontal","BListGroup","list-group-flush","list-group-horizontal","actionTags","action","isAction","itemProps","ListGroupPlugin","BMediaBody","verticalAlign","BMediaAside","rightAlign","BMedia","$aside","$default","MediaPlugin","BTransporterTargetSingle","abstract","nodes","updatedNodes","destroyed","removeChild","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","clientWidth","isTop","_getBCR","innerWidth","_paddingChangedForModal","_marginChangedForModal","actualPadding","paddingRight","calculatedPadding","actualMargin","marginRight","calculatedMargin","BvModalEvent","_assertThisInitialized","trigger","_get","OBSERVER_CONFIG","characterData","TABABLE_SELECTOR","s","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","scrollTop","clientHeight","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","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","ModalPlugin","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","range","sanitizeLimit","limit","sanitizeCurrentPage","numberOfPages","page","onSpaceKey","hideGotoEndButtons","labelFirstPage","firstText","firstNumber","firstClass","labelPrevPage","prevText","prevClass","labelNextPage","nextText","nextClass","labelLastPage","lastText","lastNumber","lastClass","labelPage","pageClass","hideEllipsis","ellipsisText","ellipsisClass","paginationMixin","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","p","_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","pageSizeNumberOfPages","num","PaginationPlugin","baseUrl","useRouter","linkGen","pageGen","noPageDetect","computedValue","setNumberOfPages","guessCurrentPage","getPageInfo","makeLink","resolveLink","_link2","pathname","search","resolveRoute","route","guess","currRoute","loc","location","currLink","PaginationNavPlugin","AUTO","TOP","BOTTOM","TOPLEFT","TOPRIGHT","RIGHTTOP","RIGHTBOTTOM","BOTTOMLEFT","BOTTOMRIGHT","LEFTTOP","LEFTBOTTOM","OffsetMap","BVPopper","fallbackPlacement","arrowPadding","attachment","getAttachment","templateType","getOffset","behavior","arrow","onCreate","originalPlacement","popperPlacementChange","onUpdate","popperCreate","popperUpdate","popperDestroy","arrowOffset","renderTemplate","BVTooltipTemplate","interactive","templateClasses","noninteractive","templateAttributes","templateListeners","$title","templateData","triggers","BVTooltip","activeTrigger","computedId","computedTriggers","sort","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","VBPopover","removePopover","VBPopoverPlugin","PopoverPlugin","bvProgress","labelHtml","striped","animated","showProgress","showValue","progressBarClasses","computedStriped","computedAnimated","progressBarStyles","computedProgress","computedShowProgress","computedShowValue","progressHeight","ProgressPlugin","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","TableLitePlugin","TableSimplePlugin","TablePlugin","navProps","notDisabled","tab","BTabButtonHelper","bvTabs","posInSet","setSize","noKeyNav","handleEvt","localActive","titleLinkClass","activeNavItemClass","titleItemClass","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","TabsPlugin","DefaultTransition","doRender","dead","staticName","Wormhole","hasTarget","$toaster","b-dead-toaster","$target","PortalTarget","slim","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","Portal","toastProps","toastContent","BVToastPlugin","BToastPop","toast","BvToast","ToastPlugin","BV_TOOLTIP","noninteractiveRE","applyTooltip","VBTooltip","removeTooltip","VBTooltipPlugin","TooltipPlugin","componentsPlugin","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","match","ScrollSpy","$scroller","$selector","$offsets","$targets","$activeTarget","$scrollHeight","$resizeTimeout","$obs_scroller","$obs_targets","$config","updateConfig","unlisten","cfg","componentName","configTypes","property","expectedTypes","valueType","_isVue","typeCheckConfig","Name","scroller","getScroller","setObservers","autoMethod","methodFn","offsetBase","getScrollTop","getScrollHeight","maxScroll","getOffsetHeight","clear","innerHeight","links","dropdown","setActiveState","sibling","previousElementSibling","BV_SCROLLSPY","onlyDigitsRE","applyScrollspy","VBScrollspy","update","dispose","removeScrollspy","VBScrollspyPlugin","VBTogglePlugin","VBVisiblePlugin","directivesPlugin","BVConfigPlugin","RX_ICON_PREFIX","BIcon","icon","IconsPlugin","BootstrapVueIcons","BootstrapVue"],"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: '×',\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: '×',\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","// 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' // ' '\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","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 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 { 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 { 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","import { BSpinner } from './spinner'\nimport { pluginFactory } from '../../utils/plugins'\n\nconst SpinnerPlugin = /*#__PURE__*/ pluginFactory({\n components: { BSpinner }\n})\n\nexport { SpinnerPlugin, BSpinner }\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 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","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 { 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 { 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 { 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 { 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 { 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 { 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","//\n// Utility Plugin for setting the configuration\n//\nimport { pluginFactory } from './utils/plugins'\n\nexport const BVConfigPlugin = /*#__PURE__*/ pluginFactory()\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","// --- 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\nimport { pluginFactoryNoConfig } from '../utils/plugins'\n\n// Icon helper component\nimport { BIcon } from './icon'\n\n// Icon stacking component\nimport { BIconstack } from './iconstack'\n\nimport {\n // BootstrapVue custom icons\n BIconBlank,\n // Bootstrap icons\n BIconAlarm,\n BIconAlarmFill,\n BIconAlertCircle,\n BIconAlertCircleFill,\n BIconAlertOctagon,\n BIconAlertOctagonFill,\n BIconAlertSquare,\n BIconAlertSquareFill,\n BIconAlertTriangle,\n BIconAlertTriangleFill,\n BIconArchive,\n BIconArchiveFill,\n BIconArrowBarBottom,\n BIconArrowBarLeft,\n BIconArrowBarRight,\n BIconArrowBarUp,\n BIconArrowClockwise,\n BIconArrowCounterclockwise,\n BIconArrowDown,\n BIconArrowDownLeft,\n BIconArrowDownRight,\n BIconArrowDownShort,\n BIconArrowLeft,\n BIconArrowLeftRight,\n BIconArrowLeftShort,\n BIconArrowRepeat,\n BIconArrowRight,\n BIconArrowRightShort,\n BIconArrowUp,\n BIconArrowUpDown,\n BIconArrowUpLeft,\n BIconArrowUpRight,\n BIconArrowUpShort,\n BIconArrowsAngleContract,\n BIconArrowsAngleExpand,\n BIconArrowsCollapse,\n BIconArrowsExpand,\n BIconArrowsFullscreen,\n BIconAt,\n BIconAward,\n BIconBackspace,\n BIconBackspaceFill,\n BIconBackspaceReverse,\n BIconBackspaceReverseFill,\n BIconBarChart,\n BIconBarChartFill,\n BIconBattery,\n BIconBatteryCharging,\n BIconBatteryFull,\n BIconBell,\n BIconBellFill,\n BIconBlockquoteLeft,\n BIconBlockquoteRight,\n BIconBook,\n BIconBookHalfFill,\n BIconBookmark,\n BIconBookmarkFill,\n BIconBootstrap,\n BIconBootstrapFill,\n BIconBootstrapReboot,\n BIconBoxArrowBottomLeft,\n BIconBoxArrowBottomRight,\n BIconBoxArrowDown,\n BIconBoxArrowLeft,\n BIconBoxArrowRight,\n BIconBoxArrowUp,\n BIconBoxArrowUpLeft,\n BIconBoxArrowUpRight,\n BIconBraces,\n BIconBrightnessFillHigh,\n BIconBrightnessFillLow,\n BIconBrightnessHigh,\n BIconBrightnessLow,\n BIconBrush,\n BIconBucket,\n BIconBucketFill,\n BIconBuilding,\n BIconBullseye,\n BIconCalendar,\n BIconCalendarFill,\n BIconCamera,\n BIconCameraVideo,\n BIconCameraVideoFill,\n BIconCapslock,\n BIconCapslockFill,\n BIconChat,\n BIconChatFill,\n BIconCheck,\n BIconCheckBox,\n BIconCheckCircle,\n BIconChevronCompactDown,\n BIconChevronCompactLeft,\n BIconChevronCompactRight,\n BIconChevronCompactUp,\n BIconChevronDown,\n BIconChevronLeft,\n BIconChevronRight,\n BIconChevronUp,\n BIconCircle,\n BIconCircleFill,\n BIconCircleHalf,\n BIconCircleSlash,\n BIconClock,\n BIconClockFill,\n BIconCloud,\n BIconCloudDownload,\n BIconCloudFill,\n BIconCloudUpload,\n BIconCode,\n BIconCodeSlash,\n BIconColumns,\n BIconColumnsGutters,\n BIconCommand,\n BIconCompass,\n BIconCone,\n BIconConeStriped,\n BIconController,\n BIconCreditCard,\n BIconCursor,\n BIconCursorFill,\n BIconDash,\n BIconDiamond,\n BIconDiamondHalf,\n BIconDisplay,\n BIconDisplayFill,\n BIconDocument,\n BIconDocumentCode,\n BIconDocumentDiff,\n BIconDocumentRichtext,\n BIconDocumentSpreadsheet,\n BIconDocumentText,\n BIconDocuments,\n BIconDocumentsAlt,\n BIconDot,\n BIconDownload,\n BIconEggFried,\n BIconEject,\n BIconEjectFill,\n BIconEnvelope,\n BIconEnvelopeFill,\n BIconEnvelopeOpen,\n BIconEnvelopeOpenFill,\n BIconEye,\n BIconEyeFill,\n BIconEyeSlash,\n BIconEyeSlashFill,\n BIconFilter,\n BIconFlag,\n BIconFlagFill,\n BIconFolder,\n BIconFolderFill,\n BIconFolderSymlink,\n BIconFolderSymlinkFill,\n BIconFonts,\n BIconForward,\n BIconForwardFill,\n BIconGear,\n BIconGearFill,\n BIconGearWide,\n BIconGearWideConnected,\n BIconGeo,\n BIconGraphDown,\n BIconGraphUp,\n BIconGrid,\n BIconGridFill,\n BIconHammer,\n BIconHash,\n BIconHeart,\n BIconHeartFill,\n BIconHouse,\n BIconHouseFill,\n BIconImage,\n BIconImageAlt,\n BIconImageFill,\n BIconImages,\n BIconInbox,\n BIconInboxFill,\n BIconInboxes,\n BIconInboxesFill,\n BIconInfo,\n BIconInfoFill,\n BIconInfoSquare,\n BIconInfoSquareFill,\n BIconJustify,\n BIconJustifyLeft,\n BIconJustifyRight,\n BIconKanban,\n BIconKanbanFill,\n BIconLaptop,\n BIconLayoutSidebar,\n BIconLayoutSidebarReverse,\n BIconLayoutSplit,\n BIconList,\n BIconListCheck,\n BIconListOl,\n BIconListTask,\n BIconListUl,\n BIconLock,\n BIconLockFill,\n BIconMap,\n BIconMic,\n BIconMoon,\n BIconMusicPlayer,\n BIconMusicPlayerFill,\n BIconOption,\n BIconOutlet,\n BIconPause,\n BIconPauseFill,\n BIconPen,\n BIconPencil,\n BIconPeople,\n BIconPeopleFill,\n BIconPerson,\n BIconPersonFill,\n BIconPhone,\n BIconPhoneLandscape,\n BIconPieChart,\n BIconPieChartFill,\n BIconPlay,\n BIconPlayFill,\n BIconPlug,\n BIconPlus,\n BIconPower,\n BIconQuestion,\n BIconQuestionFill,\n BIconQuestionSquare,\n BIconQuestionSquareFill,\n BIconReply,\n BIconReplyAll,\n BIconReplyAllFill,\n BIconReplyFill,\n BIconScrewdriver,\n BIconSearch,\n BIconShield,\n BIconShieldFill,\n BIconShieldLock,\n BIconShieldLockFill,\n BIconShieldShaded,\n BIconShift,\n BIconShiftFill,\n BIconSkipBackward,\n BIconSkipBackwardFill,\n BIconSkipEnd,\n BIconSkipEndFill,\n BIconSkipForward,\n BIconSkipForwardFill,\n BIconSkipStart,\n BIconSkipStartFill,\n BIconSpeaker,\n BIconSquare,\n BIconSquareFill,\n BIconSquareHalf,\n BIconStar,\n BIconStarFill,\n BIconStarHalf,\n BIconStop,\n BIconStopFill,\n BIconStopwatch,\n BIconStopwatchFill,\n BIconSun,\n BIconTable,\n BIconTablet,\n BIconTabletLandscape,\n BIconTag,\n BIconTagFill,\n BIconTerminal,\n BIconTerminalFill,\n BIconTextCenter,\n BIconTextIndentLeft,\n BIconTextIndentRight,\n BIconTextLeft,\n BIconTextRight,\n BIconThreeDots,\n BIconThreeDotsVertical,\n BIconToggleOff,\n BIconToggleOn,\n BIconToggles,\n BIconTools,\n BIconTrash,\n BIconTrashFill,\n BIconTriangle,\n BIconTriangleFill,\n BIconTriangleHalf,\n BIconTrophy,\n BIconTv,\n BIconTvFill,\n BIconType,\n BIconTypeBold,\n BIconTypeH1,\n BIconTypeH2,\n BIconTypeH3,\n BIconTypeItalic,\n BIconTypeStrikethrough,\n BIconTypeUnderline,\n BIconUnlock,\n BIconUnlockFill,\n BIconUpload,\n BIconVolumeDown,\n BIconVolumeDownFill,\n BIconVolumeMute,\n BIconVolumeMuteFill,\n BIconVolumeUp,\n BIconVolumeUpFill,\n BIconWallet,\n BIconWatch,\n BIconWifi,\n BIconWindow,\n BIconWrench,\n BIconX,\n BIconXCircle,\n BIconXCircleFill,\n BIconXOctagon,\n BIconXOctagonFill,\n BIconXSquare,\n BIconXSquareFill\n} from './icons'\n\n// Icon component names for used in the docs\nexport const iconNames = [\n // BootstrapVue custom icon component names\n 'BIconBlank',\n // Bootstrap icon component names\n 'BIconAlarm',\n 'BIconAlarmFill',\n 'BIconAlertCircle',\n 'BIconAlertCircleFill',\n 'BIconAlertOctagon',\n 'BIconAlertOctagonFill',\n 'BIconAlertSquare',\n 'BIconAlertSquareFill',\n 'BIconAlertTriangle',\n 'BIconAlertTriangleFill',\n 'BIconArchive',\n 'BIconArchiveFill',\n 'BIconArrowBarBottom',\n 'BIconArrowBarLeft',\n 'BIconArrowBarRight',\n 'BIconArrowBarUp',\n 'BIconArrowClockwise',\n 'BIconArrowCounterclockwise',\n 'BIconArrowDown',\n 'BIconArrowDownLeft',\n 'BIconArrowDownRight',\n 'BIconArrowDownShort',\n 'BIconArrowLeft',\n 'BIconArrowLeftRight',\n 'BIconArrowLeftShort',\n 'BIconArrowRepeat',\n 'BIconArrowRight',\n 'BIconArrowRightShort',\n 'BIconArrowUp',\n 'BIconArrowUpDown',\n 'BIconArrowUpLeft',\n 'BIconArrowUpRight',\n 'BIconArrowUpShort',\n 'BIconArrowsAngleContract',\n 'BIconArrowsAngleExpand',\n 'BIconArrowsCollapse',\n 'BIconArrowsExpand',\n 'BIconArrowsFullscreen',\n 'BIconAt',\n 'BIconAward',\n 'BIconBackspace',\n 'BIconBackspaceFill',\n 'BIconBackspaceReverse',\n 'BIconBackspaceReverseFill',\n 'BIconBarChart',\n 'BIconBarChartFill',\n 'BIconBattery',\n 'BIconBatteryCharging',\n 'BIconBatteryFull',\n 'BIconBell',\n 'BIconBellFill',\n 'BIconBlockquoteLeft',\n 'BIconBlockquoteRight',\n 'BIconBook',\n 'BIconBookHalfFill',\n 'BIconBookmark',\n 'BIconBookmarkFill',\n 'BIconBootstrap',\n 'BIconBootstrapFill',\n 'BIconBootstrapReboot',\n 'BIconBoxArrowBottomLeft',\n 'BIconBoxArrowBottomRight',\n 'BIconBoxArrowDown',\n 'BIconBoxArrowLeft',\n 'BIconBoxArrowRight',\n 'BIconBoxArrowUp',\n 'BIconBoxArrowUpLeft',\n 'BIconBoxArrowUpRight',\n 'BIconBraces',\n 'BIconBrightnessFillHigh',\n 'BIconBrightnessFillLow',\n 'BIconBrightnessHigh',\n 'BIconBrightnessLow',\n 'BIconBrush',\n 'BIconBucket',\n 'BIconBucketFill',\n 'BIconBuilding',\n 'BIconBullseye',\n 'BIconCalendar',\n 'BIconCalendarFill',\n 'BIconCamera',\n 'BIconCameraVideo',\n 'BIconCameraVideoFill',\n 'BIconCapslock',\n 'BIconCapslockFill',\n 'BIconChat',\n 'BIconChatFill',\n 'BIconCheck',\n 'BIconCheckBox',\n 'BIconCheckCircle',\n 'BIconChevronCompactDown',\n 'BIconChevronCompactLeft',\n 'BIconChevronCompactRight',\n 'BIconChevronCompactUp',\n 'BIconChevronDown',\n 'BIconChevronLeft',\n 'BIconChevronRight',\n 'BIconChevronUp',\n 'BIconCircle',\n 'BIconCircleFill',\n 'BIconCircleHalf',\n 'BIconCircleSlash',\n 'BIconClock',\n 'BIconClockFill',\n 'BIconCloud',\n 'BIconCloudDownload',\n 'BIconCloudFill',\n 'BIconCloudUpload',\n 'BIconCode',\n 'BIconCodeSlash',\n 'BIconColumns',\n 'BIconColumnsGutters',\n 'BIconCommand',\n 'BIconCompass',\n 'BIconCone',\n 'BIconConeStriped',\n 'BIconController',\n 'BIconCreditCard',\n 'BIconCursor',\n 'BIconCursorFill',\n 'BIconDash',\n 'BIconDiamond',\n 'BIconDiamondHalf',\n 'BIconDisplay',\n 'BIconDisplayFill',\n 'BIconDocument',\n 'BIconDocumentCode',\n 'BIconDocumentDiff',\n 'BIconDocumentRichtext',\n 'BIconDocumentSpreadsheet',\n 'BIconDocumentText',\n 'BIconDocuments',\n 'BIconDocumentsAlt',\n 'BIconDot',\n 'BIconDownload',\n 'BIconEggFried',\n 'BIconEject',\n 'BIconEjectFill',\n 'BIconEnvelope',\n 'BIconEnvelopeFill',\n 'BIconEnvelopeOpen',\n 'BIconEnvelopeOpenFill',\n 'BIconEye',\n 'BIconEyeFill',\n 'BIconEyeSlash',\n 'BIconEyeSlashFill',\n 'BIconFilter',\n 'BIconFlag',\n 'BIconFlagFill',\n 'BIconFolder',\n 'BIconFolderFill',\n 'BIconFolderSymlink',\n 'BIconFolderSymlinkFill',\n 'BIconFonts',\n 'BIconForward',\n 'BIconForwardFill',\n 'BIconGear',\n 'BIconGearFill',\n 'BIconGearWide',\n 'BIconGearWideConnected',\n 'BIconGeo',\n 'BIconGraphDown',\n 'BIconGraphUp',\n 'BIconGrid',\n 'BIconGridFill',\n 'BIconHammer',\n 'BIconHash',\n 'BIconHeart',\n 'BIconHeartFill',\n 'BIconHouse',\n 'BIconHouseFill',\n 'BIconImage',\n 'BIconImageAlt',\n 'BIconImageFill',\n 'BIconImages',\n 'BIconInbox',\n 'BIconInboxFill',\n 'BIconInboxes',\n 'BIconInboxesFill',\n 'BIconInfo',\n 'BIconInfoFill',\n 'BIconInfoSquare',\n 'BIconInfoSquareFill',\n 'BIconJustify',\n 'BIconJustifyLeft',\n 'BIconJustifyRight',\n 'BIconKanban',\n 'BIconKanbanFill',\n 'BIconLaptop',\n 'BIconLayoutSidebar',\n 'BIconLayoutSidebarReverse',\n 'BIconLayoutSplit',\n 'BIconList',\n 'BIconListCheck',\n 'BIconListOl',\n 'BIconListTask',\n 'BIconListUl',\n 'BIconLock',\n 'BIconLockFill',\n 'BIconMap',\n 'BIconMic',\n 'BIconMoon',\n 'BIconMusicPlayer',\n 'BIconMusicPlayerFill',\n 'BIconOption',\n 'BIconOutlet',\n 'BIconPause',\n 'BIconPauseFill',\n 'BIconPen',\n 'BIconPencil',\n 'BIconPeople',\n 'BIconPeopleFill',\n 'BIconPerson',\n 'BIconPersonFill',\n 'BIconPhone',\n 'BIconPhoneLandscape',\n 'BIconPieChart',\n 'BIconPieChartFill',\n 'BIconPlay',\n 'BIconPlayFill',\n 'BIconPlug',\n 'BIconPlus',\n 'BIconPower',\n 'BIconQuestion',\n 'BIconQuestionFill',\n 'BIconQuestionSquare',\n 'BIconQuestionSquareFill',\n 'BIconReply',\n 'BIconReplyAll',\n 'BIconReplyAllFill',\n 'BIconReplyFill',\n 'BIconScrewdriver',\n 'BIconSearch',\n 'BIconShield',\n 'BIconShieldFill',\n 'BIconShieldLock',\n 'BIconShieldLockFill',\n 'BIconShieldShaded',\n 'BIconShift',\n 'BIconShiftFill',\n 'BIconSkipBackward',\n 'BIconSkipBackwardFill',\n 'BIconSkipEnd',\n 'BIconSkipEndFill',\n 'BIconSkipForward',\n 'BIconSkipForwardFill',\n 'BIconSkipStart',\n 'BIconSkipStartFill',\n 'BIconSpeaker',\n 'BIconSquare',\n 'BIconSquareFill',\n 'BIconSquareHalf',\n 'BIconStar',\n 'BIconStarFill',\n 'BIconStarHalf',\n 'BIconStop',\n 'BIconStopFill',\n 'BIconStopwatch',\n 'BIconStopwatchFill',\n 'BIconSun',\n 'BIconTable',\n 'BIconTablet',\n 'BIconTabletLandscape',\n 'BIconTag',\n 'BIconTagFill',\n 'BIconTerminal',\n 'BIconTerminalFill',\n 'BIconTextCenter',\n 'BIconTextIndentLeft',\n 'BIconTextIndentRight',\n 'BIconTextLeft',\n 'BIconTextRight',\n 'BIconThreeDots',\n 'BIconThreeDotsVertical',\n 'BIconToggleOff',\n 'BIconToggleOn',\n 'BIconToggles',\n 'BIconTools',\n 'BIconTrash',\n 'BIconTrashFill',\n 'BIconTriangle',\n 'BIconTriangleFill',\n 'BIconTriangleHalf',\n 'BIconTrophy',\n 'BIconTv',\n 'BIconTvFill',\n 'BIconType',\n 'BIconTypeBold',\n 'BIconTypeH1',\n 'BIconTypeH2',\n 'BIconTypeH3',\n 'BIconTypeItalic',\n 'BIconTypeStrikethrough',\n 'BIconTypeUnderline',\n 'BIconUnlock',\n 'BIconUnlockFill',\n 'BIconUpload',\n 'BIconVolumeDown',\n 'BIconVolumeDownFill',\n 'BIconVolumeMute',\n 'BIconVolumeMuteFill',\n 'BIconVolumeUp',\n 'BIconVolumeUpFill',\n 'BIconWallet',\n 'BIconWatch',\n 'BIconWifi',\n 'BIconWindow',\n 'BIconWrench',\n 'BIconX',\n 'BIconXCircle',\n 'BIconXCircleFill',\n 'BIconXOctagon',\n 'BIconXOctagonFill',\n 'BIconXSquare',\n 'BIconXSquareFill'\n]\n\n// Export the icons plugin\nexport const IconsPlugin = /*#__PURE__*/ pluginFactoryNoConfig({\n components: {\n // Icon helper component\n BIcon,\n // Icon stacking component\n BIconstack,\n // BootstrapVue custom icon components\n BIconBlank,\n // Bootstrap icon components\n BIconAlarm,\n BIconAlarmFill,\n BIconAlertCircle,\n BIconAlertCircleFill,\n BIconAlertOctagon,\n BIconAlertOctagonFill,\n BIconAlertSquare,\n BIconAlertSquareFill,\n BIconAlertTriangle,\n BIconAlertTriangleFill,\n BIconArchive,\n BIconArchiveFill,\n BIconArrowBarBottom,\n BIconArrowBarLeft,\n BIconArrowBarRight,\n BIconArrowBarUp,\n BIconArrowClockwise,\n BIconArrowCounterclockwise,\n BIconArrowDown,\n BIconArrowDownLeft,\n BIconArrowDownRight,\n BIconArrowDownShort,\n BIconArrowLeft,\n BIconArrowLeftRight,\n BIconArrowLeftShort,\n BIconArrowRepeat,\n BIconArrowRight,\n BIconArrowRightShort,\n BIconArrowUp,\n BIconArrowUpDown,\n BIconArrowUpLeft,\n BIconArrowUpRight,\n BIconArrowUpShort,\n BIconArrowsAngleContract,\n BIconArrowsAngleExpand,\n BIconArrowsCollapse,\n BIconArrowsExpand,\n BIconArrowsFullscreen,\n BIconAt,\n BIconAward,\n BIconBackspace,\n BIconBackspaceFill,\n BIconBackspaceReverse,\n BIconBackspaceReverseFill,\n BIconBarChart,\n BIconBarChartFill,\n BIconBattery,\n BIconBatteryCharging,\n BIconBatteryFull,\n BIconBell,\n BIconBellFill,\n BIconBlockquoteLeft,\n BIconBlockquoteRight,\n BIconBook,\n BIconBookHalfFill,\n BIconBookmark,\n BIconBookmarkFill,\n BIconBootstrap,\n BIconBootstrapFill,\n BIconBootstrapReboot,\n BIconBoxArrowBottomLeft,\n BIconBoxArrowBottomRight,\n BIconBoxArrowDown,\n BIconBoxArrowLeft,\n BIconBoxArrowRight,\n BIconBoxArrowUp,\n BIconBoxArrowUpLeft,\n BIconBoxArrowUpRight,\n BIconBraces,\n BIconBrightnessFillHigh,\n BIconBrightnessFillLow,\n BIconBrightnessHigh,\n BIconBrightnessLow,\n BIconBrush,\n BIconBucket,\n BIconBucketFill,\n BIconBuilding,\n BIconBullseye,\n BIconCalendar,\n BIconCalendarFill,\n BIconCamera,\n BIconCameraVideo,\n BIconCameraVideoFill,\n BIconCapslock,\n BIconCapslockFill,\n BIconChat,\n BIconChatFill,\n BIconCheck,\n BIconCheckBox,\n BIconCheckCircle,\n BIconChevronCompactDown,\n BIconChevronCompactLeft,\n BIconChevronCompactRight,\n BIconChevronCompactUp,\n BIconChevronDown,\n BIconChevronLeft,\n BIconChevronRight,\n BIconChevronUp,\n BIconCircle,\n BIconCircleFill,\n BIconCircleHalf,\n BIconCircleSlash,\n BIconClock,\n BIconClockFill,\n BIconCloud,\n BIconCloudDownload,\n BIconCloudFill,\n BIconCloudUpload,\n BIconCode,\n BIconCodeSlash,\n BIconColumns,\n BIconColumnsGutters,\n BIconCommand,\n BIconCompass,\n BIconCone,\n BIconConeStriped,\n BIconController,\n BIconCreditCard,\n BIconCursor,\n BIconCursorFill,\n BIconDash,\n BIconDiamond,\n BIconDiamondHalf,\n BIconDisplay,\n BIconDisplayFill,\n BIconDocument,\n BIconDocumentCode,\n BIconDocumentDiff,\n BIconDocumentRichtext,\n BIconDocumentSpreadsheet,\n BIconDocumentText,\n BIconDocuments,\n BIconDocumentsAlt,\n BIconDot,\n BIconDownload,\n BIconEggFried,\n BIconEject,\n BIconEjectFill,\n BIconEnvelope,\n BIconEnvelopeFill,\n BIconEnvelopeOpen,\n BIconEnvelopeOpenFill,\n BIconEye,\n BIconEyeFill,\n BIconEyeSlash,\n BIconEyeSlashFill,\n BIconFilter,\n BIconFlag,\n BIconFlagFill,\n BIconFolder,\n BIconFolderFill,\n BIconFolderSymlink,\n BIconFolderSymlinkFill,\n BIconFonts,\n BIconForward,\n BIconForwardFill,\n BIconGear,\n BIconGearFill,\n BIconGearWide,\n BIconGearWideConnected,\n BIconGeo,\n BIconGraphDown,\n BIconGraphUp,\n BIconGrid,\n BIconGridFill,\n BIconHammer,\n BIconHash,\n BIconHeart,\n BIconHeartFill,\n BIconHouse,\n BIconHouseFill,\n BIconImage,\n BIconImageAlt,\n BIconImageFill,\n BIconImages,\n BIconInbox,\n BIconInboxFill,\n BIconInboxes,\n BIconInboxesFill,\n BIconInfo,\n BIconInfoFill,\n BIconInfoSquare,\n BIconInfoSquareFill,\n BIconJustify,\n BIconJustifyLeft,\n BIconJustifyRight,\n BIconKanban,\n BIconKanbanFill,\n BIconLaptop,\n BIconLayoutSidebar,\n BIconLayoutSidebarReverse,\n BIconLayoutSplit,\n BIconList,\n BIconListCheck,\n BIconListOl,\n BIconListTask,\n BIconListUl,\n BIconLock,\n BIconLockFill,\n BIconMap,\n BIconMic,\n BIconMoon,\n BIconMusicPlayer,\n BIconMusicPlayerFill,\n BIconOption,\n BIconOutlet,\n BIconPause,\n BIconPauseFill,\n BIconPen,\n BIconPencil,\n BIconPeople,\n BIconPeopleFill,\n BIconPerson,\n BIconPersonFill,\n BIconPhone,\n BIconPhoneLandscape,\n BIconPieChart,\n BIconPieChartFill,\n BIconPlay,\n BIconPlayFill,\n BIconPlug,\n BIconPlus,\n BIconPower,\n BIconQuestion,\n BIconQuestionFill,\n BIconQuestionSquare,\n BIconQuestionSquareFill,\n BIconReply,\n BIconReplyAll,\n BIconReplyAllFill,\n BIconReplyFill,\n BIconScrewdriver,\n BIconSearch,\n BIconShield,\n BIconShieldFill,\n BIconShieldLock,\n BIconShieldLockFill,\n BIconShieldShaded,\n BIconShift,\n BIconShiftFill,\n BIconSkipBackward,\n BIconSkipBackwardFill,\n BIconSkipEnd,\n BIconSkipEndFill,\n BIconSkipForward,\n BIconSkipForwardFill,\n BIconSkipStart,\n BIconSkipStartFill,\n BIconSpeaker,\n BIconSquare,\n BIconSquareFill,\n BIconSquareHalf,\n BIconStar,\n BIconStarFill,\n BIconStarHalf,\n BIconStop,\n BIconStopFill,\n BIconStopwatch,\n BIconStopwatchFill,\n BIconSun,\n BIconTable,\n BIconTablet,\n BIconTabletLandscape,\n BIconTag,\n BIconTagFill,\n BIconTerminal,\n BIconTerminalFill,\n BIconTextCenter,\n BIconTextIndentLeft,\n BIconTextIndentRight,\n BIconTextLeft,\n BIconTextRight,\n BIconThreeDots,\n BIconThreeDotsVertical,\n BIconToggleOff,\n BIconToggleOn,\n BIconToggles,\n BIconTools,\n BIconTrash,\n BIconTrashFill,\n BIconTriangle,\n BIconTriangleFill,\n BIconTriangleHalf,\n BIconTrophy,\n BIconTv,\n BIconTvFill,\n BIconType,\n BIconTypeBold,\n BIconTypeH1,\n BIconTypeH2,\n BIconTypeH3,\n BIconTypeItalic,\n BIconTypeStrikethrough,\n BIconTypeUnderline,\n BIconUnlock,\n BIconUnlockFill,\n BIconUpload,\n BIconVolumeDown,\n BIconVolumeDownFill,\n BIconVolumeMute,\n BIconVolumeMuteFill,\n BIconVolumeUp,\n BIconVolumeUpFill,\n BIconWallet,\n BIconWatch,\n BIconWifi,\n BIconWindow,\n BIconWrench,\n BIconX,\n BIconXCircle,\n BIconXCircleFill,\n BIconXOctagon,\n BIconXOctagonFill,\n BIconXSquare,\n BIconXSquareFill\n }\n})\n\n// Export the BootstrapVueIcons plugin installer\n// Mainly for the stand-alone bootstrap-vue-icons.xxx.js builds\nexport const BootstrapVueIcons = /*#__PURE__*/ pluginFactoryNoConfig(\n { plugins: { IconsPlugin } },\n { NAME: 'BootstrapVueIcons' }\n)\n\n// --- END AUTO-GENERATED FILE ---\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"]} |