From 0e10bb7733618e8d1548d65d24bcfae2bce1cb2f Mon Sep 17 00:00:00 2001 From: PMKuipers Date: Fri, 4 Aug 2023 22:39:58 +0200 Subject: [PATCH] Added built files so update from git is an option --- .gitignore | 1 - amd/build/bootstrap-vue.min.js | 12 ++++++++++++ amd/build/bootstrap-vue.min.js.map | 1 + amd/build/cfg-grades.min.js | 3 +++ amd/build/cfg-grades.min.js.map | 1 + amd/build/css-calc.min.js | 3 +++ amd/build/css-calc.min.js.map | 1 + amd/build/debounce.min.js | 3 +++ amd/build/debounce.min.js.map | 1 + amd/build/debugger.min.js | 3 +++ amd/build/debugger.min.js.map | 1 + amd/build/downloader.min.js | 3 +++ amd/build/downloader.min.js.map | 1 + amd/build/leaderline.min.js | 3 +++ amd/build/leaderline.min.js.map | 1 + amd/build/lib-hide-primarynav-items.min.js | 3 +++ amd/build/lib-hide-primarynav-items.min.js.map | 1 + amd/build/modedit-modal.min.js | 3 +++ amd/build/modedit-modal.min.js.map | 1 + amd/build/page-edit-plan.min.js | 3 +++ amd/build/page-edit-plan.min.js.map | 1 + amd/build/page-invitemanager.min.js | 3 +++ amd/build/page-invitemanager.min.js.map | 1 + amd/build/page-myreport.min.js | 3 +++ amd/build/page-myreport.min.js.map | 1 + amd/build/page-view-plan copy.min.js | 3 +++ amd/build/page-view-plan copy.min.js.map | 1 + amd/build/page-view-plan.min.js | 3 +++ amd/build/page-view-plan.min.js.map | 1 + amd/build/portal-vue.min.js | 3 +++ amd/build/portal-vue.min.js.map | 1 + amd/build/primary-nav-tools.min.js | 3 +++ amd/build/primary-nav-tools.min.js.map | 1 + amd/build/reflect-metadata.min.js | 3 +++ amd/build/reflect-metadata.min.js.map | 1 + amd/build/report-viewer-components.min.js | 3 +++ amd/build/report-viewer-components.min.js.map | 1 + amd/build/simpleline.min.js | 3 +++ amd/build/simpleline.min.js.map | 1 + amd/build/string-helper.min.js | 3 +++ amd/build/string-helper.min.js.map | 1 + amd/build/studyplan-editor-components.min.js | 3 +++ amd/build/studyplan-editor-components.min.js.map | 1 + amd/build/studyplan-processor.min.js | 3 +++ amd/build/studyplan-processor.min.js.map | 1 + amd/build/svgarc.min.js | 3 +++ amd/build/svgarc.min.js.map | 1 + amd/build/treestudyplan-components.min.js | 3 +++ amd/build/treestudyplan-components.min.js.map | 1 + amd/build/vue-class-component.min.js | 3 +++ amd/build/vue-class-component.min.js.map | 1 + amd/build/vue-color-picker-wheel.min.js | 3 +++ amd/build/vue-color-picker-wheel.min.js.map | 1 + amd/build/vue-easy-dnd.min.js | 3 +++ amd/build/vue-easy-dnd.min.js.map | 1 + amd/build/vue-hsluv-picker.min.js | 3 +++ amd/build/vue-hsluv-picker.min.js.map | 1 + amd/build/vue-property-decorator.min.js | 3 +++ amd/build/vue-property-decorator.min.js.map | 1 + amd/build/vue.min.js | 3 +++ amd/build/vue.min.js.map | 1 + 61 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 amd/build/bootstrap-vue.min.js create mode 100644 amd/build/bootstrap-vue.min.js.map create mode 100644 amd/build/cfg-grades.min.js create mode 100644 amd/build/cfg-grades.min.js.map create mode 100644 amd/build/css-calc.min.js create mode 100644 amd/build/css-calc.min.js.map create mode 100644 amd/build/debounce.min.js create mode 100644 amd/build/debounce.min.js.map create mode 100644 amd/build/debugger.min.js create mode 100644 amd/build/debugger.min.js.map create mode 100644 amd/build/downloader.min.js create mode 100644 amd/build/downloader.min.js.map create mode 100644 amd/build/leaderline.min.js create mode 100644 amd/build/leaderline.min.js.map create mode 100644 amd/build/lib-hide-primarynav-items.min.js create mode 100644 amd/build/lib-hide-primarynav-items.min.js.map create mode 100644 amd/build/modedit-modal.min.js create mode 100644 amd/build/modedit-modal.min.js.map create mode 100644 amd/build/page-edit-plan.min.js create mode 100644 amd/build/page-edit-plan.min.js.map create mode 100644 amd/build/page-invitemanager.min.js create mode 100644 amd/build/page-invitemanager.min.js.map create mode 100644 amd/build/page-myreport.min.js create mode 100644 amd/build/page-myreport.min.js.map create mode 100644 amd/build/page-view-plan copy.min.js create mode 100644 amd/build/page-view-plan copy.min.js.map create mode 100644 amd/build/page-view-plan.min.js create mode 100644 amd/build/page-view-plan.min.js.map create mode 100644 amd/build/portal-vue.min.js create mode 100644 amd/build/portal-vue.min.js.map create mode 100644 amd/build/primary-nav-tools.min.js create mode 100644 amd/build/primary-nav-tools.min.js.map create mode 100644 amd/build/reflect-metadata.min.js create mode 100644 amd/build/reflect-metadata.min.js.map create mode 100644 amd/build/report-viewer-components.min.js create mode 100644 amd/build/report-viewer-components.min.js.map create mode 100644 amd/build/simpleline.min.js create mode 100644 amd/build/simpleline.min.js.map create mode 100644 amd/build/string-helper.min.js create mode 100644 amd/build/string-helper.min.js.map create mode 100644 amd/build/studyplan-editor-components.min.js create mode 100644 amd/build/studyplan-editor-components.min.js.map create mode 100644 amd/build/studyplan-processor.min.js create mode 100644 amd/build/studyplan-processor.min.js.map create mode 100644 amd/build/svgarc.min.js create mode 100644 amd/build/svgarc.min.js.map create mode 100644 amd/build/treestudyplan-components.min.js create mode 100644 amd/build/treestudyplan-components.min.js.map create mode 100644 amd/build/vue-class-component.min.js create mode 100644 amd/build/vue-class-component.min.js.map create mode 100644 amd/build/vue-color-picker-wheel.min.js create mode 100644 amd/build/vue-color-picker-wheel.min.js.map create mode 100644 amd/build/vue-easy-dnd.min.js create mode 100644 amd/build/vue-easy-dnd.min.js.map create mode 100644 amd/build/vue-hsluv-picker.min.js create mode 100644 amd/build/vue-hsluv-picker.min.js.map create mode 100644 amd/build/vue-property-decorator.min.js create mode 100644 amd/build/vue-property-decorator.min.js.map create mode 100644 amd/build/vue.min.js create mode 100644 amd/build/vue.min.js.map diff --git a/.gitignore b/.gitignore index 91924d9..4eb775a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ /.vs /node_modules -/amd/build /build diff --git a/amd/build/bootstrap-vue.min.js b/amd/build/bootstrap-vue.min.js new file mode 100644 index 0000000..f87221f --- /dev/null +++ b/amd/build/bootstrap-vue.min.js @@ -0,0 +1,12 @@ +function _typeof2(obj){return _typeof2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof2(obj) +/*! + * BootstrapVue 2.16.0 + * + * @link https://bootstrap-vue.org + * @source https://github.com/bootstrap-vue/bootstrap-vue + * @copyright (c) 2016-2020 BootstrapVue + * @license MIT + * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE + */}!function(global,factory){"object"===("undefined"==typeof exports?"undefined":_typeof2(exports))&&"undefined"!=typeof module?module.exports=factory(require("./vue")):"function"==typeof define&&define.amd?define("local_treestudyplan/bootstrap-vue",["./vue"],factory):(global="undefined"!=typeof globalThis?globalThis:global||self).bootstrapVue=factory(global.Vue)}(window,(function(Vue){function _typeof(obj){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var i=0;iarr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i0,hasPassiveEventSupport=(/msie|trident/.test(userAgent),function(){var passiveEventSupported=!1;if(isBrowser)try{var options={get passive(){passiveEventSupported=!0}};window.addEventListener("test",options,options),window.removeEventListener("test",options,options)}catch(err){passiveEventSupported=!1}return passiveEventSupported}()),hasTouchSupport=isBrowser&&("ontouchstart"in document.documentElement||navigator.maxTouchPoints>0),hasPointerEventSupport=isBrowser&&Boolean(window.PointerEvent||window.MSPointerEvent),hasIntersectionObserverSupport=isBrowser&&"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype,getNoWarn=function(){return function(key){var fallback=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,env="undefined"!=typeof process&&process&&process.env||{};return key?env[key]||fallback:env}("BOOTSTRAP_VUE_NO_WARN")},w=hasWindowSupport?window:{},Element$1=hasWindowSupport?w.Element:function(_Object){_inherits(Element,_Object);var _super=_createSuper(Element);function Element(){return _classCallCheck(this,Element),_super.apply(this,arguments)}return Element}(_wrapNativeSuper(Object)),HTMLElement=hasWindowSupport?w.HTMLElement:function(_Element){_inherits(HTMLElement,_Element);var _super2=_createSuper(HTMLElement);function HTMLElement(){return _classCallCheck(this,HTMLElement),_super2.apply(this,arguments)}return HTMLElement}(Element$1),SVGElement=hasWindowSupport?w.SVGElement:function(_Element2){_inherits(SVGElement,_Element2);var _super3=_createSuper(SVGElement);function SVGElement(){return _classCallCheck(this,SVGElement),_super3.apply(this,arguments)}return SVGElement}(Element$1),File=hasWindowSupport?w.File:function(_Object2){_inherits(File,_Object2);var _super4=_createSuper(File);function File(){return _classCallCheck(this,File),_super4.apply(this,arguments)}return File}(_wrapNativeSuper(Object)),toType=function(val){return _typeof(val)},isUndefined=function(val){return void 0===val},isNull=function(val){return null===val},isUndefinedOrNull=function(val){return isUndefined(val)||isNull(val)},isFunction=function(val){return"function"===toType(val)},isBoolean=function(val){return"boolean"===toType(val)},isString=function(val){return"string"===toType(val)},isNumber=function(val){return"number"===toType(val)},isDate=function(val){return val instanceof Date},isEvent=function(val){return val instanceof Event},isRegExp=function(val){return"RegExp"===function(val){return Object.prototype.toString.call(val).slice(8,-1)}(val)},cloneDeep=function cloneDeep(obj){var defaultValue=arguments.length>1&&void 0!==arguments[1]?arguments[1]:obj;return isArray(obj)?obj.reduce((function(result,val){return[].concat(_toConsumableArray(result),[cloneDeep(val,val)])}),[]):isPlainObject(obj)?keys(obj).reduce((function(result,key){return _objectSpread2(_objectSpread2({},result),{},_defineProperty({},key,cloneDeep(obj[key],obj[key])))}),{}):defaultValue},identity=function(x){return x},RX_ARRAY_NOTATION=/\[(\d+)]/g,getRaw=function(obj,path){var defaultValue=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if(!(path=isArray(path)?path.join("."):path)||!isObject(obj))return defaultValue;if(path in obj)return obj[path];var steps=(path=String(path).replace(RX_ARRAY_NOTATION,".$1")).split(".").filter(identity);return 0===steps.length?defaultValue:steps.every((function(step){return isObject(obj)&&step in obj&&!isUndefinedOrNull(obj=obj[step])}))?obj:isNull(obj)?null:defaultValue},get=function(obj,path){var defaultValue=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,val=getRaw(obj,path);return isUndefinedOrNull(val)?defaultValue:val},warn=function(message){var source=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;getNoWarn()||console.warn("[BootstrapVue warn]: ".concat(source?"".concat(source," - "):"").concat(message))},warnNotClient=function(source){return!isBrowser&&(warn("".concat(source,": Can not be called during SSR.")),!0)},warnNoPromiseSupport=function(source){return!hasPromiseSupport&&(warn("".concat(source,": Requires Promise support.")),!0)},DEFAULTS=function deepFreeze(obj){return keys(obj).forEach((function(prop){var value=obj[prop];obj[prop]=value&&(isPlainObject(value)||isArray(value))?deepFreeze(value):value})),freeze(obj)}({breakpoints:["xs","sm","md","lg","xl"],formControls:{size:void 0},BAlert:{dismissLabel:"Close",variant:"info"},BAvatar:{variant:"secondary",badgeVariant:"primary"},BBadge:{variant:"secondary"},BButton:{size:void 0,variant:"secondary"},BButtonClose:{content:"×",textVariant:void 0,ariaLabel:"Close"},BCalendar:{labelPrevDecade:"Previous decade",labelPrevYear:"Previous year",labelPrevMonth:"Previous month",labelCurrentMonth:"Current month",labelNextMonth:"Next month",labelNextYear:"Next year",labelNextDecade:"Next decade",labelToday:"Today",labelSelected:"Selected date",labelNoDateSelected:"No date selected",labelCalendar:"Calendar",labelNav:"Calendar navigation",labelHelp:"Use cursor keys to navigate calendar dates"},BCardSubTitle:{subTitleTextVariant:"muted"},BCarousel:{labelPrev:"Previous Slide",labelNext:"Next Slide",labelGotoSlide:"Goto Slide",labelIndicators:"Select a slide to display"},BDropdown:{toggleText:"Toggle Dropdown",size:void 0,variant:"secondary",splitVariant:void 0},BFormDatepicker:{labelPrevDecade:void 0,labelPrevYear:void 0,labelPrevMonth:void 0,labelCurrentMonth:void 0,labelNextMonth:void 0,labelNextYear:void 0,labelNextDecade:void 0,labelToday:void 0,labelSelected:void 0,labelNoDateSelected:void 0,labelCalendar:void 0,labelNav:void 0,labelHelp:void 0,labelTodayButton:"Select today",labelResetButton:"Reset",labelCloseButton:"Close"},BFormFile:{browseText:"Browse",placeholder:"No file chosen",dropPlaceholder:"Drop files here"},BFormRating:{variant:null,color:null},BFormTag:{removeLabel:"Remove tag",variant:"secondary"},BFormTags:{addButtonText:"Add",addButtonVariant:"outline-secondary",duplicateTagText:"Duplicate tag(s)",invalidTagText:"Invalid tag(s)",placeholder:"Add tag...",tagRemoveLabel:"Remove tag",tagRemovedLabel:"Tag removed",tagVariant:"secondary"},BFormText:{textVariant:"muted"},BFormTimepicker:{labelNoTimeSelected:void 0,labelSelected:void 0,labelHours:void 0,labelMinutes:void 0,labelSeconds:void 0,labelAmpm:void 0,labelAm:void 0,labelPm:void 0,labelDecrement:void 0,labelIncrement:void 0,labelNowButton:"Select now",labelResetButton:"Reset",labelCloseButton:"Close"},BFormSpinbutton:{labelDecrement:"Decrement",labelIncrement:"Increment"},BImg:{blankColor:"transparent"},BImgLazy:{blankColor:"transparent"},BInputGroup:{size:void 0},BJumbotron:{bgVariant:void 0,borderVariant:void 0,textVariant:void 0},BLink:{routerComponentName:void 0},BListGroupItem:{variant:void 0},BModal:{titleTag:"h5",size:"md",headerBgVariant:void 0,headerBorderVariant:void 0,headerTextVariant:void 0,headerCloseVariant:void 0,bodyBgVariant:void 0,bodyTextVariant:void 0,footerBgVariant:void 0,footerBorderVariant:void 0,footerTextVariant:void 0,cancelTitle:"Cancel",cancelVariant:"secondary",okTitle:"OK",okVariant:"primary",headerCloseContent:"×",headerCloseLabel:"Close"},BNavbar:{variant:null},BNavbarToggle:{label:"Toggle navigation"},BPagination:{size:void 0},BPaginationNav:{size:void 0},BPopover:{boundary:"scrollParent",boundaryPadding:5,customClass:void 0,delay:50,variant:void 0},BProgress:{variant:void 0},BProgressBar:{variant:void 0},BSpinner:{variant:void 0},BSidebar:{bgVariant:"light",textVariant:"dark",shadow:!1,width:void 0,tag:"div",backdropVariant:"dark"},BTable:{selectedVariant:"active",headVariant:void 0,footVariant:void 0},BTime:{labelNoTimeSelected:"No time selected",labelSelected:"Selected time",labelHours:"Hours",labelMinutes:"Minutes",labelSeconds:"Seconds",labelAmpm:"AM/PM",labelAm:"AM",labelPm:"PM",labelIncrement:void 0,labelDecrement:void 0},BToast:{toaster:"b-toaster-top-right",autoHideDelay:5e3,variant:void 0,toastClass:void 0,headerClass:void 0,bodyClass:void 0},BToaster:{ariaLive:void 0,ariaAtomic:void 0,role:void 0},BTooltip:{boundary:"scrollParent",boundaryPadding:5,customClass:void 0,delay:50,variant:void 0}}),NAME="BvConfig",BvConfig=function(){function BvConfig(){_classCallCheck(this,BvConfig),this.$_config={},this.$_cachedBreakpoints=null}return _createClass(BvConfig,[{key:"getDefaults",value:function(){return this.defaults}},{key:"setConfig",value:function(){var _this=this,config=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};isPlainObject(config)&&getOwnPropertyNames(config).forEach((function(cmpName){if(hasOwnProperty(DEFAULTS,cmpName)){var cmpConfig=config[cmpName];if("breakpoints"===cmpName){var breakpoints=config.breakpoints;!isArray(breakpoints)||breakpoints.length<2||breakpoints.some((function(b){return!isString(b)||0===b.length}))?warn('"breakpoints" must be an array of at least 2 breakpoint names',NAME):_this.$_config.breakpoints=cloneDeep(breakpoints)}else if(isPlainObject(cmpConfig)){getOwnPropertyNames(cmpConfig).forEach((function(prop){hasOwnProperty(DEFAULTS[cmpName],prop)?(_this.$_config[cmpName]=_this.$_config[cmpName]||{},isUndefined(cmpConfig[prop])||(_this.$_config[cmpName][prop]=cloneDeep(cmpConfig[prop]))):warn('Unknown config property "'.concat(cmpName,".").concat(prop,'"'),NAME)}))}}else warn('Unknown config property "'.concat(cmpName,'"'),NAME)}))}},{key:"resetConfig",value:function(){this.$_config={}}},{key:"getConfig",value:function(){return cloneDeep(this.$_config)}},{key:"getConfigValue",value:function(key){return cloneDeep(getRaw(this.$_config,key,getRaw(DEFAULTS,key)))}},{key:"defaults",get:function(){return DEFAULTS}}],[{key:"Defaults",get:function(){return DEFAULTS}}]),BvConfig}(),setConfig=function(){var config=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},Vue$1=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Vue;Vue$1.prototype.$bvConfig=Vue.prototype.$bvConfig=Vue$1.prototype.$bvConfig||Vue.prototype.$bvConfig||new BvConfig,Vue$1.prototype.$bvConfig.setConfig(config)},checkMultipleVue=(checkMultipleVueWarned=!1,MULTIPLE_VUE_WARNING=["Multiple instances of Vue detected!","You may need to set up an alias for Vue in your bundler config.","See: https://bootstrap-vue.org/docs#using-module-bundlers"].join("\n"),function(Vue$1){checkMultipleVueWarned||Vue===Vue$1||isJSDOM||warn(MULTIPLE_VUE_WARNING),checkMultipleVueWarned=!0}),installFactory=function(){var _ref=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},components=_ref.components,directives=_ref.directives,plugins=_ref.plugins,install=function install(Vue){var config=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};install.installed||(install.installed=!0,checkMultipleVue(Vue),setConfig(config,Vue),registerComponents(Vue,components),registerDirectives(Vue,directives),registerPlugins(Vue,plugins))};return install.installed=!1,install},pluginFactory=function(){var options=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _objectSpread2(_objectSpread2({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),{},{install:installFactory(options)})},registerPlugins=function(Vue){var plugins=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var plugin in plugins)plugin&&plugins[plugin]&&Vue.use(plugins[plugin])},registerComponent=function(Vue,name,def){Vue&&name&&def&&Vue.component(name,def)},registerComponents=function(Vue){var components=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var component in components)registerComponent(Vue,component,components[component])},registerDirective=function(Vue,name,def){Vue&&name&&def&&Vue.directive(name.replace(/^VB/,"B"),def)},registerDirectives=function(Vue){var directives=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var directive in directives)registerDirective(Vue,directive,directives[directive])},memoize=function(fn){var cache=create(null);return function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];var argsKey=JSON.stringify(args);return cache[argsKey]=cache[argsKey]||fn.apply(null,args)}},VueProto=Vue.prototype,getConfigValue=function(key){return VueProto.$bvConfig?VueProto.$bvConfig.getConfigValue(key):cloneDeep(getRaw(DEFAULTS,key))},getComponentConfig=function(cmpName){var key=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return key?getConfigValue("".concat(cmpName,".").concat(key)):getConfigValue(cmpName)||{}},getBreakpoints=function(){return getConfigValue("breakpoints")},_getBreakpointsCached=memoize((function(){return getBreakpoints()})),getBreakpointsUpCached=memoize((function(){var breakpoints=cloneDeep(_getBreakpointsCached());return breakpoints[0]="",breakpoints})),toInteger=function(value){var defaultValue=arguments.length>1&&void 0!==arguments[1]?arguments[1]:NaN,integer=parseInt(value,10);return isNaN(integer)?defaultValue:integer},toFloat=function(value){var defaultValue=arguments.length>1&&void 0!==arguments[1]?arguments[1]:NaN,float=parseFloat(value);return isNaN(float)?defaultValue:float},toFixed=function(val,precision){return toFloat(val).toFixed(toInteger(precision,0))},RX_TRIM_LEFT=/^\s+/,RX_REGEXP_REPLACE=/[-/\\^$*+?.()|[\]{}]/g,RX_UN_KEBAB=/-(\w)/g,RX_HYPHENATE=/\B([A-Z])/g,kebabCase=function(str){return str.replace(RX_HYPHENATE,"-$1").toLowerCase()},pascalCase=function(str){return(str=kebabCase(str).replace(RX_UN_KEBAB,(function(_,c){return c?c.toUpperCase():""}))).charAt(0).toUpperCase()+str.slice(1)},upperFirst=function(str){return(str=isString(str)?str.trim():String(str)).charAt(0).toUpperCase()+str.slice(1)},escapeRegExp=function(str){return str.replace(RX_REGEXP_REPLACE,"\\$&")},toString$1=function(val){var spaces=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return isUndefinedOrNull(val)?"":isArray(val)||isPlainObject(val)&&val.toString===Object.prototype.toString?JSON.stringify(val,null,spaces):String(val)},trim=function(str){return toString$1(str).trim()},lowerCase=function(str){return toString$1(str).toLowerCase()},TABABLE_SELECTOR=["button","[href]:not(.disabled)","input","select","textarea","[tabindex]","[contenteditable]"].map((function(s){return"".concat(s,":not(:disabled):not([disabled])")})).join(", "),w$1=hasWindowSupport?window:{},d=hasDocumentSupport?document:{},elProto="undefined"!=typeof Element?Element.prototype:{},matchesEl=elProto.matches||elProto.msMatchesSelector||elProto.webkitMatchesSelector,closestEl=elProto.closest||function(sel){var el=this;do{if(matches(el,sel))return el;el=el.parentElement||el.parentNode}while(!isNull(el)&&el.nodeType===Node.ELEMENT_NODE);return null},requestAF=w$1.requestAnimationFrame||w$1.webkitRequestAnimationFrame||w$1.mozRequestAnimationFrame||w$1.msRequestAnimationFrame||w$1.oRequestAnimationFrame||function(cb){return setTimeout(cb,16)},MutationObs=w$1.MutationObserver||w$1.WebKitMutationObserver||w$1.MozMutationObserver||null,isElement=function(el){return!(!el||el.nodeType!==Node.ELEMENT_NODE)},getActiveElement=function(){var excludes=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],activeElement=d.activeElement;return activeElement&&!excludes.some((function(el){return el===activeElement}))?activeElement:null},isTag=function(tag,name){return toString$1(tag).toLowerCase()===toString$1(name).toLowerCase()},isActiveElement=function(el){return isElement(el)&&el===getActiveElement()},isVisible=function(el){if(!isElement(el)||!el.parentNode||!contains(d.body,el))return!1;if("none"===el.style.display)return!1;var bcr=getBCR(el);return!!(bcr&&bcr.height>0&&bcr.width>0)},isDisabled=function(el){return!isElement(el)||el.disabled||hasAttr(el,"disabled")||hasClass(el,"disabled")},reflow=function(el){return isElement(el)&&el.offsetHeight},selectAll=function(selector,root){return from((isElement(root)?root:d).querySelectorAll(selector))},select=function(selector,root){return(isElement(root)?root:d).querySelector(selector)||null},matches=function(el,selector){return!!isElement(el)&&matchesEl.call(el,selector)},closest=function(selector,root){var includeRoot=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!isElement(root))return null;var el=closestEl.call(root,selector);return includeRoot?el:el===root?null:el},contains=function(parent,child){return!(!parent||!isFunction(parent.contains))&&parent.contains(child)},getById=function(id){return d.getElementById(/^#/.test(id)?id.slice(1):id)||null},addClass=function(el,className){className&&isElement(el)&&el.classList&&el.classList.add(className)},removeClass=function(el,className){className&&isElement(el)&&el.classList&&el.classList.remove(className)},hasClass=function(el,className){return!!(className&&isElement(el)&&el.classList)&&el.classList.contains(className)},setAttr=function(el,attr,val){attr&&isElement(el)&&el.setAttribute(attr,val)},removeAttr=function(el,attr){attr&&isElement(el)&&el.removeAttribute(attr)},getAttr=function(el,attr){return attr&&isElement(el)?el.getAttribute(attr):null},hasAttr=function(el,attr){return attr&&isElement(el)?el.hasAttribute(attr):null},getBCR=function(el){return isElement(el)?el.getBoundingClientRect():null},getCS=function(el){return hasWindowSupport&&isElement(el)?w$1.getComputedStyle(el):{}},offset=function(el){var _offset={top:0,left:0};if(!isElement(el)||0===el.getClientRects().length)return _offset;var bcr=getBCR(el);if(bcr){var win=el.ownerDocument.defaultView;_offset.top=bcr.top+win.pageYOffset,_offset.left=bcr.left+win.pageXOffset}return _offset},position=function(el){var _offset={top:0,left:0};if(!isElement(el))return _offset;var parentOffset={top:0,left:0},elStyles=getCS(el);if("fixed"===elStyles.position)_offset=getBCR(el)||_offset;else{_offset=offset(el);for(var doc=el.ownerDocument,offsetParent=el.offsetParent||doc.documentElement;offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&"static"===getCS(offsetParent).position;)offsetParent=offsetParent.parentNode;if(offsetParent&&offsetParent!==el&&offsetParent.nodeType===Node.ELEMENT_NODE){parentOffset=offset(offsetParent);var offsetParentStyles=getCS(offsetParent);parentOffset.top+=toFloat(offsetParentStyles.borderTopWidth,0),parentOffset.left+=toFloat(offsetParentStyles.borderLeftWidth,0)}}return{top:_offset.top-parentOffset.top-toFloat(elStyles.marginTop,0),left:_offset.left-parentOffset.left-toFloat(elStyles.marginLeft,0)}},getTabables=function(){var rootEl=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document;return selectAll(TABABLE_SELECTOR,rootEl).filter(isVisible).filter((function(el){return el.tabIndex>-1&&!el.disabled}))},attemptFocus=function(el){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{el.focus(options)}catch(_unused){}return isActiveElement(el)},attemptBlur=function(el){try{el.blur()}catch(_unused2){}return!isActiveElement(el)},_e2=function(){return(_e2=Object.assign||function(e){for(var t,r=1,s=arguments.length;r1&&void 0!==arguments[1]?arguments[1]:{},$slots=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(names=concat(names).filter(identity)).some((function(name){return $scopedSlots[name]||$slots[name]}))},normalizeSlot=function(names){var slot,scope=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},$scopedSlots=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},$slots=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};names=concat(names).filter(identity);for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{},this.$scopedSlots,this.$slots);return vNodes?concat(vNodes):vNodes}}},NAME$1="BButtonClose",props={content:{type:String,default:function(){return getComponentConfig(NAME$1,"content")}},disabled:{type:Boolean,default:!1},ariaLabel:{type:String,default:function(){return getComponentConfig(NAME$1,"ariaLabel")}},textVariant:{type:String,default:function(){return getComponentConfig(NAME$1,"textVariant")}}},BButtonClose=Vue.extend({name:NAME$1,functional:!0,props:props,render:function(h,_ref){var props=_ref.props,data=_ref.data,slots=_ref.slots,scopedSlots=_ref.scopedSlots,$slots=slots(),$scopedSlots=scopedSlots||{},componentData={staticClass:"close",class:_defineProperty({},"text-".concat(props.textVariant),props.textVariant),attrs:{type:"button",disabled:props.disabled,"aria-label":props.ariaLabel?String(props.ariaLabel):null},on:{click:function(evt){props.disabled&&isEvent(evt)&&(evt.stopPropagation(),evt.preventDefault())}}};return hasNormalizedSlot("default",$scopedSlots,$slots)||(componentData.domProps={innerHTML:props.content}),h("button",a(data,componentData),normalizeSlot("default",{},$scopedSlots,$slots))}}),parseCountDown=function(show){return""===show||isBoolean(show)?0:(show=toInteger(show,0))>0?show:0},parseShow=function(show){return""===show||!0===show||!(toInteger(show,0)<1)&&!!show},isNumericLike=function(value){return!isNaN(toInteger(value))},AlertPlugin=pluginFactory({components:{BAlert:Vue.extend({name:"BAlert",mixins:[normalizeSlotMixin],model:{prop:"show",event:"input"},props:{variant:{type:String,default:function(){return getComponentConfig("BAlert","variant")}},dismissible:{type:Boolean,default:!1},dismissLabel:{type:String,default:function(){return getComponentConfig("BAlert","dismissLabel")}},show:{type:[Boolean,Number,String],default:!1},fade:{type:Boolean,default:!1}},data:function(){return{countDown:0,countDownTimeout:null,localShow:parseShow(this.show)}},watch:{show:function(newVal){this.countDown=parseCountDown(newVal),this.localShow=parseShow(newVal)},countDown:function(newVal){var _this=this;this.clearCountDownInterval(),isNumericLike(this.show)&&(this.$emit("dismiss-count-down",newVal),this.show!==newVal&&this.$emit("input",newVal),newVal>0?(this.localShow=!0,this.countDownTimeout=setTimeout((function(){_this.countDown--}),1e3)):this.$nextTick((function(){requestAF((function(){_this.localShow=!1}))})))},localShow:function(newVal){newVal||!this.dismissible&&!isNumericLike(this.show)||this.$emit("dismissed"),isNumericLike(this.show)||this.show===newVal||this.$emit("input",newVal)}},created:function(){this.countDown=parseCountDown(this.show),this.localShow=parseShow(this.show)},mounted:function(){this.countDown=parseCountDown(this.show),this.localShow=parseShow(this.show)},beforeDestroy:function(){this.clearCountDownInterval()},methods:{dismiss:function(){this.clearCountDownInterval(),this.countDown=0,this.localShow=!1},clearCountDownInterval:function(){this.countDownTimeout&&(clearTimeout(this.countDownTimeout),this.countDownTimeout=null)}},render:function(h){var $alert;if(this.localShow){var $dismissBtn=h();this.dismissible&&($dismissBtn=h(BButtonClose,{attrs:{"aria-label":this.dismissLabel},on:{click:this.dismiss}},[this.normalizeSlot("dismiss")])),$alert=[$alert=h("div",{key:this._uid,staticClass:"alert",class:_defineProperty({"alert-dismissible":this.dismissible},"alert-".concat(this.variant),this.variant),attrs:{role:"alert","aria-live":"polite","aria-atomic":!0}},[$dismissBtn,this.normalizeSlot("default")])]}return h(BVTransition,{props:{noFade:!this.fade}},$alert)}})}}),mathMin=Math.min,mathMax=Math.max,mathAbs=Math.abs,mathCeil=Math.ceil,mathFloor=Math.floor,mathPow=Math.pow,mathRound=Math.round,RX_ASPECT=/^\d+(\.\d*)?[/:]\d+(\.\d*)?$/,RX_SEPARATOR=/[/:]/,AspectPlugin=pluginFactory({components:{BAspect:Vue.extend({name:"BAspect",mixins:[normalizeSlotMixin],props:{aspect:{type:[Number,String],default:"1:1"},tag:{type:String,default:"div"}},computed:{padding:function(){var aspect=this.aspect,ratio=1;if(RX_ASPECT.test(aspect)){var _aspect$split$map2=_slicedToArray(aspect.split(RX_SEPARATOR).map((function(v){return toFloat(v)||1})),2);ratio=_aspect$split$map2[0]/_aspect$split$map2[1]}else ratio=toFloat(aspect)||1;return"".concat(100/mathAbs(ratio),"%")}},render:function(h){var $sizer=h("div",{staticClass:"".concat("b-aspect","-sizer flex-grow-1"),style:{paddingBottom:this.padding,height:0}}),$content=h("div",{staticClass:"".concat("b-aspect","-content flex-grow-1 w-100 mw-100"),style:{marginLeft:"-100%"}},[this.normalizeSlot("default")]);return h(this.tag,{staticClass:"".concat("b-aspect"," d-flex")},[$sizer,$content])}})}}),prefixPropName=function(prefix,value){return prefix+upperFirst(value)},unprefixPropName=function(prefix,value){return str=value.replace(prefix,""),(str=isString(str)?str.trim():String(str)).charAt(0).toLowerCase()+str.slice(1);var str},suffixPropName=function(suffix,str){return str+(suffix?upperFirst(suffix):"")},copyProps=function(props){var transformFn=arguments.length>1&&void 0!==arguments[1]?arguments[1]:identity;if(isArray(props))return props.map(transformFn);var copied={};for(var prop in props)hasOwnProperty(props,prop)&&(copied[transformFn(prop)]=isObject(props[prop])?clone(props[prop]):props[prop]);return copied},pluckProps=function(keysToPluck,objToPluck){var transformFn=arguments.length>2&&void 0!==arguments[2]?arguments[2]:identity;return(isArray(keysToPluck)?keysToPluck.slice():keys(keysToPluck)).reduce((function(memo,prop){return memo[transformFn(prop)]=objToPluck[prop],memo}),{})},commaRE=/%2C/g,encodeReserveRE=/[!'()*]/g,plusRE=/\+/g,queryStartRE=/^(\?|#|&)/,encodeReserveReplacer=function(c){return"%"+c.charCodeAt(0).toString(16)},encode=function(str){return encodeURIComponent(toString$1(str)).replace(encodeReserveRE,encodeReserveReplacer).replace(commaRE,",")},decode=decodeURIComponent,parseQuery=function(query){var parsed={};return(query=toString$1(query).trim().replace(queryStartRE,""))?(query.split("&").forEach((function(param){var parts=param.replace(plusRE," ").split("="),key=decode(parts.shift()),val=parts.length>0?decode(parts.join("=")):null;isUndefined(parsed[key])?parsed[key]=val:isArray(parsed[key])?parsed[key].push(val):parsed[key]=[parsed[key],val]})),parsed):parsed},isLink=function(props){return!(!props.href&&!props.to)},isRouterLink=function(tag){return!isTag(tag,"a")},computeHref=function(){var _ref3=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},href=_ref3.href,to=_ref3.to,fallback=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#",toFallback=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"/";if(isRouterLink(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"a"))return null;if(href)return href;if(to){if(isString(to))return to||toFallback;if(isPlainObject(to)&&(to.path||to.query||to.hash)){var path=toString$1(to.path),query=function(obj){if(!isPlainObject(obj))return"";var query=keys(obj).map((function(key){var val=obj[key];return isUndefined(val)?"":isNull(val)?encode(key):isArray(val)?val.reduce((function(results,val2){return isNull(val2)?results.push(encode(key)):isUndefined(val2)||results.push(encode(key)+"="+encode(val2)),results}),[]).join("&"):encode(key)+"="+encode(val)})).filter((function(x){return x.length>0})).join("&");return query?"?".concat(query):""}(to.query),hash=toString$1(to.hash);return hash=hash&&"#"!==hash.charAt(0)?"#".concat(hash):hash,"".concat(path).concat(query).concat(hash)||toFallback}}return fallback},KEY_CODES=freeze({SPACE:32,ENTER:13,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,PAGEUP:33,PAGEDOWN:34,HOME:36,END:35,TAB:9,SHIFT:16,CTRL:17,BACKSPACE:8,ALT:18,PAUSE:19,BREAK:19,INSERT:45,INS:45,DELETE:46}),makePropWatcher=function(propName){return{handler:function(newVal,oldVal){for(var key in oldVal)hasOwnProperty(newVal,key)||this.$delete(this.$data[propName],key);for(var _key in newVal)this.$set(this.$data[propName],_key,newVal[_key])}}},makePropCacheMixin=function(propName,proxyPropName){return{data:function(){return _defineProperty({},proxyPropName,{})},watch:_defineProperty({},propName,makePropWatcher(proxyPropName)),created:function(){this[proxyPropName]=_objectSpread2({},this[propName])}}},attrsMixin=makePropCacheMixin("$attrs","bvAttrs"),listenersMixin=makePropCacheMixin("$listeners","bvListeners"),routerLinkProps={to:{type:[String,Object],default:null},append:{type:Boolean,default:!1},replace:{type:Boolean,default:!1},event:{type:[String,Array],default:"click"},activeClass:{type:String},exact:{type:Boolean,default:!1},exactActiveClass:{type:String},routerTag:{type:String,default:"a"}},nuxtLinkProps={prefetch:{type:Boolean,default:null},noPrefetch:{type:Boolean,default:!1}},props$1=_objectSpread2(_objectSpread2(_objectSpread2({href:{type:String,default:null},rel:{type:String,default:null},target:{type:String,default:"_self"},active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},routerLinkProps),nuxtLinkProps),{},{routerComponentName:{type:String,default:function(){return getComponentConfig("BLink","routerComponentName")}}}),BLink=Vue.extend({name:"BLink",mixins:[attrsMixin,listenersMixin,normalizeSlotMixin],inheritAttrs:!1,props:props$1,computed:{computedTag:function(){return function(){var _ref=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},to=_ref.to,disabled=_ref.disabled,routerComponentName=_ref.routerComponentName,thisOrParent=arguments.length>1?arguments[1]:void 0,hasRouter=thisOrParent.$router;return!hasRouter||hasRouter&&disabled||hasRouter&&!to?"a":routerComponentName||(thisOrParent.$nuxt?"nuxt-link":"router-link")}({to:this.to,disabled:this.disabled,routerComponentName:this.routerComponentName},this)},isRouterLink:function(){return isRouterLink(this.computedTag)},computedRel:function(){return function(){var _ref2=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},target=_ref2.target,rel=_ref2.rel;return"_blank"===target&&isNull(rel)?"noopener":rel||null}({target:this.target,rel:this.rel})},computedHref:function(){return computeHref({to:this.to,href:this.href},this.computedTag)},computedProps:function(){var prefetch=this.prefetch;return this.isRouterLink?_objectSpread2(_objectSpread2({},pluckProps(_objectSpread2(_objectSpread2({},routerLinkProps),nuxtLinkProps),this)),{},{prefetch:isBoolean(prefetch)?prefetch:void 0,tag:this.routerTag}):{}},computedAttrs:function(){var bvAttrs=this.bvAttrs,href=this.computedHref,rel=this.computedRel,disabled=this.disabled,target=this.target,routerTag=this.routerTag,isRouterLink=this.isRouterLink;return _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({},bvAttrs),href?{href:href}:{}),isRouterLink&&"a"!==routerTag&&"area"!==routerTag?{}:{rel:rel,target:target}),{},{tabindex:disabled?"-1":isUndefined(bvAttrs.tabindex)?null:bvAttrs.tabindex,"aria-disabled":disabled?"true":null})},computedListeners:function(){return _objectSpread2(_objectSpread2({},this.bvListeners),{},{click:this.onClick})}},methods:{onClick:function(evt){var _arguments=arguments,evtIsEvent=isEvent(evt),isRouterLink=this.isRouterLink,suppliedHandler=this.bvListeners.click;evtIsEvent&&this.disabled?(evt.stopPropagation(),evt.stopImmediatePropagation()):(isRouterLink&&evt.currentTarget.__vue__&&evt.currentTarget.__vue__.$emit("click",evt),concat(suppliedHandler).filter((function(h){return isFunction(h)})).forEach((function(handler){handler.apply(void 0,_toConsumableArray(_arguments))})),this.$root.$emit("clicked::link",evt)),evtIsEvent&&(this.disabled||!isRouterLink&&"#"===this.computedHref)&&evt.preventDefault()},focus:function(){attemptFocus(this.$el)},blur:function(){attemptBlur(this.$el)}},render:function(h){var active=this.active,disabled=this.disabled;return h(this.computedTag,_defineProperty({class:{active:active,disabled:disabled},attrs:this.computedAttrs,props:this.computedProps},this.isRouterLink?"nativeOn":"on",this.computedListeners),this.normalizeSlot("default"))}}),linkProps=omit(props$1,["event","routerTag"]);delete linkProps.href.default,delete linkProps.to.default;var props$2=_objectSpread2(_objectSpread2({},{block:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},size:{type:String,default:function(){return getComponentConfig("BButton","size")}},variant:{type:String,default:function(){return getComponentConfig("BButton","variant")}},type:{type:String,default:"button"},tag:{type:String,default:"button"},pill:{type:Boolean,default:!1},squared:{type:Boolean,default:!1},pressed:{type:Boolean,default:null}}),linkProps),handleFocus=function(evt){"focusin"===evt.type?addClass(evt.target,"focus"):"focusout"===evt.type&&removeClass(evt.target,"focus")},isLink$1=function(props){return isLink(props)||isTag(props.tag,"a")},isToggle=function(props){return isBoolean(props.pressed)},isButton=function(props){return!(isLink$1(props)||props.tag&&!isTag(props.tag,"button"))},isNonStandardTag=function(props){return!isLink$1(props)&&!isButton(props)},computeClass=function(props){var _ref;return["btn-".concat(props.variant||getComponentConfig("BButton","variant")),(_ref={},_defineProperty(_ref,"btn-".concat(props.size),props.size),_defineProperty(_ref,"btn-block",props.block),_defineProperty(_ref,"rounded-pill",props.pill),_defineProperty(_ref,"rounded-0",props.squared&&!props.pill),_defineProperty(_ref,"disabled",props.disabled),_defineProperty(_ref,"active",props.pressed),_ref)]},computeLinkProps=function(props){return isLink$1(props)?pluckProps(linkProps,props):{}},computeAttrs=function(props,data){var button=isButton(props),link=isLink$1(props),toggle=isToggle(props),nonStandardTag=isNonStandardTag(props),hashLink=link&&"#"===props.href,role=data.attrs&&data.attrs.role?data.attrs.role:null,tabindex=data.attrs?data.attrs.tabindex:null;return(nonStandardTag||hashLink)&&(tabindex="0"),{type:button&&!link?props.type:null,disabled:button?props.disabled:null,role:nonStandardTag||hashLink?"button":role,"aria-disabled":nonStandardTag?String(props.disabled):null,"aria-pressed":toggle?String(props.pressed):null,autocomplete:toggle?"off":null,tabindex:props.disabled&&!button?"-1":tabindex}},BButton=Vue.extend({name:"BButton",functional:!0,props:props$2,render:function(h,_ref2){var props=_ref2.props,data=_ref2.data,listeners=_ref2.listeners,children=_ref2.children,toggle=isToggle(props),link=isLink$1(props),nonStandardTag=isNonStandardTag(props),hashLink=link&&"#"===props.href,on={keydown:function(evt){if(!props.disabled&&(nonStandardTag||hashLink)){var keyCode=evt.keyCode;if(keyCode===KEY_CODES.SPACE||keyCode===KEY_CODES.ENTER&&nonStandardTag){var target=evt.currentTarget||evt.target;evt.preventDefault(),target.click()}}},click:function(evt){props.disabled&&isEvent(evt)?(evt.stopPropagation(),evt.preventDefault()):toggle&&listeners&&listeners["update:pressed"]&&concat(listeners["update:pressed"]).forEach((function(fn){isFunction(fn)&&fn(!props.pressed)}))}};toggle&&(on.focusin=handleFocus,on.focusout=handleFocus);var componentData={staticClass:"btn",class:computeClass(props),props:computeLinkProps(props),attrs:computeAttrs(props,data),on:on};return h(link?BLink:props.tag,a(data,componentData),children)}}),commonIconProps={variant:{type:String,default:null},fontScale:{type:[Number,String],default:1},scale:{type:[Number,String],default:1},rotate:{type:[Number,String],default:0},flipH:{type:Boolean,default:!1},flipV:{type:Boolean,default:!1},shiftH:{type:[Number,String],default:0},shiftV:{type:[Number,String],default:0},animation:{type:String,default:null}},baseAttrs={viewBox:"0 0 16 16",width:"1em",height:"1em",focusable:"false",role:"img","aria-label":"icon"},stackedAttrs={width:null,height:null,focusable:null,role:null,"aria-label":null},BVIconBase=Vue.extend({name:"BVIconBase",functional:!0,props:_objectSpread2({content:{type:String},stacked:{type:Boolean,default:!1}},commonIconProps),render:function(h,_ref){var _class,data=_ref.data,props=_ref.props,children=_ref.children,fontScale=mathMax(toFloat(props.fontScale,1),0)||1,scale=mathMax(toFloat(props.scale,1),0)||1,rotate=toFloat(props.rotate,0),shiftH=toFloat(props.shiftH,0),shiftV=toFloat(props.shiftV,0),flipH=props.flipH,flipV=props.flipV,animation=props.animation,hasScale=flipH||flipV||1!==scale,hasTransforms=hasScale||rotate,hasShift=shiftH||shiftV,transforms=[hasTransforms?"translate(8 8)":null,hasScale?"scale(".concat((flipH?-1:1)*scale," ").concat((flipV?-1:1)*scale,")"):null,rotate?"rotate(".concat(rotate,")"):null,hasTransforms?"translate(-8 -8)":null].filter(identity),isStacked=props.stacked,hasContent=!isUndefinedOrNull(props.content),$inner=h("g",{attrs:{transform:transforms.join(" ")||null},domProps:hasContent?{innerHTML:props.content||""}:{}},children);return hasShift&&($inner=h("g",{attrs:{transform:"translate(".concat(16*shiftH/16," ").concat(-16*shiftV/16,")")}},[$inner])),isStacked&&($inner=h("g",{},[$inner])),h("svg",a({staticClass:"b-icon bi",class:(_class={},_defineProperty(_class,"text-".concat(props.variant),!!props.variant),_defineProperty(_class,"b-icon-animation-".concat(animation),!!animation),_class),attrs:baseAttrs,style:isStacked?{}:{fontSize:1===fontScale?null:"".concat(100*fontScale,"%")}},data,isStacked?{attrs:stackedAttrs}:{},{attrs:{xmlns:isStacked?null:"http://www.w3.org/2000/svg",fill:"currentColor"}}),[$inner])}}),makeIcon=function(name,content){var kebabName=kebabCase(name),iconName="BIcon".concat(pascalCase(name)),iconNameClass="bi-".concat(kebabName),svgContent=trim(content||"");return Vue.extend({name:iconName,functional:!0,props:_objectSpread2(_objectSpread2({},commonIconProps),{},{stacked:{type:Boolean,default:!1}}),render:function(h,_ref){var data=_ref.data,props=_ref.props;return h(BVIconBase,a(data,{staticClass:iconNameClass,props:_objectSpread2(_objectSpread2({},props),{},{content:svgContent}),attrs:{"aria-label":kebabName.replace(/-/g," ")}}))}})},BIconBlank=makeIcon("Blank",""),BIconCalendar=makeIcon("Calendar",''),BIconCalendarFill=makeIcon("CalendarFill",''),BIconChevronBarLeft=makeIcon("ChevronBarLeft",''),BIconChevronDoubleLeft=makeIcon("ChevronDoubleLeft",''),BIconChevronDown=makeIcon("ChevronDown",''),BIconChevronLeft=makeIcon("ChevronLeft",''),BIconChevronUp=makeIcon("ChevronUp",''),BIconCircleFill=makeIcon("CircleFill",''),BIconClock=makeIcon("Clock",''),BIconClockFill=makeIcon("ClockFill",''),BIconDash=makeIcon("Dash",''),BIconPersonFill=makeIcon("PersonFill",''),BIconPlus=makeIcon("Plus",''),BIconStar=makeIcon("Star",''),BIconStarFill=makeIcon("StarFill",''),BIconStarHalf=makeIcon("StarHalf",''),BIconX=makeIcon("X",''),RX_ICON_PREFIX=/^BIcon/,BIcon=Vue.extend({name:"BIcon",functional:!0,props:_objectSpread2(_objectSpread2({icon:{type:String,default:null}},commonIconProps),{},{stacked:{type:Boolean,default:!1}}),render:function(h,_ref){var data=_ref.data,props=_ref.props,parent=_ref.parent,icon=pascalCase(trim(props.icon||"")).replace(RX_ICON_PREFIX,""),iconName="BIcon".concat(icon),components=((parent||{}).$options||{}).components;return h(icon&&components?components[iconName]||BIconBlank:icon?iconName:BIconBlank,a(data,{props:_objectSpread2(_objectSpread2({},props),{},{icon:null})}))}}),RX_NUMBER=/^[0-9]*\.?[0-9]+$/,DEFAULT_SIZES={sm:"1.5em",md:"2.5em",lg:"3.5em"},linkProps$1=omit(props$1,["active","event","routerTag"]),props$3=_objectSpread2(_objectSpread2({src:{type:String},text:{type:String},icon:{type:String},alt:{type:String,default:"avatar"},variant:{type:String,default:function(){return getComponentConfig("BAvatar","variant")}},size:{type:[Number,String],default:null},square:{type:Boolean,default:!1},rounded:{type:[Boolean,String],default:!1},button:{type:Boolean,default:!1},buttonType:{type:String,default:"button"},badge:{type:[Boolean,String],default:!1},badgeVariant:{type:String,default:function(){return getComponentConfig("BAvatar","badgeVariant")}},badgeTop:{type:Boolean,default:!1},badgeLeft:{type:Boolean,default:!1},badgeOffset:{type:String,default:"0px"}},linkProps$1),{},{ariaLabel:{type:String}}),computeSize=function(value){return value=isUndefinedOrNull(value)||""===value?"md":isString(value)&&RX_NUMBER.test(value)?toFloat(value,0):value,isNumber(value)?"".concat(value,"px"):DEFAULT_SIZES[value]||value},BAvatar=Vue.extend({name:"BAvatar",mixins:[normalizeSlotMixin],inject:{bvAvatarGroup:{default:null}},props:props$3,data:function(){return{localSrc:this.src||null}},computed:{computedSize:function(){return computeSize(this.bvAvatarGroup?this.bvAvatarGroup.size:this.size)},computedVariant:function(){var avatarGroup=this.bvAvatarGroup;return avatarGroup&&avatarGroup.variant?avatarGroup.variant:this.variant},computedRounded:function(){var avatarGroup=this.bvAvatarGroup,square=!(!avatarGroup||!avatarGroup.square)||this.square,rounded=avatarGroup&&avatarGroup.rounded?avatarGroup.rounded:this.rounded;return square?"0":""===rounded||(rounded||"circle")},fontStyle:function(){var fontSize=this.computedSize;return(fontSize=fontSize?"calc(".concat(fontSize," * ").concat(.4,")"):null)?{fontSize:fontSize}:{}},marginStyle:function(){var avatarGroup=this.bvAvatarGroup,overlapScale=avatarGroup?avatarGroup.overlapScale:0,size=this.computedSize,value=size&&overlapScale?"calc(".concat(size," * -").concat(overlapScale,")"):null;return value?{marginLeft:value,marginRight:value}:{}},badgeStyle:function(){var size=this.computedSize,badgeTop=this.badgeTop,badgeLeft=this.badgeLeft,offset=this.badgeOffset||"0px";return{fontSize:size?"calc(".concat(size," * ").concat(.27999999999999997," )"):null,top:badgeTop?offset:null,bottom:badgeTop?null:offset,left:badgeLeft?offset:null,right:badgeLeft?null:offset}}},watch:{src:function(newSrc,oldSrc){newSrc!==oldSrc&&(this.localSrc=newSrc||null)}},methods:{onImgError:function(evt){this.localSrc=null,this.$emit("img-error",evt)},onClick:function(evt){this.$emit("click",evt)}},render:function(h){var _class2,variant=this.computedVariant,disabled=this.disabled,rounded=this.computedRounded,icon=this.icon,src=this.localSrc,text=this.text,fontStyle=this.fontStyle,marginStyle=this.marginStyle,size=this.computedSize,button=this.button,type=this.buttonType,badge=this.badge,badgeVariant=this.badgeVariant,badgeStyle=this.badgeStyle,link=!button&&isLink(this),tag=button?BButton:link?BLink:"span",alt=this.alt,ariaLabel=this.ariaLabel||null,$content=null;this.hasNormalizedSlot("default")?$content=h("span",{staticClass:"b-avatar-custom"},[this.normalizeSlot("default")]):src?($content=h("img",{style:variant?{}:{width:"100%",height:"100%"},attrs:{src:src,alt:alt},on:{error:this.onImgError}}),$content=h("span",{staticClass:"b-avatar-img"},[$content])):$content=icon?h(BIcon,{props:{icon:icon},attrs:{"aria-hidden":"true",alt:alt}}):text?h("span",{staticClass:"b-avatar-text",style:fontStyle},[h("span",text)]):h(BIconPersonFill,{attrs:{"aria-hidden":"true",alt:alt}});var $badge=h(),hasBadgeSlot=this.hasNormalizedSlot("badge");if(badge||""===badge||hasBadgeSlot){var badgeText=!0===badge?"":badge;$badge=h("span",{staticClass:"b-avatar-badge",class:_defineProperty({},"badge-".concat(badgeVariant),!!badgeVariant),style:badgeStyle},[hasBadgeSlot?this.normalizeSlot("badge"):badgeText])}return h(tag,{staticClass:"b-avatar",class:(_class2={},_defineProperty(_class2,"badge-".concat(variant),!button&&variant),_defineProperty(_class2,"rounded",!0===rounded),_defineProperty(_class2,"rounded-".concat(rounded),rounded&&!0!==rounded),_defineProperty(_class2,"disabled",disabled),_class2),style:_objectSpread2({width:size,height:size},marginStyle),attrs:{"aria-label":ariaLabel||null},props:button?{variant:variant,disabled:disabled,type:type}:link?pluckProps(linkProps$1,this):{},on:button||link?{click:this.onClick}:{}},[$content,$badge])}}),AvatarPlugin=pluginFactory({components:{BAvatar:BAvatar,BAvatarGroup:Vue.extend({name:"BAvatarGroup",mixins:[normalizeSlotMixin],provide:function(){return{bvAvatarGroup:this}},props:{variant:{type:String,default:null},size:{type:String,default:null},overlap:{type:[Number,String],default:.3},square:{type:Boolean,default:!1},rounded:{type:[Boolean,String],default:!1},tag:{type:String,default:"div"}},computed:{computedSize:function(){return computeSize(this.size)},overlapScale:function(){return mathMin(mathMax(toFloat(this.overlap,0),0),1)/2},paddingStyle:function(){var value=this.computedSize;return(value=value?"calc(".concat(value," * ").concat(this.overlapScale,")"):null)?{paddingLeft:value,paddingRight:value}:{}}},render:function(h){var $inner=h("div",{staticClass:"b-avatar-group-inner",style:this.paddingStyle},[this.normalizeSlot("default")]);return h(this.tag,{staticClass:"b-avatar-group",attrs:{role:"group"}},[$inner])}})}}),linkProps$2=omit(props$1,["event","routerTag"]);delete linkProps$2.href.default,delete linkProps$2.to.default;var props$4=_objectSpread2({tag:{type:String,default:"span"},variant:{type:String,default:function(){return getComponentConfig("BBadge","variant")}},pill:{type:Boolean,default:!1}},linkProps$2),BBadge=Vue.extend({name:"BBadge",functional:!0,props:props$4,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children,link=isLink(props);return h(link?BLink:props.tag,a(data,{staticClass:"badge",class:[props.variant?"badge-".concat(props.variant):"badge-secondary",{"badge-pill":props.pill,active:props.active,disabled:props.disabled}],props:link?pluckProps(linkProps$2,props):{}}),children)}}),BadgePlugin=pluginFactory({components:{BBadge:BBadge}}),RX_HTML_TAGS=/(<([^>]+)>)/gi,stripTags=function(){return String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(RX_HTML_TAGS,"")},htmlOrText=function(innerHTML,textContent){return innerHTML?{innerHTML:innerHTML}:textContent?{textContent:textContent}:{}},props$5=_objectSpread2({text:{type:String,default:null},html:{type:String,default:null},ariaCurrent:{type:String,default:"location"}},omit(props$1,["event","routerTag"])),BBreadcrumbLink=Vue.extend({name:"BBreadcrumbLink",functional:!0,props:props$5,render:function(h,_ref){var suppliedProps=_ref.props,data=_ref.data,children=_ref.children,active=suppliedProps.active,tag=active?"span":BLink,componentData={attrs:{"aria-current":active?suppliedProps.ariaCurrent:null},props:pluckProps(props$5,suppliedProps)};return children||(componentData.domProps=htmlOrText(suppliedProps.html,suppliedProps.text)),h(tag,a(data,componentData),children)}}),BBreadcrumbItem=Vue.extend({name:"BBreadcrumbItem",functional:!0,props:props$5,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h("li",a(data,{staticClass:"breadcrumb-item",class:{active:props.active}}),[h(BBreadcrumbLink,{props:props},children)])}}),props$6={items:{type:Array,default:null}},BBreadcrumb=Vue.extend({name:"BBreadcrumb",functional:!0,props:props$6,render:function(h,_ref){var props=_ref.props,data=_ref.data,childNodes=_ref.children;if(isArray(props.items)){var activeDefined=!1;childNodes=props.items.map((function(item,idx){isObject(item)||(item={text:toString$1(item)});var active=item.active;return active&&(activeDefined=!0),active||activeDefined||(active=idx+1===props.items.length),h(BBreadcrumbItem,{props:_objectSpread2(_objectSpread2({},item),{},{active:active})})}))}return h("ol",a(data,{staticClass:"breadcrumb"}),childNodes)}}),BreadcrumbPlugin=pluginFactory({components:{BBreadcrumb:BBreadcrumb,BBreadcrumbItem:BBreadcrumbItem,BBreadcrumbLink:BBreadcrumbLink}}),ButtonPlugin=pluginFactory({components:{BButton:BButton,BBtn:BButton,BButtonClose:BButtonClose,BBtnClose:BButtonClose}}),props$7={vertical:{type:Boolean,default:!1},size:{type:String,default:function(){return getComponentConfig("BButton","size")}},tag:{type:String,default:"div"},ariaRole:{type:String,default:"group"}},BButtonGroup=Vue.extend({name:"BButtonGroup",functional:!0,props:props$7,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{class:_defineProperty({"btn-group":!props.vertical,"btn-group-vertical":props.vertical},"btn-group-".concat(props.size),props.size),attrs:{role:props.ariaRole}}),children)}}),ButtonGroupPlugin=pluginFactory({components:{BButtonGroup:BButtonGroup,BBtnGroup:BButtonGroup}}),ITEM_SELECTOR=[".btn:not(.disabled):not([disabled]):not(.dropdown-item)",".form-control:not(.disabled):not([disabled])","select:not(.disabled):not([disabled])",'input[type="checkbox"]:not(.disabled)','input[type="radio"]:not(.disabled)'].join(","),BButtonToolbar=Vue.extend({name:"BButtonToolbar",mixins:[normalizeSlotMixin],props:{justify:{type:Boolean,default:!1},keyNav:{type:Boolean,default:!1}},mounted:function(){this.keyNav&&this.getItems()},methods:{onFocusin:function(evt){evt.target===this.$el&&(evt.preventDefault(),evt.stopPropagation(),this.focusFirst(evt))},stop:function(evt){evt.preventDefault(),evt.stopPropagation()},onKeydown:function(evt){if(this.keyNav){var key=evt.keyCode,shift=evt.shiftKey;key===KEY_CODES.UP||key===KEY_CODES.LEFT?(this.stop(evt),shift?this.focusFirst(evt):this.focusPrev(evt)):key!==KEY_CODES.DOWN&&key!==KEY_CODES.RIGHT||(this.stop(evt),shift?this.focusLast(evt):this.focusNext(evt))}},focusFirst:function(){var items=this.getItems();attemptFocus(items[0])},focusPrev:function(evt){var items=this.getItems(),index=items.indexOf(evt.target);index>-1&&(items=items.slice(0,index).reverse(),attemptFocus(items[0]))},focusNext:function(evt){var items=this.getItems(),index=items.indexOf(evt.target);index>-1&&(items=items.slice(index+1),attemptFocus(items[0]))},focusLast:function(){var items=this.getItems().reverse();attemptFocus(items[0])},getItems:function(){var items=selectAll(ITEM_SELECTOR,this.$el);return items.forEach((function(item){item.tabIndex=-1})),items.filter((function(el){return isVisible(el)}))}},render:function(h){return h("div",{staticClass:"btn-toolbar",class:{"justify-content-between":this.justify},attrs:{role:"toolbar",tabindex:this.keyNav?"0":null},on:this.keyNav?{focusin:this.onFocusin,keydown:this.onKeydown}:{}},[this.normalizeSlot("default")])}}),ButtonToolbarPlugin=pluginFactory({components:{BButtonToolbar:BButtonToolbar,BBtnToolbar:BButtonToolbar}}),compareArrays=function(a,b){if(a.length!==b.length)return!1;for(var equal=!0,i=0;equal&&i1&&void 0!==arguments[1]?arguments[1]:null,max=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return date=parseYMD(date),min=parseYMD(min)||date,max=parseYMD(max)||date,date?datemax?max:date:null},RTL_LANGS=["ar","az","ckb","fa","he","ks","lrc","mzn","ps","sd","te","ug","ur","yi"].map((function(locale){return locale.toLowerCase()})),RX_STRIP_MODS=/-u-.+/,isLocaleRTL=function(locale){var parts=toString$1(locale).toLowerCase().replace(RX_STRIP_MODS,"").split("-"),locale1=parts.slice(0,2).join("-"),locale2=parts[0];return arrayIncludes(RTL_LANGS,locale1)||arrayIncludes(RTL_LANGS,locale2)},idMixin={props:{id:{type:String}},data:function(){return{localId_:null}},computed:{safeId:function(){var id=this.id||this.localId_;return function(suffix){return id?(suffix=String(suffix||"").replace(/\s+/g,"_"))?id+"_"+suffix:id:null}}},mounted:function(){var _this=this;this.$nextTick((function(){_this.localId_="__BVID__".concat(_this._uid)}))}},NAME$a="BCalendar",UP=KEY_CODES.UP,DOWN=KEY_CODES.DOWN,LEFT=KEY_CODES.LEFT,RIGHT=KEY_CODES.RIGHT,PAGEUP=KEY_CODES.PAGEUP,PAGEDOWN=KEY_CODES.PAGEDOWN,HOME=KEY_CODES.HOME,END=KEY_CODES.END,ENTER=KEY_CODES.ENTER,SPACE=KEY_CODES.SPACE,BCalendar=Vue.extend({name:NAME$a,mixins:[attrsMixin,idMixin,normalizeSlotMixin],model:{prop:"value",event:"input"},props:{value:{type:[String,Date]},valueAsDate:{type:Boolean,default:!1},initialDate:{type:[String,Date]},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},min:{type:[String,Date]},max:{type:[String,Date]},dateDisabledFn:{type:Function},startWeekday:{type:[Number,String],default:0},locale:{type:[String,Array]},direction:{type:String},selectedVariant:{type:String,default:"primary"},todayVariant:{type:String},noHighlightToday:{type:Boolean,default:!1},dateInfoFn:{type:Function},width:{type:String,default:"270px"},block:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},showDecadeNav:{type:Boolean,default:!1},hidden:{type:Boolean,default:!1},ariaControls:{type:String},roleDescription:{type:String},labelPrevDecade:{type:String,default:function(){return getComponentConfig(NAME$a,"labelPrevDecade")}},labelPrevYear:{type:String,default:function(){return getComponentConfig(NAME$a,"labelPrevYear")}},labelPrevMonth:{type:String,default:function(){return getComponentConfig(NAME$a,"labelPrevMonth")}},labelCurrentMonth:{type:String,default:function(){return getComponentConfig(NAME$a,"labelCurrentMonth")}},labelNextMonth:{type:String,default:function(){return getComponentConfig(NAME$a,"labelNextMonth")}},labelNextYear:{type:String,default:function(){return getComponentConfig(NAME$a,"labelNextYear")}},labelNextDecade:{type:String,default:function(){return getComponentConfig(NAME$a,"labelNextDecade")}},labelToday:{type:String,default:function(){return getComponentConfig(NAME$a,"labelToday")}},labelSelected:{type:String,default:function(){return getComponentConfig(NAME$a,"labelSelected")}},labelNoDateSelected:{type:String,default:function(){return getComponentConfig(NAME$a,"labelNoDateSelected")}},labelCalendar:{type:String,default:function(){return getComponentConfig(NAME$a,"labelCalendar")}},labelNav:{type:String,default:function(){return getComponentConfig(NAME$a,"labelNav")}},labelHelp:{type:String,default:function(){return getComponentConfig(NAME$a,"labelHelp")}},dateFormatOptions:{type:Object,default:function(){return{year:"numeric",month:"long",day:"numeric",weekday:"long"}}},weekdayHeaderFormat:{type:String,default:"short",validator:function(value){return arrayIncludes(["long","short","narrow"],value)}}},data:function(){var selected=formatYMD(this.value)||"";return{selectedYMD:selected,activeYMD:selected||formatYMD(constrainDate(this.initialDate||this.getToday()),this.min,this.max),gridHasFocus:!1,isLive:!1}},computed:{valueId:function(){return this.safeId()},widgetId:function(){return this.safeId("_calendar-wrapper_")},navId:function(){return this.safeId("_calendar-nav_")},gridId:function(){return this.safeId("_calendar-grid_")},gridCaptionId:function(){return this.safeId("_calendar-grid-caption_")},gridHelpId:function(){return this.safeId("_calendar-grid-help_")},activeId:function(){return this.activeYMD?this.safeId("_cell-".concat(this.activeYMD,"_")):null},selectedDate:function(){return parseYMD(this.selectedYMD)},activeDate:function(){return parseYMD(this.activeYMD)},computedMin:function(){return parseYMD(this.min)},computedMax:function(){return parseYMD(this.max)},computedWeekStarts:function(){return mathMax(toInteger(this.startWeekday,0),0)%7},computedLocale:function(){return function(locales){var calendar=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"gregory";return locales=concat(locales).filter(identity),new Intl.DateTimeFormat(locales,{calendar:calendar}).resolvedOptions().locale}(concat(this.locale).filter(identity),"gregory")},calendarLocale:function(){var fmt=new Intl.DateTimeFormat(this.computedLocale,{calendar:"gregory"}),calendar=fmt.resolvedOptions().calendar,locale=fmt.resolvedOptions().locale;return"gregory"!==calendar&&(locale=locale.replace(/-u-.+$/i,"").concat("-u-ca-gregory")),locale},calendarYear:function(){return this.activeDate.getFullYear()},calendarMonth:function(){return this.activeDate.getMonth()},calendarFirstDay:function(){return createDate(this.calendarYear,this.calendarMonth,1)},calendarDaysInMonth:function(){var date=createDate(this.calendarFirstDay);return date.setMonth(date.getMonth()+1,0),date.getDate()},computedVariant:function(){return"btn-".concat(this.selectedVariant||"primary")},computedTodayVariant:function(){return"btn-outline-".concat(this.todayVariant||this.selectedVariant||"primary")},isRTL:function(){var dir=toString$1(this.direction).toLowerCase();return"rtl"===dir||"ltr"!==dir&&isLocaleRTL(this.computedLocale)},context:function(){var selectedYMD=this.selectedYMD,selectedDate=parseYMD(selectedYMD),activeYMD=this.activeYMD,activeDate=parseYMD(activeYMD);return{selectedYMD:selectedYMD,selectedDate:selectedDate,selectedFormatted:selectedDate?this.formatDateString(selectedDate):this.labelNoDateSelected,activeYMD:activeYMD,activeDate:activeDate,activeFormatted:activeDate?this.formatDateString(activeDate):"",disabled:this.dateDisabled(activeDate),locale:this.computedLocale,calendarLocale:this.calendarLocale,rtl:this.isRTL}},dateOutOfRange:function(){var min=this.computedMin,max=this.computedMax;return function(date){return date=parseYMD(date),min&&datemax}},dateDisabled:function(){var rangeFn=this.dateOutOfRange,disabledFn=isFunction(this.dateDisabledFn)?this.dateDisabledFn:function(){return!1};return function(date){date=parseYMD(date);var ymd=formatYMD(date);return!(!rangeFn(date)&&!disabledFn(ymd,date))}},formatDateString:function(){return createDateFormatter(this.calendarLocale,_objectSpread2(_objectSpread2({year:"numeric",month:"2-digit",day:"2-digit"},this.dateFormatOptions),{},{hour:void 0,minute:void 0,second:void 0,calendar:"gregory"}))},formatYearMonth:function(){return createDateFormatter(this.calendarLocale,{year:"numeric",month:"long",calendar:"gregory"})},formatWeekdayName:function(){return createDateFormatter(this.calendarLocale,{weekday:"long",calendar:"gregory"})},formatWeekdayNameShort:function(){return createDateFormatter(this.calendarLocale,{weekday:this.weekdayHeaderFormat||"short",calendar:"gregory"})},formatDay:function(){var nf=new Intl.NumberFormat([this.computedLocale],{style:"decimal",minimumIntegerDigits:1,minimumFractionDigits:0,maximumFractionDigits:0,notation:"standard"});return function(date){return nf.format(date.getDate())}},prevDecadeDisabled:function(){var min=this.computedMin;return this.disabled||min&&lastDateOfMonth(oneDecadeAgo(this.activeDate))max},nextYearDisabled:function(){var max=this.computedMax;return this.disabled||max&&firstDateOfMonth(oneYearAhead(this.activeDate))>max},nextDecadeDisabled:function(){var max=this.computedMax;return this.disabled||max&&firstDateOfMonth(oneDecadeAhead(this.activeDate))>max},calendar:function(){for(var matrix=[],firstDay=this.calendarFirstDay,calendarYear=firstDay.getFullYear(),calendarMonth=firstDay.getMonth(),daysInMonth=this.calendarDaysInMonth,startIndex=firstDay.getDay(),weekOffset=(this.computedWeekStarts>startIndex?7:0)-this.computedWeekStarts,dateInfoFn=isFunction(this.dateInfoFn)?this.dateInfoFn:function(){return{}},currentDay=0-weekOffset-startIndex,week=0;week<6&¤tDay0);isIntersecting!==this.visible&&(this.visible=isIntersecting,this.callback(isIntersecting),this.once&&this.visible&&(this.doneOnce=!0,this.stop()))}},{key:"stop",value:function(){this.observer&&this.observer.disconnect(),this.observer=null}}]),VisibilityObserver}(),destroy=function(el){var observer=el[OBSERVER_PROP_NAME];observer&&observer.stop&&observer.stop(),delete el[OBSERVER_PROP_NAME]},bind=function(el,_ref,vnode){var value=_ref.value,modifiers=_ref.modifiers,options={margin:"0px",once:!1,callback:value};keys(modifiers).forEach((function(mod){RX_ONLY_DIGITS.test(mod)?options.margin="".concat(mod,"px"):"once"===mod.toLowerCase()&&(options.once=!0)})),destroy(el),el[OBSERVER_PROP_NAME]=new VisibilityObserver(el,options,vnode),el[OBSERVER_PROP_NAME]._prevModifiers=clone(modifiers)},VBVisible={bind:bind,componentUpdated:function(el,_ref2,vnode){var value=_ref2.value,oldValue=_ref2.oldValue,modifiers=_ref2.modifiers;modifiers=clone(modifiers),!el||value===oldValue&&el[OBSERVER_PROP_NAME]&&looseEqual(modifiers,el[OBSERVER_PROP_NAME]._prevModifiers)||bind(el,{value:value,modifiers:modifiers},vnode)},unbind:function(el){destroy(el)}},BLANK_TEMPLATE='',props$f={src:{type:String},srcset:{type:[String,Array]},sizes:{type:[String,Array]},alt:{type:String,default:null},width:{type:[Number,String]},height:{type:[Number,String]},block:{type:Boolean,default:!1},fluid:{type:Boolean,default:!1},fluidGrow:{type:Boolean,default:!1},rounded:{type:[Boolean,String],default:!1},thumbnail:{type:Boolean,default:!1},left:{type:Boolean,default:!1},right:{type:Boolean,default:!1},center:{type:Boolean,default:!1},blank:{type:Boolean,default:!1},blankColor:{type:String,default:function(){return getComponentConfig("BImg","blankColor")}}},BImg=Vue.extend({name:"BImg",functional:!0,props:props$f,render:function(h,_ref){var _class,props=_ref.props,data=_ref.data,src=props.src,width=toInteger(props.width)||null,height=toInteger(props.height)||null,align=null,block=props.block,srcset=concat(props.srcset).filter(identity).join(","),sizes=concat(props.sizes).filter(identity).join(",");return props.blank&&(!height&&width?height=width:!width&&height&&(width=height),width||height||(width=1,height=1),src=function(width,height,color){var src=encodeURIComponent(BLANK_TEMPLATE.replace("%{w}",toString$1(width)).replace("%{h}",toString$1(height)).replace("%{f}",color));return"data:image/svg+xml;charset=UTF-8,".concat(src)}(width,height,props.blankColor||"transparent"),srcset=null,sizes=null),props.left?align="float-left":props.right?align="float-right":props.center&&(align="mx-auto",block=!0),h("img",a(data,{attrs:{src:src,alt:props.alt,width:width?toString$1(width):null,height:height?toString$1(height):null,srcset:srcset||null,sizes:sizes||null},class:(_class={"img-thumbnail":props.thumbnail,"img-fluid":props.fluid||props.fluidGrow,"w-100":props.fluidGrow,rounded:""===props.rounded||!0===props.rounded},_defineProperty(_class,"rounded-".concat(props.rounded),isString(props.rounded)&&""!==props.rounded),_defineProperty(_class,align,align),_defineProperty(_class,"d-block",block),_class)}))}}),props$g={src:{type:String,required:!0},srcset:{type:[String,Array]},sizes:{type:[String,Array]},alt:{type:String},width:{type:[Number,String]},height:{type:[Number,String]},blankSrc:{type:String,default:null},blankColor:{type:String,default:function(){return getComponentConfig("BImgLazy","blankColor")}},blankWidth:{type:[Number,String]},blankHeight:{type:[Number,String]},show:{type:Boolean,default:!1},fluid:{type:Boolean,default:!1},fluidGrow:{type:Boolean,default:!1},block:{type:Boolean,default:!1},thumbnail:{type:Boolean,default:!1},rounded:{type:[Boolean,String],default:!1},left:{type:Boolean,default:!1},right:{type:Boolean,default:!1},center:{type:Boolean,default:!1},offset:{type:[Number,String],default:360}},BImgLazy=Vue.extend({name:"BImgLazy",directives:{bVisible:VBVisible},props:props$g,data:function(){return{isShown:this.show}},computed:{computedSrc:function(){return!this.blankSrc||this.isShown?this.src:this.blankSrc},computedBlank:function(){return!(this.isShown||this.blankSrc)},computedWidth:function(){return this.isShown?this.width:this.blankWidth||this.width},computedHeight:function(){return this.isShown?this.height:this.blankHeight||this.height},computedSrcset:function(){var srcset=concat(this.srcset).filter(identity).join(",");return!this.blankSrc||this.isShown?srcset:null},computedSizes:function(){var sizes=concat(this.sizes).filter(identity).join(",");return!this.blankSrc||this.isShown?sizes:null}},watch:{show:function(newVal,oldVal){if(newVal!==oldVal){var visible=!hasIntersectionObserverSupport||newVal;this.isShown=visible,visible!==newVal&&this.$nextTick(this.updateShowProp)}},isShown:function(newVal,oldVal){newVal!==oldVal&&this.updateShowProp()}},mounted:function(){this.isShown=!hasIntersectionObserverSupport||this.show},methods:{updateShowProp:function(){this.$emit("update:show",this.isShown)},doShow:function(visible){!visible&&null!==visible||this.isShown||(this.isShown=!0)}},render:function(h){var _modifiers,directives=[];this.isShown||directives.push({name:"b-visible",value:this.doShow,modifiers:(_modifiers={},_defineProperty(_modifiers,"".concat(toInteger(this.offset,0)),!0),_defineProperty(_modifiers,"once",!0),_modifiers)});return h(BImg,{directives:directives,props:{src:this.computedSrc,blank:this.computedBlank,width:this.computedWidth,height:this.computedHeight,srcset:this.computedSrcset||null,sizes:this.computedSizes||null,alt:this.alt,blankColor:this.blankColor,fluid:this.fluid,fluidGrow:this.fluidGrow,block:this.block,thumbnail:this.thumbnail,rounded:this.rounded,left:this.left,right:this.right,center:this.center}})}}),props$h=_objectSpread2(_objectSpread2({},omit(props$g,["left","right","center","block","rounded","thumbnail","fluid","fluidGrow"])),{},{top:{type:Boolean,default:!1},bottom:{type:Boolean,default:!1},start:{type:Boolean,default:!1},left:{type:Boolean,default:!1},end:{type:Boolean,default:!1},right:{type:Boolean,default:!1}}),BCardImgLazy=Vue.extend({name:"BCardImgLazy",functional:!0,props:props$h,render:function(h,_ref){var props=_ref.props,data=_ref.data,baseClass="card-img";props.top?baseClass+="-top":props.right||props.end?baseClass+="-right":props.bottom?baseClass+="-bottom":(props.left||props.start)&&(baseClass+="-left");var lazyProps=_objectSpread2(_objectSpread2({},props),{},{left:!1,right:!1,center:!1});return h(BImgLazy,a(data,{class:[baseClass],props:lazyProps}))}}),props$i={textTag:{type:String,default:"p"}},BCardText=Vue.extend({name:"BCardText",functional:!0,props:props$i,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(props.textTag,a(data,{staticClass:"card-text"}),children)}}),props$j={tag:{type:String,default:"div"},deck:{type:Boolean,default:!1},columns:{type:Boolean,default:!1}},BCardGroup=Vue.extend({name:"BCardGroup",functional:!0,props:props$j,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{class:props.deck?"card-deck":props.columns?"card-columns":"card-group"}),children)}}),CardPlugin=pluginFactory({components:{BCard:BCard,BCardHeader:BCardHeader,BCardBody:BCardBody,BCardTitle:BCardTitle,BCardSubTitle:BCardSubTitle,BCardFooter:BCardFooter,BCardImg:BCardImg,BCardImgLazy:BCardImgLazy,BCardText:BCardText,BCardGroup:BCardGroup}}),noop=function(){},observeDom=function(el,callback,options){if(el=el?el.$el||el:null,!isElement(el))return null;if(source="observeDom",!hasMutationObserverSupport&&(warn("".concat(source,": Requires MutationObserver support.")),1))return null;var source,obs=new MutationObs((function(mutations){for(var changed=!1,i=0;i0||mutation.removedNodes.length>0))&&(changed=!0)}changed&&callback()}));return obs.observe(el,_objectSpread2({childList:!0,subtree:!0},options)),obs},EVENT_OPTIONS_PASSIVE={passive:!0},EVENT_OPTIONS_NO_CAPTURE={passive:!0,capture:!1},parseEventOptions=function(options){return hasPassiveEventSupport?isObject(options)?options:{capture:!!options||!1}:!!(isObject(options)?options.capture:options)},eventOn=function(el,evtName,handler,options){el&&el.addEventListener&&el.addEventListener(evtName,handler,parseEventOptions(options))},eventOff=function(el,evtName,handler,options){el&&el.removeEventListener&&el.removeEventListener(evtName,handler,parseEventOptions(options))},eventOnOff=function(on){for(var method=on?eventOn:eventOff,_len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];method.apply(void 0,args)},NAME$e="BCarousel",DIRECTION={next:{dirClass:"carousel-item-left",overlayClass:"carousel-item-next"},prev:{dirClass:"carousel-item-right",overlayClass:"carousel-item-prev"}},PointerType={TOUCH:"touch",PEN:"pen"},TransitionEndEvents={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend oTransitionEnd",transition:"transitionend"},BCarousel=Vue.extend({name:NAME$e,mixins:[idMixin,normalizeSlotMixin],provide:function(){return{bvCarousel:this}},model:{prop:"value",event:"input"},props:{labelPrev:{type:String,default:function(){return getComponentConfig(NAME$e,"labelPrev")}},labelNext:{type:String,default:function(){return getComponentConfig(NAME$e,"labelNext")}},labelGotoSlide:{type:String,default:function(){return getComponentConfig(NAME$e,"labelGotoSlide")}},labelIndicators:{type:String,default:function(){return getComponentConfig(NAME$e,"labelIndicators")}},interval:{type:Number,default:5e3},indicators:{type:Boolean,default:!1},controls:{type:Boolean,default:!1},noAnimation:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},noWrap:{type:Boolean,default:!1},noTouch:{type:Boolean,default:!1},noHoverPause:{type:Boolean,default:!1},imgWidth:{type:[Number,String]},imgHeight:{type:[Number,String]},background:{type:String},value:{type:Number,default:0}},data:function(){return{index:this.value||0,isSliding:!1,transitionEndEvent:null,slides:[],direction:null,isPaused:!(toInteger(this.interval,0)>0),touchStartX:0,touchDeltaX:0}},computed:{numSlides:function(){return this.slides.length}},watch:{value:function(newVal,oldVal){newVal!==oldVal&&this.setSlide(toInteger(newVal,0))},interval:function(newVal,oldVal){newVal!==oldVal&&(newVal?(this.pause(!0),this.start(!1)):this.pause(!1))},isPaused:function(newVal,oldVal){newVal!==oldVal&&this.$emit(newVal?"paused":"unpaused")},index:function(to,from){to===from||this.isSliding||this.doSlide(to,from)}},created:function(){this.$_interval=null,this.$_animationTimeout=null,this.$_touchTimeout=null,this.$_observer=null,this.isPaused=!(toInteger(this.interval,0)>0)},mounted:function(){this.transitionEndEvent=function(el){for(var name in TransitionEndEvents)if(!isUndefined(el.style[name]))return TransitionEndEvents[name];return null}(this.$el)||null,this.updateSlides(),this.setObserver(!0)},beforeDestroy:function(){this.clearInterval(),this.clearAnimationTimeout(),this.clearTouchTimeout(),this.setObserver(!1)},methods:{clearInterval:function(_clearInterval){function clearInterval(){return _clearInterval.apply(this,arguments)}return clearInterval.toString=function(){return _clearInterval.toString()},clearInterval}((function(){clearInterval(this.$_interval),this.$_interval=null})),clearAnimationTimeout:function(){clearTimeout(this.$_animationTimeout),this.$_animationTimeout=null},clearTouchTimeout:function(){clearTimeout(this.$_touchTimeout),this.$_touchTimeout=null},setObserver:function(){var on=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.$_observer&&this.$_observer.disconnect(),this.$_observer=null,on&&(this.$_observer=observeDom(this.$refs.inner,this.updateSlides.bind(this),{subtree:!1,childList:!0,attributes:!0,attributeFilter:["id"]}))},setSlide:function(slide){var _this=this,direction=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!(isBrowser&&document.visibilityState&&document.hidden)){var noWrap=this.noWrap,numSlides=this.numSlides;slide=mathFloor(slide),0!==numSlides&&(this.isSliding?this.$once("sliding-end",(function(){return _this.setSlide(slide,direction)})):(this.direction=direction,this.index=slide>=numSlides?noWrap?numSlides-1:0:slide<0?noWrap?0:numSlides-1:slide,noWrap&&this.index!==slide&&this.index!==this.value&&this.$emit("input",this.index)))}},prev:function(){this.setSlide(this.index-1,"prev")},next:function(){this.setSlide(this.index+1,"next")},pause:function(evt){evt||(this.isPaused=!0),this.clearInterval()},start:function(evt){evt||(this.isPaused=!1),this.clearInterval(),this.interval&&this.numSlides>1&&(this.$_interval=setInterval(this.next,mathMax(1e3,this.interval)))},restart:function(){this.$el.contains(getActiveElement())||this.start()},doSlide:function(to,from){var _this2=this,isCycling=Boolean(this.interval),direction=this.calcDirection(this.direction,from,to),overlayClass=direction.overlayClass,dirClass=direction.dirClass,currentSlide=this.slides[from],nextSlide=this.slides[to];if(currentSlide&&nextSlide){if(this.isSliding=!0,isCycling&&this.pause(!1),this.$emit("sliding-start",to),this.$emit("input",this.index),this.noAnimation)addClass(nextSlide,"active"),removeClass(currentSlide,"active"),this.isSliding=!1,this.$nextTick((function(){return _this2.$emit("sliding-end",to)}));else{addClass(nextSlide,overlayClass),reflow(nextSlide),addClass(currentSlide,dirClass),addClass(nextSlide,dirClass);var called=!1,onceTransEnd=function onceTransEnd(){if(!called){if(called=!0,_this2.transitionEndEvent)_this2.transitionEndEvent.split(/\s+/).forEach((function(evt){return eventOff(nextSlide,evt,onceTransEnd,EVENT_OPTIONS_NO_CAPTURE)}));_this2.clearAnimationTimeout(),removeClass(nextSlide,dirClass),removeClass(nextSlide,overlayClass),addClass(nextSlide,"active"),removeClass(currentSlide,"active"),removeClass(currentSlide,dirClass),removeClass(currentSlide,overlayClass),setAttr(currentSlide,"aria-current","false"),setAttr(nextSlide,"aria-current","true"),setAttr(currentSlide,"aria-hidden","true"),setAttr(nextSlide,"aria-hidden","false"),_this2.isSliding=!1,_this2.direction=null,_this2.$nextTick((function(){return _this2.$emit("sliding-end",to)}))}};if(this.transitionEndEvent)this.transitionEndEvent.split(/\s+/).forEach((function(event){return eventOn(nextSlide,event,onceTransEnd,EVENT_OPTIONS_NO_CAPTURE)}));this.$_animationTimeout=setTimeout(onceTransEnd,650)}isCycling&&this.start(!1)}},updateSlides:function(){this.pause(!0),this.slides=selectAll(".carousel-item",this.$refs.inner);var numSlides=this.slides.length,index=mathMax(0,mathMin(mathFloor(this.index),numSlides-1));this.slides.forEach((function(slide,idx){var n=idx+1;idx===index?(addClass(slide,"active"),setAttr(slide,"aria-current","true")):(removeClass(slide,"active"),setAttr(slide,"aria-current","false")),setAttr(slide,"aria-posinset",String(n)),setAttr(slide,"aria-setsize",String(numSlides))})),this.setSlide(index),this.start(this.isPaused)},calcDirection:function(){var direction=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return direction?DIRECTION[direction]:(arguments.length>2&&void 0!==arguments[2]?arguments[2]:0)>(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0)?DIRECTION.next:DIRECTION.prev},handleClick:function(evt,fn){var keyCode=evt.keyCode;"click"!==evt.type&&keyCode!==KEY_CODES.SPACE&&keyCode!==KEY_CODES.ENTER||(evt.preventDefault(),evt.stopPropagation(),fn())},handleSwipe:function(){var absDeltaX=mathAbs(this.touchDeltaX);if(!(absDeltaX<=40)){var direction=absDeltaX/this.touchDeltaX;this.touchDeltaX=0,direction>0?this.prev():direction<0&&this.next()}},touchStart:function(evt){hasPointerEventSupport&&PointerType[evt.pointerType.toUpperCase()]?this.touchStartX=evt.clientX:hasPointerEventSupport||(this.touchStartX=evt.touches[0].clientX)},touchMove:function(evt){evt.touches&&evt.touches.length>1?this.touchDeltaX=0:this.touchDeltaX=evt.touches[0].clientX-this.touchStartX},touchEnd:function(evt){hasPointerEventSupport&&PointerType[evt.pointerType.toUpperCase()]&&(this.touchDeltaX=evt.clientX-this.touchStartX),this.handleSwipe(),this.pause(!1),this.clearTouchTimeout(),this.$_touchTimeout=setTimeout(this.start,500+mathMax(1e3,this.interval))}},render:function(h){var _this3=this,inner=h("div",{ref:"inner",class:["carousel-inner"],attrs:{id:this.safeId("__BV_inner_"),role:"list"}},[this.normalizeSlot("default")]),controls=h();if(this.controls){var prevHandler=function(evt){_this3.isSliding?evt.preventDefault():_this3.handleClick(evt,_this3.prev)},nextHandler=function(evt){_this3.isSliding?evt.preventDefault():_this3.handleClick(evt,_this3.next)};controls=[h("a",{class:["carousel-control-prev"],attrs:{href:"#",role:"button","aria-controls":this.safeId("__BV_inner_"),"aria-disabled":this.isSliding?"true":null},on:{click:prevHandler,keydown:prevHandler}},[h("span",{class:["carousel-control-prev-icon"],attrs:{"aria-hidden":"true"}}),h("span",{class:["sr-only"]},[this.labelPrev])]),h("a",{class:["carousel-control-next"],attrs:{href:"#",role:"button","aria-controls":this.safeId("__BV_inner_"),"aria-disabled":this.isSliding?"true":null},on:{click:nextHandler,keydown:nextHandler}},[h("span",{class:["carousel-control-next-icon"],attrs:{"aria-hidden":"true"}}),h("span",{class:["sr-only"]},[this.labelNext])])]}var indicators=h("ol",{class:["carousel-indicators"],directives:[{name:"show",rawName:"v-show",value:this.indicators,expression:"indicators"}],attrs:{id:this.safeId("__BV_indicators_"),"aria-hidden":this.indicators?"false":"true","aria-label":this.labelIndicators,"aria-owns":this.safeId("__BV_inner_")}},this.slides.map((function(slide,n){return h("li",{key:"slide_".concat(n),class:{active:n===_this3.index},attrs:{role:"button",id:_this3.safeId("__BV_indicator_".concat(n+1,"_")),tabindex:_this3.indicators?"0":"-1","aria-current":n===_this3.index?"true":"false","aria-label":"".concat(_this3.labelGotoSlide," ").concat(n+1),"aria-describedby":_this3.slides[n].id||null,"aria-controls":_this3.safeId("__BV_inner_")},on:{click:function(evt){_this3.handleClick(evt,(function(){_this3.setSlide(n)}))},keydown:function(evt){_this3.handleClick(evt,(function(){_this3.setSlide(n)}))}}})}))),on={mouseenter:this.noHoverPause?noop:this.pause,mouseleave:this.noHoverPause?noop:this.restart,focusin:this.pause,focusout:this.restart,keydown:function(evt){if(!/input|textarea/i.test(evt.target.tagName)){var keyCode=evt.keyCode;keyCode!==KEY_CODES.LEFT&&keyCode!==KEY_CODES.RIGHT||(evt.preventDefault(),evt.stopPropagation(),_this3[keyCode===KEY_CODES.LEFT?"prev":"next"]())}}};return!this.noTouch&&hasTouchSupport&&(hasPointerEventSupport?(on["&pointerdown"]=this.touchStart,on["&pointerup"]=this.touchEnd):(on["&touchstart"]=this.touchStart,on["&touchmove"]=this.touchMove,on["&touchend"]=this.touchEnd)),h("div",{staticClass:"carousel",class:{slide:!this.noAnimation,"carousel-fade":!this.noAnimation&&this.fade,"pointer-event":!this.noTouch&&hasTouchSupport&&hasPointerEventSupport},style:{background:this.background},attrs:{role:"region",id:this.safeId(),"aria-busy":this.isSliding?"true":"false"},on:on},[inner,controls,indicators])}}),imgProps={imgSrc:{type:String},imgAlt:{type:String},imgWidth:{type:[Number,String]},imgHeight:{type:[Number,String]},imgBlank:{type:Boolean,default:!1},imgBlankColor:{type:String,default:"transparent"}},props$k=_objectSpread2(_objectSpread2({},imgProps),{},{contentVisibleUp:{type:String},contentTag:{type:String,default:"div"},caption:{type:String},captionHtml:{type:String},captionTag:{type:String,default:"h3"},text:{type:String},textHtml:{type:String},textTag:{type:String,default:"p"},background:{type:String}}),CarouselPlugin=pluginFactory({components:{BCarousel:BCarousel,BCarouselSlide:Vue.extend({name:"BCarouselSlide",mixins:[idMixin,normalizeSlotMixin],inject:{bvCarousel:{default:function(){return{noTouch:!0}}}},props:props$k,computed:{contentClasses:function(){return[this.contentVisibleUp?"d-none":"",this.contentVisibleUp?"d-".concat(this.contentVisibleUp,"-block"):""]},computedWidth:function(){return this.imgWidth||this.bvCarousel.imgWidth||null},computedHeight:function(){return this.imgHeight||this.bvCarousel.imgHeight||null}},render:function(h){var $img=this.normalizeSlot("img");if(!$img&&(this.imgSrc||this.imgBlank)){var on={};!this.bvCarousel.noTouch&&hasTouchSupport&&(on.dragstart=function(evt){evt.preventDefault()}),$img=h(BImg,{props:_objectSpread2(_objectSpread2({},pluckProps(imgProps,this.$props,unprefixPropName.bind(null,"img"))),{},{width:this.computedWidth,height:this.computedHeight,fluidGrow:!0,block:!0}),on:on})}var $contentChildren=[!(!this.caption&&!this.captionHtml)&&h(this.captionTag,{domProps:htmlOrText(this.captionHtml,this.caption)}),!(!this.text&&!this.textHtml)&&h(this.textTag,{domProps:htmlOrText(this.textHtml,this.text)}),this.normalizeSlot("default")||!1],$content=h();return $contentChildren.some(Boolean)&&($content=h(this.contentTag,{staticClass:"carousel-caption",class:this.contentClasses},$contentChildren.map((function($child){return $child||h()})))),h("div",{staticClass:"carousel-item",style:{background:this.background||this.bvCarousel.background||null},attrs:{id:this.safeId(),role:"listitem"}},[$img,$content])}})}}),TRANSITION_PROPS={css:!0,enterClass:"",enterActiveClass:"collapsing",enterToClass:"collapse show",leaveClass:"collapse show",leaveActiveClass:"collapsing",leaveToClass:"collapse"},TRANSITION_HANDLERS={enter:function(el){el.style.height=0,requestAF((function(){reflow(el),el.style.height="".concat(el.scrollHeight,"px")}))},afterEnter:function(el){el.style.height=null},leave:function(el){el.style.height="auto",el.style.display="block",el.style.height="".concat(getBCR(el).height,"px"),reflow(el),el.style.height=0},afterLeave:function(el){el.style.height=null}},BVCollapse=Vue.extend({name:"BVCollapse",functional:!0,props:{appear:{type:Boolean,default:!1}},render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h("transition",a(data,{props:TRANSITION_PROPS,on:TRANSITION_HANDLERS},{props:props}),children)}}),listenOnRootMixin={methods:{listenOnRoot:function(event,callback){var _this=this;this.$root.$on(event,callback),this.$on("hook:beforeDestroy",(function(){_this.$root.$off(event,callback)}))},listenOnRootOnce:function(event,callback){var _this2=this;this.$root.$once(event,callback),this.$on("hook:beforeDestroy",(function(){_this2.$root.$off(event,callback)}))},emitOnRoot:function(event){for(var _this$$root,_len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];(_this$$root=this.$root).$emit.apply(_this$$root,[event].concat(args))}}},ENTER$1=KEY_CODES.ENTER,SPACE$1=KEY_CODES.SPACE,BV_BASE="__BV_toggle",BV_TOGGLE_ROOT_HANDLER="".concat(BV_BASE,"_HANDLER__"),BV_TOGGLE_CLICK_HANDLER="".concat(BV_BASE,"_CLICK__"),BV_TOGGLE_STATE="".concat(BV_BASE,"_STATE__"),BV_TOGGLE_TARGETS="".concat(BV_BASE,"_TARGETS__"),EVENT_STATE="bv::collapse::state",EVENT_STATE_SYNC="bv::collapse::sync::state",KEYDOWN_KEY_CODES=[ENTER$1,SPACE$1],RX_HASH=/^#/,RX_HASH_ID=/^#[A-Za-z]+[\w\-:.]*$/,RX_SPLIT_SEPARATOR=/\s+/,isNonStandardTag$1=function(el){return!arrayIncludes(["button","a"],el.tagName.toLowerCase())},removeClickListener=function(el){var handler=el[BV_TOGGLE_CLICK_HANDLER];handler&&(eventOff(el,"click",handler),eventOff(el,"keydown",handler)),el[BV_TOGGLE_CLICK_HANDLER]=null},removeRootListeners=function(el,vnode){el[BV_TOGGLE_ROOT_HANDLER]&&vnode.context&&vnode.context.$root.$off([EVENT_STATE,EVENT_STATE_SYNC],el[BV_TOGGLE_ROOT_HANDLER]),el[BV_TOGGLE_ROOT_HANDLER]=null},setToggleState=function(el,state){state?(removeClass(el,"collapsed"),addClass(el,"not-collapsed"),setAttr(el,"aria-expanded","true")):(removeClass(el,"not-collapsed"),addClass(el,"collapsed"),setAttr(el,"aria-expanded","false"))},resetProp=function(el,prop){el[prop]=null,delete el[prop]},handleUpdate=function(el,binding,vnode){if(isBrowser&&vnode.context){isNonStandardTag$1(el)&&(hasAttr(el,"role")||setAttr(el,"role","button"),hasAttr(el,"tabindex")||setAttr(el,"tabindex","0")),setToggleState(el,el[BV_TOGGLE_STATE]);var targets=function(_ref,el){var modifiers=_ref.modifiers,arg=_ref.arg,value=_ref.value,targets=keys(modifiers||{});if(value=isString(value)?value.split(RX_SPLIT_SEPARATOR):value,isTag(el.tagName,"a")){var href=getAttr(el,"href")||"";RX_HASH_ID.test(href)&&targets.push(href.replace(RX_HASH,""))}return concat(arg,value).forEach((function(t){return isString(t)&&targets.push(t)})),targets.filter((function(t,index,arr){return t&&arr.indexOf(t)===index}))}(binding,el);targets.length?setAttr(el,"aria-controls",targets.join(" ")):removeAttr(el,"aria-controls"),function(el,vnode){if(removeClickListener(el),vnode.context){var handler=function(evt){"keydown"===evt.type&&!arrayIncludes(KEYDOWN_KEY_CODES,evt.keyCode)||isDisabled(el)||(el[BV_TOGGLE_TARGETS]||[]).forEach((function(target){vnode.context.$root.$emit("bv::toggle::collapse",target)}))};el[BV_TOGGLE_CLICK_HANDLER]=handler,eventOn(el,"click",handler),isNonStandardTag$1(el)&&eventOn(el,"keydown",handler)}}(el,vnode),looseEqual(targets,el[BV_TOGGLE_TARGETS])||(el[BV_TOGGLE_TARGETS]=targets,targets.forEach((function(target){vnode.context.$root.$emit("bv::request::collapse::state",target)})))}},VBToggle={bind:function(el,binding,vnode){el[BV_TOGGLE_STATE]=!1,el[BV_TOGGLE_TARGETS]=[],function(el,vnode){if(removeRootListeners(el,vnode),vnode.context){var handler=function(id,state){arrayIncludes(el[BV_TOGGLE_TARGETS]||[],id)&&(el[BV_TOGGLE_STATE]=state,setToggleState(el,state))};el[BV_TOGGLE_ROOT_HANDLER]=handler,vnode.context.$root.$on([EVENT_STATE,EVENT_STATE_SYNC],handler)}}(el,vnode),handleUpdate(el,binding,vnode)},componentUpdated:handleUpdate,updated:handleUpdate,unbind:function(el,binding,vnode){removeClickListener(el),removeRootListeners(el,vnode),resetProp(el,BV_TOGGLE_ROOT_HANDLER),resetProp(el,BV_TOGGLE_CLICK_HANDLER),resetProp(el,BV_TOGGLE_STATE),resetProp(el,BV_TOGGLE_TARGETS),removeClass(el,"collapsed"),removeClass(el,"not-collapsed"),removeAttr(el,"aria-expanded"),removeAttr(el,"aria-controls"),removeAttr(el,"role")}},BCollapse=Vue.extend({name:"BCollapse",mixins:[idMixin,listenOnRootMixin,normalizeSlotMixin],model:{prop:"visible",event:"input"},props:{isNav:{type:Boolean,default:!1},accordion:{type:String},visible:{type:Boolean,default:!1},tag:{type:String,default:"div"},appear:{type:Boolean,default:!1}},data:function(){return{show:this.visible,transitioning:!1}},computed:{classObject:function(){return{"navbar-collapse":this.isNav,collapse:!this.transitioning,show:this.show&&!this.transitioning}}},watch:{visible:function(newVal){newVal!==this.show&&(this.show=newVal)},show:function(newVal,oldVal){newVal!==oldVal&&this.emitState()}},created:function(){this.show=this.visible},mounted:function(){var _this=this;this.show=this.visible,this.listenOnRoot("bv::toggle::collapse",this.handleToggleEvt),this.listenOnRoot("bv::collapse::accordion",this.handleAccordionEvt),this.isNav&&(this.setWindowEvents(!0),this.handleResize()),this.$nextTick((function(){_this.emitState()})),this.listenOnRoot("bv::request::collapse::state",(function(id){id===_this.safeId()&&_this.$nextTick(_this.emitSync)}))},updated:function(){this.emitSync()},deactivated:function(){this.isNav&&this.setWindowEvents(!1)},activated:function(){this.isNav&&this.setWindowEvents(!0),this.emitSync()},beforeDestroy:function(){this.show=!1,this.isNav&&isBrowser&&this.setWindowEvents(!1)},methods:{setWindowEvents:function(on){eventOnOff(on,window,"resize",this.handleResize,EVENT_OPTIONS_NO_CAPTURE),eventOnOff(on,window,"orientationchange",this.handleResize,EVENT_OPTIONS_NO_CAPTURE)},toggle:function(){this.show=!this.show},onEnter:function(){this.transitioning=!0,this.$emit("show")},onAfterEnter:function(){this.transitioning=!1,this.$emit("shown")},onLeave:function(){this.transitioning=!0,this.$emit("hide")},onAfterLeave:function(){this.transitioning=!1,this.$emit("hidden")},emitState:function(){this.$emit("input",this.show),this.emitOnRoot(EVENT_STATE,this.safeId(),this.show),this.accordion&&this.show&&this.emitOnRoot("bv::collapse::accordion",this.safeId(),this.accordion)},emitSync:function(){this.emitOnRoot(EVENT_STATE_SYNC,this.safeId(),this.show)},checkDisplayBlock:function(){var restore=hasClass(this.$el,"show");removeClass(this.$el,"show");var isBlock="block"===getCS(this.$el).display;return restore&&addClass(this.$el,"show"),isBlock},clickHandler:function(evt){var el=evt.target;this.isNav&&el&&"block"===getCS(this.$el).display&&(matches(el,".nav-link,.dropdown-item")||closest(".nav-link,.dropdown-item",el))&&(this.checkDisplayBlock()||(this.show=!1))},handleToggleEvt:function(target){target===this.safeId()&&this.toggle()},handleAccordionEvt:function(openedId,accordion){this.accordion&&accordion===this.accordion&&(openedId===this.safeId()?this.show||this.toggle():this.show&&this.toggle())},handleResize:function(){this.show="block"===getCS(this.$el).display}},render:function(h){var _this2=this,scope={visible:this.show,close:function(){return _this2.show=!1}},content=h(this.tag,{class:this.classObject,directives:[{name:"show",value:this.show}],attrs:{id:this.safeId()},on:{click:this.clickHandler}},[this.normalizeSlot("default",scope)]);return h(BVCollapse,{props:{appear:this.appear},on:{enter:this.onEnter,afterEnter:this.onAfterEnter,leave:this.onLeave,afterLeave:this.onAfterLeave}},[content])}}),VBTogglePlugin=pluginFactory({directives:{VBToggle:VBToggle}}),CollapsePlugin=pluginFactory({components:{BCollapse:BCollapse},plugins:{VBTogglePlugin:VBTogglePlugin}}),isBrowser$1="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,timeoutDuration=function(){for(var longerTimeoutBrowsers=["Edge","Trident","Firefox"],i=0;i=0)return 1;return 0}();var debounce=isBrowser$1&&window.Promise?function(fn){var called=!1;return function(){called||(called=!0,window.Promise.resolve().then((function(){called=!1,fn()})))}}:function(fn){var scheduled=!1;return function(){scheduled||(scheduled=!0,setTimeout((function(){scheduled=!1,fn()}),timeoutDuration))}};function isFunction$1(functionToCheck){return functionToCheck&&"[object Function]"==={}.toString.call(functionToCheck)}function getStyleComputedProperty(element,property){if(1!==element.nodeType)return[];var css=element.ownerDocument.defaultView.getComputedStyle(element,null);return property?css[property]:css}function getParentNode(element){return"HTML"===element.nodeName?element:element.parentNode||element.host}function getScrollParent(element){if(!element)return document.body;switch(element.nodeName){case"HTML":case"BODY":return element.ownerDocument.body;case"#document":return element.body}var _getStyleComputedProp=getStyleComputedProperty(element),overflow=_getStyleComputedProp.overflow,overflowX=_getStyleComputedProp.overflowX,overflowY=_getStyleComputedProp.overflowY;return/(auto|scroll|overlay)/.test(overflow+overflowY+overflowX)?element:getScrollParent(getParentNode(element))}function getReferenceNode(reference){return reference&&reference.referenceNode?reference.referenceNode:reference}var isIE11=isBrowser$1&&!(!window.MSInputMethodContext||!document.documentMode),isIE10=isBrowser$1&&/MSIE 10/.test(navigator.userAgent);function isIE$1(version){return 11===version?isIE11:10===version?isIE10:isIE11||isIE10}function getOffsetParent(element){if(!element)return document.documentElement;for(var noOffsetParent=isIE$1(10)?document.body:null,offsetParent=element.offsetParent||null;offsetParent===noOffsetParent&&element.nextElementSibling;)offsetParent=(element=element.nextElementSibling).offsetParent;var nodeName=offsetParent&&offsetParent.nodeName;return nodeName&&"BODY"!==nodeName&&"HTML"!==nodeName?-1!==["TH","TD","TABLE"].indexOf(offsetParent.nodeName)&&"static"===getStyleComputedProperty(offsetParent,"position")?getOffsetParent(offsetParent):offsetParent:element?element.ownerDocument.documentElement:document.documentElement}function getRoot(node){return null!==node.parentNode?getRoot(node.parentNode):node}function findCommonOffsetParent(element1,element2){if(!(element1&&element1.nodeType&&element2&&element2.nodeType))return document.documentElement;var order=element1.compareDocumentPosition(element2)&Node.DOCUMENT_POSITION_FOLLOWING,start=order?element1:element2,end=order?element2:element1,range=document.createRange();range.setStart(start,0),range.setEnd(end,0);var element,nodeName,commonAncestorContainer=range.commonAncestorContainer;if(element1!==commonAncestorContainer&&element2!==commonAncestorContainer||start.contains(end))return"BODY"===(nodeName=(element=commonAncestorContainer).nodeName)||"HTML"!==nodeName&&getOffsetParent(element.firstElementChild)!==element?getOffsetParent(commonAncestorContainer):commonAncestorContainer;var element1root=getRoot(element1);return element1root.host?findCommonOffsetParent(element1root.host,element2):findCommonOffsetParent(element1,getRoot(element2).host)}function getScroll(element){var upperSide="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",nodeName=element.nodeName;if("BODY"===nodeName||"HTML"===nodeName){var html=element.ownerDocument.documentElement;return(element.ownerDocument.scrollingElement||html)[upperSide]}return element[upperSide]}function getBordersSize(styles,axis){var sideA="x"===axis?"Left":"Top",sideB="Left"===sideA?"Right":"Bottom";return parseFloat(styles["border"+sideA+"Width"])+parseFloat(styles["border"+sideB+"Width"])}function getSize(axis,body,html,computedStyle){return Math.max(body["offset"+axis],body["scroll"+axis],html["client"+axis],html["offset"+axis],html["scroll"+axis],isIE$1(10)?parseInt(html["offset"+axis])+parseInt(computedStyle["margin"+("Height"===axis?"Top":"Left")])+parseInt(computedStyle["margin"+("Height"===axis?"Bottom":"Right")]):0)}function getWindowSizes(document){var body=document.body,html=document.documentElement,computedStyle=isIE$1(10)&&getComputedStyle(html);return{height:getSize("Height",body,html,computedStyle),width:getSize("Width",body,html,computedStyle)}}var createClass=function(){function defineProperties(target,props){for(var i=0;i2&&void 0!==arguments[2]&&arguments[2],isIE10=isIE$1(10),isHTML="HTML"===parent.nodeName,childrenRect=getBoundingClientRect(children),parentRect=getBoundingClientRect(parent),scrollParent=getScrollParent(children),styles=getStyleComputedProperty(parent),borderTopWidth=parseFloat(styles.borderTopWidth),borderLeftWidth=parseFloat(styles.borderLeftWidth);fixedPosition&&isHTML&&(parentRect.top=Math.max(parentRect.top,0),parentRect.left=Math.max(parentRect.left,0));var offsets=getClientRect({top:childrenRect.top-parentRect.top-borderTopWidth,left:childrenRect.left-parentRect.left-borderLeftWidth,width:childrenRect.width,height:childrenRect.height});if(offsets.marginTop=0,offsets.marginLeft=0,!isIE10&&isHTML){var marginTop=parseFloat(styles.marginTop),marginLeft=parseFloat(styles.marginLeft);offsets.top-=borderTopWidth-marginTop,offsets.bottom-=borderTopWidth-marginTop,offsets.left-=borderLeftWidth-marginLeft,offsets.right-=borderLeftWidth-marginLeft,offsets.marginTop=marginTop,offsets.marginLeft=marginLeft}return(isIE10&&!fixedPosition?parent.contains(scrollParent):parent===scrollParent&&"BODY"!==scrollParent.nodeName)&&(offsets=function(rect,element){var subtract=arguments.length>2&&void 0!==arguments[2]&&arguments[2],scrollTop=getScroll(element,"top"),scrollLeft=getScroll(element,"left"),modifier=subtract?-1:1;return rect.top+=scrollTop*modifier,rect.bottom+=scrollTop*modifier,rect.left+=scrollLeft*modifier,rect.right+=scrollLeft*modifier,rect}(offsets,parent)),offsets}function isFixed(element){var nodeName=element.nodeName;if("BODY"===nodeName||"HTML"===nodeName)return!1;if("fixed"===getStyleComputedProperty(element,"position"))return!0;var parentNode=getParentNode(element);return!!parentNode&&isFixed(parentNode)}function getFixedPositionOffsetParent(element){if(!element||!element.parentElement||isIE$1())return document.documentElement;for(var el=element.parentElement;el&&"none"===getStyleComputedProperty(el,"transform");)el=el.parentElement;return el||document.documentElement}function getBoundaries(popper,reference,padding,boundariesElement){var fixedPosition=arguments.length>4&&void 0!==arguments[4]&&arguments[4],boundaries={top:0,left:0},offsetParent=fixedPosition?getFixedPositionOffsetParent(popper):findCommonOffsetParent(popper,getReferenceNode(reference));if("viewport"===boundariesElement)boundaries=function(element){var excludeScroll=arguments.length>1&&void 0!==arguments[1]&&arguments[1],html=element.ownerDocument.documentElement,relativeOffset=getOffsetRectRelativeToArbitraryNode(element,html),width=Math.max(html.clientWidth,window.innerWidth||0),height=Math.max(html.clientHeight,window.innerHeight||0),scrollTop=excludeScroll?0:getScroll(html),scrollLeft=excludeScroll?0:getScroll(html,"left");return getClientRect({top:scrollTop-relativeOffset.top+relativeOffset.marginTop,left:scrollLeft-relativeOffset.left+relativeOffset.marginLeft,width:width,height:height})}(offsetParent,fixedPosition);else{var boundariesNode=void 0;"scrollParent"===boundariesElement?"BODY"===(boundariesNode=getScrollParent(getParentNode(reference))).nodeName&&(boundariesNode=popper.ownerDocument.documentElement):boundariesNode="window"===boundariesElement?popper.ownerDocument.documentElement:boundariesElement;var offsets=getOffsetRectRelativeToArbitraryNode(boundariesNode,offsetParent,fixedPosition);if("HTML"!==boundariesNode.nodeName||isFixed(offsetParent))boundaries=offsets;else{var _getWindowSizes=getWindowSizes(popper.ownerDocument),height=_getWindowSizes.height,width=_getWindowSizes.width;boundaries.top+=offsets.top-offsets.marginTop,boundaries.bottom=height+offsets.top,boundaries.left+=offsets.left-offsets.marginLeft,boundaries.right=width+offsets.left}}var isPaddingNumber="number"==typeof(padding=padding||0);return boundaries.left+=isPaddingNumber?padding:padding.left||0,boundaries.top+=isPaddingNumber?padding:padding.top||0,boundaries.right-=isPaddingNumber?padding:padding.right||0,boundaries.bottom-=isPaddingNumber?padding:padding.bottom||0,boundaries}function computeAutoPlacement(placement,refRect,popper,reference,boundariesElement){var padding=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===placement.indexOf("auto"))return placement;var boundaries=getBoundaries(popper,reference,padding,boundariesElement),rects={top:{width:boundaries.width,height:refRect.top-boundaries.top},right:{width:boundaries.right-refRect.right,height:boundaries.height},bottom:{width:boundaries.width,height:boundaries.bottom-refRect.bottom},left:{width:refRect.left-boundaries.left,height:boundaries.height}},sortedAreas=Object.keys(rects).map((function(key){return _extends({key:key},rects[key],{area:(_ref=rects[key],_ref.width*_ref.height)});var _ref})).sort((function(a,b){return b.area-a.area})),filteredAreas=sortedAreas.filter((function(_ref2){var width=_ref2.width,height=_ref2.height;return width>=popper.clientWidth&&height>=popper.clientHeight})),computedPlacement=filteredAreas.length>0?filteredAreas[0].key:sortedAreas[0].key,variation=placement.split("-")[1];return computedPlacement+(variation?"-"+variation:"")}function getReferenceOffsets(state,popper,reference){var fixedPosition=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return getOffsetRectRelativeToArbitraryNode(reference,fixedPosition?getFixedPositionOffsetParent(popper):findCommonOffsetParent(popper,getReferenceNode(reference)),fixedPosition)}function getOuterSizes(element){var styles=element.ownerDocument.defaultView.getComputedStyle(element),x=parseFloat(styles.marginTop||0)+parseFloat(styles.marginBottom||0),y=parseFloat(styles.marginLeft||0)+parseFloat(styles.marginRight||0);return{width:element.offsetWidth+y,height:element.offsetHeight+x}}function getOppositePlacement(placement){var hash={left:"right",right:"left",bottom:"top",top:"bottom"};return placement.replace(/left|right|bottom|top/g,(function(matched){return hash[matched]}))}function getPopperOffsets(popper,referenceOffsets,placement){placement=placement.split("-")[0];var popperRect=getOuterSizes(popper),popperOffsets={width:popperRect.width,height:popperRect.height},isHoriz=-1!==["right","left"].indexOf(placement),mainSide=isHoriz?"top":"left",secondarySide=isHoriz?"left":"top",measurement=isHoriz?"height":"width",secondaryMeasurement=isHoriz?"width":"height";return popperOffsets[mainSide]=referenceOffsets[mainSide]+referenceOffsets[measurement]/2-popperRect[measurement]/2,popperOffsets[secondarySide]=placement===secondarySide?referenceOffsets[secondarySide]-popperRect[secondaryMeasurement]:referenceOffsets[getOppositePlacement(secondarySide)],popperOffsets}function find(arr,check){return Array.prototype.find?arr.find(check):arr.filter(check)[0]}function runModifiers(modifiers,data,ends){return(void 0===ends?modifiers:modifiers.slice(0,function(arr,prop,value){if(Array.prototype.findIndex)return arr.findIndex((function(cur){return cur[prop]===value}));var match=find(arr,(function(obj){return obj[prop]===value}));return arr.indexOf(match)}(modifiers,"name",ends))).forEach((function(modifier){modifier.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var fn=modifier.function||modifier.fn;modifier.enabled&&isFunction$1(fn)&&(data.offsets.popper=getClientRect(data.offsets.popper),data.offsets.reference=getClientRect(data.offsets.reference),data=fn(data,modifier))})),data}function update(){if(!this.state.isDestroyed){var data={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};data.offsets.reference=getReferenceOffsets(this.state,this.popper,this.reference,this.options.positionFixed),data.placement=computeAutoPlacement(this.options.placement,data.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),data.originalPlacement=data.placement,data.positionFixed=this.options.positionFixed,data.offsets.popper=getPopperOffsets(this.popper,data.offsets.reference,data.placement),data.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",data=runModifiers(this.modifiers,data),this.state.isCreated?this.options.onUpdate(data):(this.state.isCreated=!0,this.options.onCreate(data))}}function isModifierEnabled(modifiers,modifierName){return modifiers.some((function(_ref){var name=_ref.name;return _ref.enabled&&name===modifierName}))}function getSupportedPropertyName(property){for(var prefixes=[!1,"ms","Webkit","Moz","O"],upperProp=property.charAt(0).toUpperCase()+property.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],index=validPlacements.indexOf(placement),arr=validPlacements.slice(index+1).concat(validPlacements.slice(0,index));return counter?arr.reverse():arr}var BEHAVIORS_FLIP="flip",BEHAVIORS_CLOCKWISE="clockwise",BEHAVIORS_COUNTERCLOCKWISE="counterclockwise";function parseOffset(offset,popperOffsets,referenceOffsets,basePlacement){var offsets=[0,0],useHeight=-1!==["right","left"].indexOf(basePlacement),fragments=offset.split(/(\+|\-)/).map((function(frag){return frag.trim()})),divider=fragments.indexOf(find(fragments,(function(frag){return-1!==frag.search(/,|\s/)})));fragments[divider]&&-1===fragments[divider].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var splitRegex=/\s*,\s*|\s+/,ops=-1!==divider?[fragments.slice(0,divider).concat([fragments[divider].split(splitRegex)[0]]),[fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider+1))]:[fragments];return ops=ops.map((function(op,index){var measurement=(1===index?!useHeight:useHeight)?"height":"width",mergeWithPrevious=!1;return op.reduce((function(a,b){return""===a[a.length-1]&&-1!==["+","-"].indexOf(b)?(a[a.length-1]=b,mergeWithPrevious=!0,a):mergeWithPrevious?(a[a.length-1]+=b,mergeWithPrevious=!1,a):a.concat(b)}),[]).map((function(str){return function(str,measurement,popperOffsets,referenceOffsets){var split=str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),value=+split[1],unit=split[2];if(!value)return str;if(0===unit.indexOf("%")){return getClientRect("%p"===unit?popperOffsets:referenceOffsets)[measurement]/100*value}if("vh"===unit||"vw"===unit)return("vh"===unit?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*value;return value}(str,measurement,popperOffsets,referenceOffsets)}))})),ops.forEach((function(op,index){op.forEach((function(frag,index2){isNumeric(frag)&&(offsets[index]+=frag*("-"===op[index2-1]?-1:1))}))})),offsets}var modifiers={shift:{order:100,enabled:!0,fn:function(data){var placement=data.placement,basePlacement=placement.split("-")[0],shiftvariation=placement.split("-")[1];if(shiftvariation){var _data$offsets=data.offsets,reference=_data$offsets.reference,popper=_data$offsets.popper,isVertical=-1!==["bottom","top"].indexOf(basePlacement),side=isVertical?"left":"top",measurement=isVertical?"width":"height",shiftOffsets={start:defineProperty$1({},side,reference[side]),end:defineProperty$1({},side,reference[side]+reference[measurement]-popper[measurement])};data.offsets.popper=_extends({},popper,shiftOffsets[shiftvariation])}return data}},offset:{order:200,enabled:!0,fn:function(data,_ref){var offset=_ref.offset,placement=data.placement,_data$offsets=data.offsets,popper=_data$offsets.popper,reference=_data$offsets.reference,basePlacement=placement.split("-")[0],offsets=void 0;return offsets=isNumeric(+offset)?[+offset,0]:parseOffset(offset,popper,reference,basePlacement),"left"===basePlacement?(popper.top+=offsets[0],popper.left-=offsets[1]):"right"===basePlacement?(popper.top+=offsets[0],popper.left+=offsets[1]):"top"===basePlacement?(popper.left+=offsets[0],popper.top-=offsets[1]):"bottom"===basePlacement&&(popper.left+=offsets[0],popper.top+=offsets[1]),data.popper=popper,data},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(data,options){var boundariesElement=options.boundariesElement||getOffsetParent(data.instance.popper);data.instance.reference===boundariesElement&&(boundariesElement=getOffsetParent(boundariesElement));var transformProp=getSupportedPropertyName("transform"),popperStyles=data.instance.popper.style,top=popperStyles.top,left=popperStyles.left,transform=popperStyles[transformProp];popperStyles.top="",popperStyles.left="",popperStyles[transformProp]="";var boundaries=getBoundaries(data.instance.popper,data.instance.reference,options.padding,boundariesElement,data.positionFixed);popperStyles.top=top,popperStyles.left=left,popperStyles[transformProp]=transform,options.boundaries=boundaries;var order=options.priority,popper=data.offsets.popper,check={primary:function(placement){var value=popper[placement];return popper[placement]boundaries[placement]&&!options.escapeWithReference&&(value=Math.min(popper[mainSide],boundaries[placement]-("right"===placement?popper.width:popper.height))),defineProperty$1({},mainSide,value)}};return order.forEach((function(placement){var side=-1!==["left","top"].indexOf(placement)?"primary":"secondary";popper=_extends({},popper,check[side](placement))})),data.offsets.popper=popper,data},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(data){var _data$offsets=data.offsets,popper=_data$offsets.popper,reference=_data$offsets.reference,placement=data.placement.split("-")[0],floor=Math.floor,isVertical=-1!==["top","bottom"].indexOf(placement),side=isVertical?"right":"bottom",opSide=isVertical?"left":"top",measurement=isVertical?"width":"height";return popper[side]floor(reference[side])&&(data.offsets.popper[opSide]=floor(reference[side])),data}},arrow:{order:500,enabled:!0,fn:function(data,options){var _data$offsets$arrow;if(!isModifierRequired(data.instance.modifiers,"arrow","keepTogether"))return data;var arrowElement=options.element;if("string"==typeof arrowElement){if(!(arrowElement=data.instance.popper.querySelector(arrowElement)))return data}else if(!data.instance.popper.contains(arrowElement))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),data;var placement=data.placement.split("-")[0],_data$offsets=data.offsets,popper=_data$offsets.popper,reference=_data$offsets.reference,isVertical=-1!==["left","right"].indexOf(placement),len=isVertical?"height":"width",sideCapitalized=isVertical?"Top":"Left",side=sideCapitalized.toLowerCase(),altSide=isVertical?"left":"top",opSide=isVertical?"bottom":"right",arrowElementSize=getOuterSizes(arrowElement)[len];reference[opSide]-arrowElementSizepopper[opSide]&&(data.offsets.popper[side]+=reference[side]+arrowElementSize-popper[opSide]),data.offsets.popper=getClientRect(data.offsets.popper);var center=reference[side]+reference[len]/2-arrowElementSize/2,css=getStyleComputedProperty(data.instance.popper),popperMarginSide=parseFloat(css["margin"+sideCapitalized]),popperBorderSide=parseFloat(css["border"+sideCapitalized+"Width"]),sideValue=center-data.offsets.popper[side]-popperMarginSide-popperBorderSide;return sideValue=Math.max(Math.min(popper[len]-arrowElementSize,sideValue),0),data.arrowElement=arrowElement,data.offsets.arrow=(defineProperty$1(_data$offsets$arrow={},side,Math.round(sideValue)),defineProperty$1(_data$offsets$arrow,altSide,""),_data$offsets$arrow),data},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(data,options){if(isModifierEnabled(data.instance.modifiers,"inner"))return data;if(data.flipped&&data.placement===data.originalPlacement)return data;var boundaries=getBoundaries(data.instance.popper,data.instance.reference,options.padding,options.boundariesElement,data.positionFixed),placement=data.placement.split("-")[0],placementOpposite=getOppositePlacement(placement),variation=data.placement.split("-")[1]||"",flipOrder=[];switch(options.behavior){case BEHAVIORS_FLIP:flipOrder=[placement,placementOpposite];break;case BEHAVIORS_CLOCKWISE:flipOrder=clockwise(placement);break;case BEHAVIORS_COUNTERCLOCKWISE:flipOrder=clockwise(placement,!0);break;default:flipOrder=options.behavior}return flipOrder.forEach((function(step,index){if(placement!==step||flipOrder.length===index+1)return data;placement=data.placement.split("-")[0],placementOpposite=getOppositePlacement(placement);var popperOffsets=data.offsets.popper,refOffsets=data.offsets.reference,floor=Math.floor,overlapsRef="left"===placement&&floor(popperOffsets.right)>floor(refOffsets.left)||"right"===placement&&floor(popperOffsets.left)floor(refOffsets.top)||"bottom"===placement&&floor(popperOffsets.top)floor(boundaries.right),overflowsTop=floor(popperOffsets.top)floor(boundaries.bottom),overflowsBoundaries="left"===placement&&overflowsLeft||"right"===placement&&overflowsRight||"top"===placement&&overflowsTop||"bottom"===placement&&overflowsBottom,isVertical=-1!==["top","bottom"].indexOf(placement),flippedVariationByRef=!!options.flipVariations&&(isVertical&&"start"===variation&&overflowsLeft||isVertical&&"end"===variation&&overflowsRight||!isVertical&&"start"===variation&&overflowsTop||!isVertical&&"end"===variation&&overflowsBottom),flippedVariationByContent=!!options.flipVariationsByContent&&(isVertical&&"start"===variation&&overflowsRight||isVertical&&"end"===variation&&overflowsLeft||!isVertical&&"start"===variation&&overflowsBottom||!isVertical&&"end"===variation&&overflowsTop),flippedVariation=flippedVariationByRef||flippedVariationByContent;(overlapsRef||overflowsBoundaries||flippedVariation)&&(data.flipped=!0,(overlapsRef||overflowsBoundaries)&&(placement=flipOrder[index+1]),flippedVariation&&(variation=function(variation){return"end"===variation?"start":"start"===variation?"end":variation}(variation)),data.placement=placement+(variation?"-"+variation:""),data.offsets.popper=_extends({},data.offsets.popper,getPopperOffsets(data.instance.popper,data.offsets.reference,data.placement)),data=runModifiers(data.instance.modifiers,data,"flip"))})),data},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(data){var placement=data.placement,basePlacement=placement.split("-")[0],_data$offsets=data.offsets,popper=_data$offsets.popper,reference=_data$offsets.reference,isHoriz=-1!==["left","right"].indexOf(basePlacement),subtractLength=-1===["top","left"].indexOf(basePlacement);return popper[isHoriz?"left":"top"]=reference[basePlacement]-(subtractLength?popper[isHoriz?"width":"height"]:0),data.placement=getOppositePlacement(placement),data.offsets.popper=getClientRect(popper),data}},hide:{order:800,enabled:!0,fn:function(data){if(!isModifierRequired(data.instance.modifiers,"hide","preventOverflow"))return data;var refRect=data.offsets.reference,bound=find(data.instance.modifiers,(function(modifier){return"preventOverflow"===modifier.name})).boundaries;if(refRect.bottombound.right||refRect.top>bound.bottom||refRect.right2&&void 0!==arguments[2]?arguments[2]:{};!function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}(this,Popper),this.scheduleUpdate=function(){return requestAnimationFrame(_this.update)},this.update=debounce(this.update.bind(this)),this.options=_extends({},Popper.Defaults,options),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=reference&&reference.jquery?reference[0]:reference,this.popper=popper&&popper.jquery?popper[0]:popper,this.options.modifiers={},Object.keys(_extends({},Popper.Defaults.modifiers,options.modifiers)).forEach((function(name){_this.options.modifiers[name]=_extends({},Popper.Defaults.modifiers[name]||{},options.modifiers?options.modifiers[name]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(name){return _extends({name:name},_this.options.modifiers[name])})).sort((function(a,b){return a.order-b.order})),this.modifiers.forEach((function(modifierOptions){modifierOptions.enabled&&isFunction$1(modifierOptions.onLoad)&&modifierOptions.onLoad(_this.reference,_this.popper,_this.options,modifierOptions,_this.state)})),this.update();var eventsEnabled=this.options.eventsEnabled;eventsEnabled&&this.enableEventListeners(),this.state.eventsEnabled=eventsEnabled}return createClass(Popper,[{key:"update",value:function(){return update.call(this)}},{key:"destroy",value:function(){return destroy$1.call(this)}},{key:"enableEventListeners",value:function(){return enableEventListeners.call(this)}},{key:"disableEventListeners",value:function(){return disableEventListeners.call(this)}}]),Popper}();Popper.Utils=("undefined"!=typeof window?window:global).PopperUtils,Popper.placements=placements,Popper.Defaults=Defaults;var BvEvent=function(){function BvEvent(type){var eventInit=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(_classCallCheck(this,BvEvent),!type)throw new TypeError("Failed to construct '".concat(this.constructor.name,"'. 1 argument required, ").concat(arguments.length," given."));assign(this,BvEvent.Defaults,this.constructor.Defaults,eventInit,{type:type}),defineProperties(this,{type:{enumerable:!0,configurable:!1,writable:!1},cancelable:{enumerable:!0,configurable:!1,writable:!1},nativeEvent:{enumerable:!0,configurable:!1,writable:!1},target:{enumerable:!0,configurable:!1,writable:!1},relatedTarget:{enumerable:!0,configurable:!1,writable:!1},vueTarget:{enumerable:!0,configurable:!1,writable:!1},componentId:{enumerable:!0,configurable:!1,writable:!1}});var defaultPrevented=!1;this.preventDefault=function(){this.cancelable&&(defaultPrevented=!0)},defineProperty(this,"defaultPrevented",{enumerable:!0,get:function(){return defaultPrevented}})}return _createClass(BvEvent,null,[{key:"Defaults",get:function(){return{type:"",cancelable:!0,nativeEvent:null,target:null,relatedTarget:null,vueTarget:null,componentId:null}}}]),BvEvent}(),clickOutMixin={data:function(){return{listenForClickOut:!1}},watch:{listenForClickOut:function(newValue,oldValue){newValue!==oldValue&&(eventOff(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,EVENT_OPTIONS_NO_CAPTURE),newValue&&eventOn(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,EVENT_OPTIONS_NO_CAPTURE))}},beforeCreate:function(){this.clickOutElement=null,this.clickOutEventName=null},mounted:function(){this.clickOutElement||(this.clickOutElement=document),this.clickOutEventName||(this.clickOutEventName="click"),this.listenForClickOut&&eventOn(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,EVENT_OPTIONS_NO_CAPTURE)},beforeDestroy:function(){eventOff(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,EVENT_OPTIONS_NO_CAPTURE)},methods:{isClickOut:function(evt){return!contains(this.$el,evt.target)},_clickOutHandler:function(evt){this.clickOutHandler&&this.isClickOut(evt)&&this.clickOutHandler(evt)}}},focusInMixin={data:function(){return{listenForFocusIn:!1}},watch:{listenForFocusIn:function(newValue,oldValue){newValue!==oldValue&&(eventOff(this.focusInElement,"focusin",this._focusInHandler,EVENT_OPTIONS_NO_CAPTURE),newValue&&eventOn(this.focusInElement,"focusin",this._focusInHandler,EVENT_OPTIONS_NO_CAPTURE))}},beforeCreate:function(){this.focusInElement=null},mounted:function(){this.focusInElement||(this.focusInElement=document),this.listenForFocusIn&&eventOn(this.focusInElement,"focusin",this._focusInHandler,EVENT_OPTIONS_NO_CAPTURE)},beforeDestroy:function(){eventOff(this.focusInElement,"focusin",this._focusInHandler,EVENT_OPTIONS_NO_CAPTURE)},methods:{_focusInHandler:function(evt){this.focusInHandler&&this.focusInHandler(evt)}}},ROOT_DROPDOWN_SHOWN="".concat("bv::dropdown::","shown"),ROOT_DROPDOWN_HIDDEN="".concat("bv::dropdown::","hidden"),Selector={FORM_CHILD:".dropdown form",ITEM_SELECTOR:[".dropdown-item",".b-dropdown-form"].map((function(selector){return"".concat(selector,":not(.disabled):not([disabled])")})).join(", ")},AttachmentMap_TOP="top-start",AttachmentMap_TOPEND="top-end",AttachmentMap_BOTTOM="bottom-start",AttachmentMap_BOTTOMEND="bottom-end",AttachmentMap_RIGHT="right-start",AttachmentMap_LEFT="left-start",commonProps={dropup:{type:Boolean,default:!1},dropright:{type:Boolean,default:!1},dropleft:{type:Boolean,default:!1},right:{type:Boolean,default:!1},offset:{type:[Number,String],default:0},noFlip:{type:Boolean,default:!1},popperOpts:{default:function(){}},boundary:{type:[String,HTMLElement],default:"scrollParent"}},dropdownMixin={mixins:[idMixin,clickOutMixin,focusInMixin],provide:function(){return{bvDropdown:this}},inject:{bvNavbar:{default:null}},props:_objectSpread2({disabled:{type:Boolean,default:!1}},commonProps),data:function(){return{visible:!1,visibleChangePrevented:!1}},computed:{inNavbar:function(){return!isNull(this.bvNavbar)},toggler:function(){var toggle=this.$refs.toggle;return toggle?toggle.$el||toggle:null},directionClass:function(){return this.dropup?"dropup":this.dropright?"dropright":this.dropleft?"dropleft":""}},watch:{visible:function(newValue,oldValue){if(this.visibleChangePrevented)this.visibleChangePrevented=!1;else if(newValue!==oldValue){var evtName=newValue?"show":"hide",bvEvt=new BvEvent(evtName,{cancelable:!0,vueTarget:this,target:this.$refs.menu,relatedTarget:null,componentId:this.safeId?this.safeId():this.id||null});if(this.emitEvent(bvEvt),bvEvt.defaultPrevented)return this.visibleChangePrevented=!0,this.visible=oldValue,void this.$off("hidden",this.focusToggler);"show"===evtName?this.showMenu():this.hideMenu()}},disabled:function(newValue,oldValue){newValue!==oldValue&&newValue&&this.visible&&(this.visible=!1)}},created:function(){this.$_popper=null},deactivated:function(){this.visible=!1,this.whileOpenListen(!1),this.destroyPopper()},beforeDestroy:function(){this.visible=!1,this.whileOpenListen(!1),this.destroyPopper()},methods:{emitEvent:function(bvEvt){var type=bvEvt.type;this.$emit(type,bvEvt),this.$root.$emit("".concat("bv::dropdown::").concat(type),bvEvt)},showMenu:function(){var _this=this;if(!this.disabled){if(!this.inNavbar)if(void 0===Popper)warn("Popper.js not found. Falling back to CSS positioning","BDropdown");else{var el=this.dropup&&this.right||this.split?this.$el:this.$refs.toggle;el=el.$el||el,this.createPopper(el)}this.$root.$emit(ROOT_DROPDOWN_SHOWN,this),this.whileOpenListen(!0),this.$nextTick((function(){_this.focusMenu(),_this.$emit("shown")}))}},hideMenu:function(){this.whileOpenListen(!1),this.$root.$emit(ROOT_DROPDOWN_HIDDEN,this),this.$emit("hidden"),this.destroyPopper()},createPopper:function(element){this.destroyPopper(),this.$_popper=new Popper(element,this.$refs.menu,this.getPopperConfig())},destroyPopper:function(){this.$_popper&&this.$_popper.destroy(),this.$_popper=null},updatePopper:function(){try{this.$_popper.scheduleUpdate()}catch(_unused){}},getPopperConfig:function(){var placement=AttachmentMap_BOTTOM;this.dropup?placement=this.right?AttachmentMap_TOPEND:AttachmentMap_TOP:this.dropright?placement=AttachmentMap_RIGHT:this.dropleft?placement=AttachmentMap_LEFT:this.right&&(placement=AttachmentMap_BOTTOMEND);var popperConfig={placement:placement,modifiers:{offset:{offset:this.offset||0},flip:{enabled:!this.noFlip}}};return this.boundary&&(popperConfig.modifiers.preventOverflow={boundariesElement:this.boundary}),_objectSpread2(_objectSpread2({},popperConfig),this.popperOpts||{})},whileOpenListen:function(isOpen){this.listenForClickOut=isOpen,this.listenForFocusIn=isOpen;var method=isOpen?"$on":"$off";this.$root[method](ROOT_DROPDOWN_SHOWN,this.rootCloseListener)},rootCloseListener:function(vm){vm!==this&&(this.visible=!1)},show:function(){var _this2=this;this.disabled||requestAF((function(){_this2.visible=!0}))},hide:function(){var refocus=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.disabled||(this.visible=!1,refocus&&this.$once("hidden",this.focusToggler))},toggle:function(evt){var _evt=evt=evt||{},type=_evt.type,keyCode=_evt.keyCode;("click"===type||"keydown"===type&&-1!==[KEY_CODES.ENTER,KEY_CODES.SPACE,KEY_CODES.DOWN].indexOf(keyCode))&&(this.disabled?this.visible=!1:(this.$emit("toggle",evt),evt.preventDefault(),evt.stopPropagation(),this.visible?this.hide(!0):this.show()))},onMousedown:function(evt){evt.preventDefault()},onKeydown:function(evt){var keyCode=evt.keyCode;keyCode===KEY_CODES.ESC?this.onEsc(evt):keyCode===KEY_CODES.DOWN?this.focusNext(evt,!1):keyCode===KEY_CODES.UP&&this.focusNext(evt,!0)},onEsc:function(evt){this.visible&&(this.visible=!1,evt.preventDefault(),evt.stopPropagation(),this.$once("hidden",this.focusToggler))},onSplitClick:function(evt){this.disabled?this.visible=!1:this.$emit("click",evt)},hideHandler:function(evt){var target=evt.target;!this.visible||contains(this.$refs.menu,target)||contains(this.toggler,target)||this.hide()},clickOutHandler:function(evt){this.hideHandler(evt)},focusInHandler:function(evt){this.hideHandler(evt)},focusNext:function(evt,up){var _this3=this,target=evt.target;!this.visible||evt&&closest(Selector.FORM_CHILD,target)||(evt.preventDefault(),evt.stopPropagation(),this.$nextTick((function(){var items=_this3.getItems();if(!(items.length<1)){var index=items.indexOf(target);up&&index>0?index--:!up&&index1&&void 0!==arguments[1]?arguments[1]:null;if(isPlainObject(option)){var value=get(option,this.valueField),text=get(option,this.textField);return{value:isUndefined(value)?key||text:value,text:stripTags(String(isUndefined(text)?key:text)),html:get(option,this.htmlField),disabled:Boolean(get(option,this.disabledField))}}return{value:key||option,text:stripTags(String(option)),disabled:!1}},normalizeOptions:function(options){var _this=this;return isArray(options)?options.map((function(option){return _this.normalizeOption(option)})):isPlainObject(options)?(warn('Setting prop "options" to an object is deprecated. Use the array format instead.',this.$options.name),keys(options).map((function(key){return _this.normalizeOption(options[key]||{},key)}))):[]}}},BFormDatalist=Vue.extend({name:"BFormDatalist",mixins:[formOptionsMixin,normalizeSlotMixin],props:{id:{type:String,required:!0}},render:function(h){var $options=this.formOptions.map((function(option,index){var value=option.value,text=option.text,html=option.html,disabled=option.disabled;return h("option",{attrs:{value:value,disabled:disabled},domProps:htmlOrText(html,text),key:"option_".concat(index)})}));return h("datalist",{attrs:{id:this.id}},[$options,this.normalizeSlot("default")])}}),props$t={id:{type:String},tag:{type:String,default:"small"},textVariant:{type:String,default:function(){return getComponentConfig("BFormText","textVariant")}},inline:{type:Boolean,default:!1}},BFormText=Vue.extend({name:"BFormText",functional:!0,props:props$t,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{class:_defineProperty({"form-text":!props.inline},"text-".concat(props.textVariant),props.textVariant),attrs:{id:props.id}}),children)}}),props$u={id:{type:String},tag:{type:String,default:"div"},tooltip:{type:Boolean,default:!1},forceShow:{type:Boolean,default:!1},state:{type:Boolean,default:null},ariaLive:{type:String},role:{type:String}},BFormInvalidFeedback=Vue.extend({name:"BFormInvalidFeedback",functional:!0,props:props$u,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children,show=!0===props.forceShow||!1===props.state;return h(props.tag,a(data,{class:{"invalid-feedback":!props.tooltip,"invalid-tooltip":props.tooltip,"d-block":show},attrs:{id:props.id||null,role:props.role||null,"aria-live":props.ariaLive||null,"aria-atomic":props.ariaLive?"true":null}}),children)}}),props$v={id:{type:String},tag:{type:String,default:"div"},tooltip:{type:Boolean,default:!1},forceShow:{type:Boolean,default:!1},state:{type:Boolean,default:null},ariaLive:{type:String},role:{type:String}},BFormValidFeedback=Vue.extend({name:"BFormValidFeedback",functional:!0,props:props$v,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children,show=!0===props.forceShow||!0===props.state;return h(props.tag,a(data,{class:{"valid-feedback":!props.tooltip,"valid-tooltip":props.tooltip,"d-block":show},attrs:{id:props.id||null,role:props.role||null,"aria-live":props.ariaLive||null,"aria-atomic":props.ariaLive?"true":null}}),children)}}),props$w={tag:{type:String,default:"div"}},BFormRow=Vue.extend({name:"BFormRow",functional:!0,props:props$w,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{staticClass:"form-row"}),children)}}),FormPlugin=pluginFactory({components:{BForm:BForm,BFormDatalist:BFormDatalist,BDatalist:BFormDatalist,BFormText:BFormText,BFormInvalidFeedback:BFormInvalidFeedback,BFormFeedback:BFormInvalidFeedback,BFormValidFeedback:BFormValidFeedback,BFormRow:BFormRow}}),looseIndexOf=function(arr,val){for(var i=0;i-1:looseEqual(checked,value)},isRadio:function(){return!1},isCheck:function(){return!0}},watch:{computedLocalChecked:function(newVal){this.$emit("input",newVal),this.$refs&&this.$refs.input&&this.$emit("update:indeterminate",this.$refs.input.indeterminate)},indeterminate:function(newVal){this.setIndeterminate(newVal)}},mounted:function(){this.setIndeterminate(this.indeterminate)},methods:{handleChange:function(_ref){var _ref$target=_ref.target,checked=_ref$target.checked,indeterminate=_ref$target.indeterminate,localChecked=this.computedLocalChecked,value=this.value,isArr=isArray(localChecked),uncheckedValue=isArr?null:this.uncheckedValue;if(isArr){var idx=looseIndexOf(localChecked,value);checked&&idx<0?localChecked=localChecked.concat(value):!checked&&idx>-1&&(localChecked=localChecked.slice(0,idx).concat(localChecked.slice(idx+1)))}else localChecked=checked?value:uncheckedValue;this.computedLocalChecked=localChecked,this.$emit("change",checked?value:uncheckedValue),this.isGroup&&this.bvGroup.$emit("change",localChecked),this.$emit("update:indeterminate",indeterminate)},setIndeterminate:function(state){isArray(this.computedLocalChecked)&&(state=!1),this.$refs&&this.$refs.input&&(this.$refs.input.indeterminate=state,this.$emit("update:indeterminate",state))}}}),BFormRadio=Vue.extend({name:"BFormRadio",mixins:[idMixin,formRadioCheckMixin,formMixin,formSizeMixin,formStateMixin],inject:{bvGroup:{from:"bvRadioGroup",default:!1}},props:{checked:{default:null}},computed:{isChecked:function(){return looseEqual(this.value,this.computedLocalChecked)},isRadio:function(){return!0},isCheck:function(){return!1}},watch:{computedLocalChecked:function(){this.$emit("input",this.computedLocalChecked)}},methods:{handleChange:function(_ref){var checked=_ref.target.checked,value=this.value;this.computedLocalChecked=value,this.$emit("change",checked?value:null),this.isGroup&&this.bvGroup.$emit("change",checked?value:null)}}}),formRadioCheckGroupMixin={mixins:[normalizeSlotMixin],model:{prop:"checked",event:"input"},props:{validated:{type:Boolean,default:!1},ariaInvalid:{type:[Boolean,String],default:!1},stacked:{type:Boolean,default:!1},plain:{type:Boolean,default:!1},buttons:{type:Boolean,default:!1},buttonVariant:{type:String,default:"secondary"}},computed:{inline:function(){return!this.stacked},groupName:function(){return this.name||this.safeId()},groupClasses:function(){return this.buttons?["btn-group-toggle",this.inline?"btn-group":"btn-group-vertical",this.size?"btn-group-".concat(this.size):"",this.validated?"was-validated":""]:[this.validated?"was-validated":""]},computedAriaInvalid:function(){var ariaInvalid=this.ariaInvalid;return!0===ariaInvalid||"true"===ariaInvalid||""===ariaInvalid||!1===this.computedState?"true":null}},watch:{checked:function(newVal){this.localChecked=newVal},localChecked:function(newVal,oldVal){looseEqual(newVal,oldVal)||this.$emit("input",newVal)}},render:function(h){var _this=this,$inputs=this.formOptions.map((function(option,index){var key="BV_option_".concat(index);return h(_this.isRadioGroup?BFormRadio:BFormCheckbox,{props:{id:_this.safeId(key),value:option.value,disabled:option.disabled||!1},key:key},[h("span",{domProps:htmlOrText(option.html,option.text)})])}));return h("div",{class:[this.groupClasses,"bv-no-focus-ring"],attrs:{id:this.safeId(),role:this.isRadioGroup?"radiogroup":"group",tabindex:"-1","aria-required":this.required?"true":null,"aria-invalid":this.computedAriaInvalid}},[this.normalizeSlot("first"),$inputs,this.normalizeSlot("default")])}},props$x={switches:{type:Boolean,default:!1},checked:{type:Array,default:null}},BFormCheckboxGroup=Vue.extend({name:"BFormCheckboxGroup",mixins:[idMixin,formMixin,formRadioCheckGroupMixin,formOptionsMixin,formSizeMixin,formStateMixin],provide:function(){return{bvCheckGroup:this}},props:props$x,data:function(){return{localChecked:this.checked||[]}},computed:{isRadioGroup:function(){return!1}}}),FormCheckboxPlugin=pluginFactory({components:{BFormCheckbox:BFormCheckbox,BCheckbox:BFormCheckbox,BCheck:BFormCheckbox,BFormCheckboxGroup:BFormCheckboxGroup,BCheckboxGroup:BFormCheckboxGroup,BCheckGroup:BFormCheckboxGroup}}),PROP="__BV_hover_handler__",updateListeners=function(on,el,listener){eventOnOff(on,el,"mouseenter",listener,EVENT_OPTIONS_NO_CAPTURE),eventOnOff(on,el,"mouseleave",listener,EVENT_OPTIONS_NO_CAPTURE)},directive=function(el,_ref){var _ref$value=_ref.value,handler=void 0===_ref$value?null:_ref$value;if(isBrowser){var listener=el[PROP],hasListener=isFunction(listener),handlerChanged=!(hasListener&&listener.fn===handler);hasListener&&handlerChanged&&(updateListeners(!1,el,listener),delete el[PROP]),isFunction(handler)&&handlerChanged&&(el[PROP]=function(handler){var listener=function(evt){handler("mouseenter"===evt.type,evt)};return listener.fn=handler,listener}(handler),updateListeners(!0,el,el[PROP]))}},VBHover={bind:directive,componentUpdated:directive,unbind:function(el){directive(el,{value:null})}},dropdownProps=commonProps,BVFormBtnLabelControl=Vue.extend({name:"BVFormBtnLabelControl",directives:{BHover:VBHover},mixins:[idMixin,normalizeSlotMixin,dropdownMixin],props:{value:{type:String,default:""},formattedValue:{type:String},placeholder:{type:String},labelSelected:{type:String},state:{type:Boolean,default:null},size:{type:String},name:{type:String},form:{type:String},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},lang:{type:String},rtl:{type:Boolean,default:null},buttonOnly:{type:Boolean,default:!1},buttonVariant:{type:String,default:"secondary"},menuClass:{type:[String,Array,Object]}},data:function(){return{isHovered:!1,hasFocus:!1}},computed:{idButton:function(){return this.safeId()},idLabel:function(){return this.safeId("_value_")},idMenu:function(){return this.safeId("_dialog_")},idWrapper:function(){return this.safeId("_outer_")},computedDir:function(){return!0===this.rtl?"rtl":!1===this.rtl?"ltr":null}},methods:{focus:function(){this.disabled||attemptFocus(this.$refs.toggle)},blur:function(){this.disabled||attemptBlur(this.$refs.toggle)},setFocus:function(evt){this.hasFocus="focus"===evt.type},handleHover:function(hovered){this.isHovered=hovered},stopEvent:function(evt){evt.stopPropagation()}},render:function(h){var _class,_class2,_ref,idButton=this.idButton,idLabel=this.idLabel,idMenu=this.idMenu,idWrapper=this.idWrapper,disabled=this.disabled,readonly=this.readonly,required=this.required,isHovered=this.isHovered,hasFocus=this.hasFocus,state=this.state,visible=this.visible,size=this.size,value=toString$1(this.value)||"",labelSelected=this.labelSelected,buttonOnly=!!this.buttonOnly,buttonVariant=this.buttonVariant,btnScope={isHovered:isHovered,hasFocus:hasFocus,state:state,opened:visible},$button=h("button",{ref:"toggle",staticClass:"btn",class:(_class={},_defineProperty(_class,"btn-".concat(buttonVariant),buttonOnly),_defineProperty(_class,"btn-".concat(size),!!size),_defineProperty(_class,"h-auto",!buttonOnly),_defineProperty(_class,"dropdown-toggle",buttonOnly),_defineProperty(_class,"dropdown-toggle-no-caret",buttonOnly),_class),attrs:{id:idButton,type:"button",disabled:disabled,"aria-haspopup":"dialog","aria-expanded":visible?"true":"false","aria-invalid":!1===state||required&&!value?"true":null,"aria-required":required?"true":null},directives:[{name:"b-hover",value:this.handleHover}],on:{mousedown:this.onMousedown,click:this.toggle,keydown:this.toggle,"!focus":this.setFocus,"!blur":this.setFocus}},[this.hasNormalizedSlot("button-content")?this.normalizeSlot("button-content",btnScope):h(BIconChevronDown,{props:{scale:1.25}})]),$hidden=h();this.name&&!disabled&&($hidden=h("input",{attrs:{type:"hidden",name:this.name||null,form:this.form||null,value:value}}));var $menu=h("div",{ref:"menu",staticClass:"dropdown-menu",class:[this.menuClass,{show:visible,"dropdown-menu-right":this.right}],attrs:{id:idMenu,role:"dialog",tabindex:"-1","aria-modal":"false","aria-labelledby":idLabel},on:{keydown:this.onKeydown}},[this.normalizeSlot("default",{opened:visible})]),$label=h("label",{staticClass:"form-control text-break text-wrap bg-transparent h-auto",class:(_class2={"sr-only":buttonOnly,"text-muted":!value},_defineProperty(_class2,"form-control-".concat(size),!!size),_defineProperty(_class2,"is-invalid",!1===state),_defineProperty(_class2,"is-valid",!0===state),_class2),attrs:{id:idLabel,for:idButton,"aria-invalid":!1===state||required&&!value?"true":null,"aria-required":required?"true":null},directives:[{name:"b-hover",value:this.handleHover}],on:{"!click":this.stopEvent}},[value?this.formattedValue||value:this.placeholder||"",value&&labelSelected?h("bdi",{staticClass:"sr-only"},labelSelected):""]);return h("div",{staticClass:"b-form-btn-label-control dropdown",class:[this.directionClass,(_ref={"btn-group":buttonOnly,"form-control":!buttonOnly},_defineProperty(_ref,"form-control-".concat(size),!!size&&!buttonOnly),_defineProperty(_ref,"d-flex",!buttonOnly),_defineProperty(_ref,"h-auto",!buttonOnly),_defineProperty(_ref,"align-items-stretch",!buttonOnly),_defineProperty(_ref,"focus",hasFocus&&!buttonOnly),_defineProperty(_ref,"show",visible),_defineProperty(_ref,"is-valid",!0===state),_defineProperty(_ref,"is-invalid",!1===state),_ref)],attrs:{id:idWrapper,role:buttonOnly?null:"group",lang:this.lang||null,dir:this.computedDir,"aria-disabled":disabled,"aria-readonly":readonly&&!disabled,"aria-labelledby":idLabel,"aria-invalid":!1===state||required&&!value?"true":null,"aria-required":required?"true":null}},[$button,$hidden,$menu,$label])}}),NAME$h="BFormDatepicker",getConfigFallback=function(prop){return getComponentConfig(NAME$h,prop)||getComponentConfig("BCalendar",prop)},propsMixin={props:_objectSpread2({value:{type:[String,Date],default:null},valueAsDate:{type:Boolean,default:!1},resetValue:{type:[String,Date]},initialDate:{type:[String,Date]},placeholder:{type:String},size:{type:String},min:{type:[String,Date]},max:{type:[String,Date]},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{type:String},form:{type:String},state:{type:Boolean,default:null},dateDisabledFn:{type:Function},noCloseOnSelect:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},showDecadeNav:{type:Boolean,default:!1},locale:{type:[String,Array]},startWeekday:{type:[Number,String],default:0},direction:{type:String},buttonOnly:{type:Boolean,default:!1},buttonVariant:{type:String,default:"secondary"},calendarWidth:{type:String,default:"270px"},selectedVariant:{type:String,default:"primary"},todayVariant:{type:String},noHighlightToday:{type:Boolean,default:!1},todayButton:{type:Boolean,default:!1},labelTodayButton:{type:String,default:function(){return getComponentConfig(NAME$h,"labelTodayButton")}},todayButtonVariant:{type:String,default:"outline-primary"},resetButton:{type:Boolean,default:!1},labelResetButton:{type:String,default:function(){return getComponentConfig(NAME$h,"labelResetButton")}},resetButtonVariant:{type:String,default:"outline-danger"},closeButton:{type:Boolean,default:!1},labelCloseButton:{type:String,default:function(){return getComponentConfig(NAME$h,"labelCloseButton")}},closeButtonVariant:{type:String,default:"outline-secondary"},dateInfoFn:{type:Function},labelPrevDecade:{type:String,default:function(){return getConfigFallback("labelPrevDecade")}},labelPrevYear:{type:String,default:function(){return getConfigFallback("labelPrevYear")}},labelPrevMonth:{type:String,default:function(){return getConfigFallback("labelPrevMonth")}},labelCurrentMonth:{type:String,default:function(){return getConfigFallback("labelCurrentMonth")}},labelNextMonth:{type:String,default:function(){return getConfigFallback("labelNextMonth")}},labelNextYear:{type:String,default:function(){return getConfigFallback("labelNextYear")}},labelNextDecade:{type:String,default:function(){return getConfigFallback("labelNextDecade")}},labelToday:{type:String,default:function(){return getConfigFallback("labelToday")}},labelSelected:{type:String,default:function(){return getConfigFallback("labelSelected")}},labelNoDateSelected:{type:String,default:function(){return getConfigFallback("labelNoDateSelected")}},labelCalendar:{type:String,default:function(){return getConfigFallback("labelCalendar")}},labelNav:{type:String,default:function(){return getConfigFallback("labelNav")}},labelHelp:{type:String,default:function(){return getConfigFallback("labelHelp")}},dateFormatOptions:{type:Object,default:function(){return{year:"numeric",month:"long",day:"numeric",weekday:"long"}}},weekdayHeaderFormat:{type:String,default:"short",validator:function(value){return arrayIncludes(["long","short","narrow"],value)}},dark:{type:Boolean,default:!1},menuClass:{type:[String,Array,Object]}},dropdownProps)},BFormDatepicker=Vue.extend({name:NAME$h,mixins:[idMixin,propsMixin],model:{prop:"value",event:"input"},data:function(){return{localYMD:formatYMD(this.value)||"",isVisible:!1,localLocale:null,isRTL:!1,formattedValue:"",activeYMD:""}},computed:{calendarYM:function(){return this.activeYMD.slice(0,-3)},calendarProps:function(){return{hidden:!this.isVisible,value:this.localYMD,min:this.min,max:this.max,initialDate:this.initialDate,readonly:this.readonly,disabled:this.disabled,locale:this.locale,startWeekday:this.startWeekday,direction:this.direction,width:this.calendarWidth,dateDisabledFn:this.dateDisabledFn,selectedVariant:this.selectedVariant,todayVariant:this.todayVariant,dateInfoFn:this.dateInfoFn,hideHeader:this.hideHeader,showDecadeNav:this.showDecadeNav,noHighlightToday:this.noHighlightToday,labelPrevDecade:this.labelPrevDecade,labelPrevYear:this.labelPrevYear,labelPrevMonth:this.labelPrevMonth,labelCurrentMonth:this.labelCurrentMonth,labelNextMonth:this.labelNextMonth,labelNextYear:this.labelNextYear,labelNextDecade:this.labelNextDecade,labelToday:this.labelToday,labelSelected:this.labelSelected,labelNoDateSelected:this.labelNoDateSelected,labelCalendar:this.labelCalendar,labelNav:this.labelNav,labelHelp:this.labelHelp,dateFormatOptions:this.dateFormatOptions,weekdayHeaderFormat:this.weekdayHeaderFormat}},computedLang:function(){return(this.localLocale||"").replace(/-u-.*$/i,"")||null},computedResetValue:function(){return formatYMD(constrainDate(this.resetValue))||""}},watch:{value:function(newVal){this.localYMD=formatYMD(newVal)||""},localYMD:function(newVal){this.isVisible&&this.$emit("input",this.valueAsDate?parseYMD(newVal)||null:newVal||"")},calendarYM:function(newVal,oldVal){if(newVal!==oldVal&&oldVal)try{this.$refs.control.updatePopper()}catch(_unused){}}},methods:{focus:function(){this.disabled||attemptFocus(this.$refs.control)},blur:function(){this.disabled||attemptBlur(this.$refs.control)},setAndClose:function(ymd){var _this=this;this.localYMD=ymd,this.noCloseOnSelect||this.$nextTick((function(){_this.$refs.control.hide(!0)}))},onSelected:function(ymd){var _this2=this;this.$nextTick((function(){_this2.setAndClose(ymd)}))},onInput:function(ymd){this.localYMD!==ymd&&(this.localYMD=ymd)},onContext:function(ctx){var activeYMD=ctx.activeYMD,isRTL=ctx.isRTL,locale=ctx.locale,selectedYMD=ctx.selectedYMD,selectedFormatted=ctx.selectedFormatted;this.isRTL=isRTL,this.localLocale=locale,this.formattedValue=selectedFormatted,this.localYMD=selectedYMD,this.activeYMD=activeYMD,this.$emit("context",ctx)},onTodayButton:function(){this.setAndClose(formatYMD(constrainDate(createDate(),this.min,this.max)))},onResetButton:function(){this.setAndClose(this.computedResetValue)},onCloseButton:function(){this.$refs.control.hide(!0)},onShow:function(){this.isVisible=!0},onShown:function(){var _this3=this;this.$nextTick((function(){attemptFocus(_this3.$refs.calendar),_this3.$emit("shown")}))},onHidden:function(){this.isVisible=!1,this.$emit("hidden")},defaultButtonFn:function(_ref){var isHovered=_ref.isHovered,hasFocus=_ref.hasFocus;return this.$createElement(isHovered||hasFocus?BIconCalendarFill:BIconCalendar,{attrs:{"aria-hidden":"true"}})}},render:function(h){var $scopedSlots=this.$scopedSlots,localYMD=this.localYMD,disabled=this.disabled,readonly=this.readonly,placeholder=isUndefinedOrNull(this.placeholder)?this.labelNoDateSelected:this.placeholder,$footer=[];if(this.todayButton){var label=this.labelTodayButton;$footer.push(h(BButton,{props:{size:"sm",disabled:disabled||readonly,variant:this.todayButtonVariant},attrs:{"aria-label":label||null},on:{click:this.onTodayButton}},label))}if(this.resetButton){var _label=this.labelResetButton;$footer.push(h(BButton,{props:{size:"sm",disabled:disabled||readonly,variant:this.resetButtonVariant},attrs:{"aria-label":_label||null},on:{click:this.onResetButton}},_label))}if(this.closeButton){var _label2=this.labelCloseButton;$footer.push(h(BButton,{props:{size:"sm",disabled:disabled,variant:this.closeButtonVariant},attrs:{"aria-label":_label2||null},on:{click:this.onCloseButton}},_label2))}$footer.length>0&&($footer=[h("div",{staticClass:"b-form-date-controls d-flex flex-wrap",class:{"justify-content-between":$footer.length>1,"justify-content-end":$footer.length<2}},$footer)]);var $calendar=h(BCalendar,{key:"calendar",ref:"calendar",staticClass:"b-form-date-calendar w-100",props:this.calendarProps,on:{selected:this.onSelected,input:this.onInput,context:this.onContext},scopedSlots:pick($scopedSlots,["nav-prev-decade","nav-prev-year","nav-prev-month","nav-this-month","nav-next-month","nav-next-year","nav-next-decade"])},$footer);return h(BVFormBtnLabelControl,{ref:"control",staticClass:"b-form-datepicker",props:_objectSpread2(_objectSpread2({},this.$props),{},{id:this.safeId(),rtl:this.isRTL,lang:this.computedLang,value:localYMD||"",formattedValue:localYMD?this.formattedValue:"",placeholder:placeholder||"",menuClass:[{"bg-dark":!!this.dark,"text-light":!!this.dark},this.menuClass]}),on:{show:this.onShow,shown:this.onShown,hidden:this.onHidden},scopedSlots:{"button-content":$scopedSlots["button-content"]||this.defaultButtonFn}},[$calendar])}}),FormDatepickerPlugin=pluginFactory({components:{BFormDatepicker:BFormDatepicker,BDatepicker:BFormDatepicker}}),formCustomMixin={props:{plain:{type:Boolean,default:!1}},computed:{custom:function(){return!this.plain}}},NAME$i="BFormFile",isValidValue=function isValidValue(value){return value instanceof File||isArray(value)&&value.every((function(v){return isValidValue(v)}))},BFormFile=Vue.extend({name:NAME$i,mixins:[attrsMixin,idMixin,formMixin,formStateMixin,formCustomMixin,normalizeSlotMixin],inheritAttrs:!1,model:{prop:"value",event:"input"},props:{size:{type:String,default:function(){return getComponentConfig("BFormControl","size")}},value:{type:[File,Array],default:null,validator:function(value){return""===value?(warn('Setting "value"/"v-model" to an empty string for reset is deprecated. Set to "null" instead.',NAME$i),!0):isUndefinedOrNull(value)||isValidValue(value)}},accept:{type:String,default:""},capture:{type:Boolean,default:!1},placeholder:{type:String,default:function(){return getComponentConfig(NAME$i,"placeholder")}},browseText:{type:String,default:function(){return getComponentConfig(NAME$i,"browseText")}},dropPlaceholder:{type:String,default:function(){return getComponentConfig(NAME$i,"dropPlaceholder")}},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},noTraverse:{type:Boolean,default:!1},noDrop:{type:Boolean,default:!1},fileNameFormatter:{type:Function,default:null}},data:function(){return{selectedFile:null,dragging:!1,hasFocus:!1}},computed:{selectLabel:function(){if(this.dragging&&this.dropPlaceholder)return this.dropPlaceholder;if(!this.selectedFile||0===this.selectedFile.length)return this.placeholder;var files=concat(this.selectedFile).filter(identity);return this.hasNormalizedSlot("file-name")?[this.normalizeSlot("file-name",{files:files,names:files.map((function(f){return f.name}))})]:isFunction(this.fileNameFormatter)?toString$1(this.fileNameFormatter(files)):files.map((function(file){return file.name})).join(", ")},computedAttrs:function(){return _objectSpread2(_objectSpread2({},this.bvAttrs),{},{type:"file",id:this.safeId(),name:this.name,disabled:this.disabled,required:this.required,form:this.form||null,capture:this.capture||null,accept:this.accept||null,multiple:this.multiple,webkitdirectory:this.directory,"aria-required":this.required?"true":null})}},watch:{selectedFile:function(newVal,oldVal){newVal===oldVal||isArray(newVal)&&isArray(oldVal)&&newVal.length===oldVal.length&&newVal.every((function(v,i){return v===oldVal[i]}))||(!newVal&&this.multiple?this.$emit("input",[]):this.$emit("input",newVal))},value:function(newVal){(!newVal||isArray(newVal)&&0===newVal.length)&&this.reset()}},methods:{focusHandler:function(evt){this.plain||"focusout"===evt.type?this.hasFocus=!1:this.hasFocus=!0},reset:function(){try{var $input=this.$refs.input;$input.value="",$input.type="",$input.type="file"}catch(e){}this.selectedFile=this.multiple?[]:null},onFileChange:function(evt){var _this=this;this.$emit("change",evt);var items=evt.dataTransfer&&evt.dataTransfer.items;if(!items||this.noTraverse)this.setFiles(evt.target.files||evt.dataTransfer.files);else{for(var queue=[],i=0;i0&&void 0!==arguments[0]?arguments[0]:[];if(files)if(this.multiple){for(var filesArray=[],i=0;i0&&this.onFileChange(evt))},traverseFileTree:function(item,path){var _this2=this;return new Promise((function(resolve){path=path||"",item.isFile?item.file((function(file){file.$path=path,resolve(file)})):item.isDirectory&&item.createReader().readEntries((function(entries){for(var queue=[],i=0;i=1&&charCode<=31||0===index&&charCode>=48&&charCode<=57||1===index&&charCode>=48&&charCode<=57&&45===firstCharCode?result+escapeChar("".concat(charCode.toString(16)," ")):0===index&&45===charCode&&1===length?result+escapeChar(char):charCode>=128||45===charCode||95===charCode||charCode>=48&&charCode<=57||charCode>=65&&charCode<=90||charCode>=97&&charCode<=122?result+char:result+escapeChar(char)}),"")},RX_COL_CLASS=/^col-/,strNum=function(){return{type:[String,Number],default:null}},computeBreakpointClass=memoize((function(type,breakpoint,val){var className=type;if(!isUndefinedOrNull(val)&&!1!==val)return breakpoint&&(className+="-".concat(breakpoint)),"col"!==type||""!==val&&!0!==val?(className+="-".concat(val),lowerCase(className)):lowerCase(className)})),breakpointPropMap=create(null),generateProps=function(){var breakpoints=getBreakpointsUpCached().filter(identity),breakpointCol=breakpoints.reduce((function(propMap,breakpoint){return breakpoint&&(propMap[breakpoint]={type:[Boolean,String,Number],default:!1}),propMap}),create(null)),breakpointOffset=breakpoints.reduce((function(propMap,breakpoint){return propMap[suffixPropName(breakpoint,"offset")]=strNum(),propMap}),create(null)),breakpointOrder=breakpoints.reduce((function(propMap,breakpoint){return propMap[suffixPropName(breakpoint,"order")]=strNum(),propMap}),create(null));return breakpointPropMap=assign(create(null),{col:keys(breakpointCol),offset:keys(breakpointOffset),order:keys(breakpointOrder)}),_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({col:{type:Boolean,default:!1},cols:strNum()},breakpointCol),{},{offset:strNum()},breakpointOffset),{},{order:strNum()},breakpointOrder),{},{alignSelf:{type:String,default:null,validator:function(str){return arrayIncludes(["auto","start","end","center","baseline","stretch"],str)}},tag:{type:String,default:"div"}})},BCol={name:"BCol",functional:!0,get props(){return delete this.props,this.props=generateProps()},render:function(h,_ref){var _classList$push,props=_ref.props,data=_ref.data,children=_ref.children,classList=[];for(var type in breakpointPropMap)for(var _keys=breakpointPropMap[type],i=0;i<_keys.length;i++){var c=computeBreakpointClass(type,_keys[i].replace(type,""),props[_keys[i]]);c&&classList.push(c)}var hasColClasses=classList.some((function(className){return RX_COL_CLASS.test(className)}));return classList.push((_defineProperty(_classList$push={col:props.col||!hasColClasses&&!props.cols},"col-".concat(props.cols),props.cols),_defineProperty(_classList$push,"offset-".concat(props.offset),props.offset),_defineProperty(_classList$push,"order-".concat(props.order),props.order),_defineProperty(_classList$push,"align-self-".concat(props.alignSelf),props.alignSelf),_classList$push)),h(props.tag,a(data,{class:classList}),children)}},renderInvalidFeedback=function(h,ctx){var content=ctx.normalizeSlot("invalid-feedback")||ctx.invalidFeedback,invalidFeedback=h();return content&&(invalidFeedback=h(BFormInvalidFeedback,{props:{id:ctx.invalidFeedbackId,state:ctx.computedState,tooltip:ctx.tooltip,ariaLive:ctx.feedbackAriaLive,role:ctx.feedbackAriaLive?"alert":null},attrs:{tabindex:content?"-1":null}},[content])),invalidFeedback},renderValidFeedback=function(h,ctx){var content=ctx.normalizeSlot("valid-feedback")||ctx.validFeedback,validFeedback=h();return content&&(validFeedback=h(BFormValidFeedback,{props:{id:ctx.validFeedbackId,state:ctx.computedState,tooltip:ctx.tooltip,ariaLive:ctx.feedbackAriaLive,role:ctx.feedbackAriaLive?"alert":null},attrs:{tabindex:content?"-1":null}},[content])),validFeedback},renderHelpText=function(h,ctx){var content=ctx.normalizeSlot("description")||ctx.description,description=h();return content&&(description=h(BFormText,{attrs:{id:ctx.descriptionId,tabindex:content?"-1":null}},[content])),description},makePropName=memoize((function(){var breakpoint=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return"".concat(arguments.length>1?arguments[1]:void 0).concat(upperFirst(breakpoint))})),BFormGroup={name:"BFormGroup",mixins:[idMixin,formStateMixin,normalizeSlotMixin],get props(){return delete this.props,this.props=(BREAKPOINTS=getBreakpointsUpCached(),bpLabelColProps=BREAKPOINTS.reduce((function(props,breakpoint){return props[makePropName(breakpoint,"labelCols")]={type:[Number,String,Boolean],default:!breakpoint&&null},props}),create(null)),bpLabelAlignProps=BREAKPOINTS.reduce((function(props,breakpoint){return props[makePropName(breakpoint,"labelAlign")]={type:String},props}),create(null)),_objectSpread2(_objectSpread2(_objectSpread2({label:{type:String},labelFor:{type:String},labelSize:{type:String},labelSrOnly:{type:Boolean,default:!1}},bpLabelColProps),bpLabelAlignProps),{},{labelClass:{type:[String,Array,Object]},description:{type:String},invalidFeedback:{type:String},validFeedback:{type:String},tooltip:{type:Boolean,default:!1},feedbackAriaLive:{type:String,default:"assertive"},validated:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}}));var BREAKPOINTS,bpLabelColProps,bpLabelAlignProps},computed:{labelColProps:function(){var _this=this,props={};return getBreakpointsUpCached().forEach((function(breakpoint){var propVal=_this[makePropName(breakpoint,"labelCols")];if(isBoolean(propVal=""===propVal||(propVal||!1))||"auto"===propVal||(propVal=(propVal=toInteger(propVal,0))>0&&propVal),propVal){var bColPropName=breakpoint||(isBoolean(propVal)?"col":"cols");props[bColPropName]=propVal}})),props},labelAlignClasses:function(){var _this2=this,classes=[];return getBreakpointsUpCached().forEach((function(breakpoint){var propVal=_this2[makePropName(breakpoint,"labelAlign")]||null;if(propVal){var className=breakpoint?"text-".concat(breakpoint,"-").concat(propVal):"text-".concat(propVal);classes.push(className)}})),classes},isHorizontal:function(){return keys(this.labelColProps).length>0},labelId:function(){return this.hasNormalizedSlot("label")||this.label?this.safeId("_BV_label_"):null},descriptionId:function(){return this.hasNormalizedSlot("description")||this.description?this.safeId("_BV_description_"):null},hasInvalidFeedback:function(){return!1===this.computedState&&(this.hasNormalizedSlot("invalid-feedback")||this.invalidFeedback)},invalidFeedbackId:function(){return this.hasInvalidFeedback?this.safeId("_BV_feedback_invalid_"):null},hasValidFeedback:function(){return!0===this.computedState&&(this.hasNormalizedSlot("valid-feedback")||this.validFeedback)},validFeedbackId:function(){return this.hasValidFeedback?this.safeId("_BV_feedback_valid_"):null},describedByIds:function(){return[this.descriptionId,this.invalidFeedbackId,this.validFeedbackId].filter(Boolean).join(" ")||null}},watch:{describedByIds:function(add,remove){add!==remove&&this.setInputDescribedBy(add,remove)}},mounted:function(){var _this3=this;this.$nextTick((function(){_this3.setInputDescribedBy(_this3.describedByIds)}))},methods:{legendClick:function(evt){if(!this.labelFor){var tagName=evt.target?evt.target.tagName:"";if(!/^(input|select|textarea|label|button|a)$/i.test(tagName)){var inputs=selectAll("input:not([disabled]),textarea:not([disabled]),select:not([disabled])",this.$refs.content).filter(isVisible);inputs&&1===inputs.length&&attemptFocus(inputs[0])}}},setInputDescribedBy:function(add,remove){if(this.labelFor&&isBrowser){var input=select("#".concat(cssEscape(this.labelFor)),this.$refs.content);if(input){var adb="aria-describedby",ids=(getAttr(input,adb)||"").split(/\s+/);add=(add||"").split(/\s+/),remove=(remove||"").split(/\s+/),ids=ids.filter((function(id){return!arrayIncludes(remove,id)})).concat(add).filter(Boolean),(ids=keys(ids.reduce((function(memo,id){return _objectSpread2(_objectSpread2({},memo),{},_defineProperty({},id,!0))}),{})).join(" ").trim())?setAttr(input,adb,ids):removeAttr(input,adb)}}}},render:function(h){var isFieldset=!this.labelFor,isHorizontal=this.isHorizontal,label=function(h,ctx){var content=ctx.normalizeSlot("label")||ctx.label,labelFor=ctx.labelFor,isLegend=!labelFor,isHorizontal=ctx.isHorizontal,labelTag=isLegend?"legend":"label";if(content||isHorizontal){if(ctx.labelSrOnly){var label=h();return content&&(label=h(labelTag,{class:"sr-only",attrs:{id:ctx.labelId,for:labelFor||null}},[content])),h(isHorizontal?BCol:"div",{props:isHorizontal?ctx.labelColProps:{}},[label])}return h(isHorizontal?BCol:labelTag,{on:isLegend?{click:ctx.legendClick}:{},props:isHorizontal?_objectSpread2({tag:labelTag},ctx.labelColProps):{},attrs:{id:ctx.labelId,for:labelFor||null,tabindex:isLegend?"-1":null},class:[isLegend?"bv-no-focus-ring":"",isHorizontal||isLegend?"col-form-label":"",!isHorizontal&&isLegend?"pt-0":"",isHorizontal||isLegend?"":"d-block",ctx.labelSize?"col-form-label-".concat(ctx.labelSize):"",ctx.labelAlignClasses,ctx.labelClass]},[content])}return h()}(h,this),content=h(isHorizontal?BCol:"div",{ref:"content",staticClass:"bv-no-focus-ring",attrs:{tabindex:isFieldset?"-1":null,role:isFieldset?"group":null}},[this.normalizeSlot("default")||h(),renderInvalidFeedback(h,this),renderValidFeedback(h,this),renderHelpText(h,this)]),data={staticClass:"form-group",class:[this.validated?"was-validated":null,this.stateClass],attrs:{id:this.safeId(),disabled:isFieldset?this.disabled:null,role:isFieldset?null:"group","aria-invalid":!1===this.computedState?"true":null,"aria-labelledby":isFieldset&&isHorizontal?this.labelId:null,"aria-describedby":isFieldset?this.describedByIds:null}};return h(isFieldset?"fieldset":isHorizontal?BFormRow:"div",data,isHorizontal&&isFieldset?[h(BFormRow,[label,content])]:[label,content])}},FormGroupPlugin=pluginFactory({components:{BFormGroup:BFormGroup,BFormFieldset:BFormGroup}}),formSelectionMixin={computed:{selectionStart:{cache:!1,get:function(){return this.$refs.input.selectionStart},set:function(val){this.$refs.input.selectionStart=val}},selectionEnd:{cache:!1,get:function(){return this.$refs.input.selectionEnd},set:function(val){this.$refs.input.selectionEnd=val}},selectionDirection:{cache:!1,get:function(){return this.$refs.input.selectionDirection},set:function(val){this.$refs.input.selectionDirection=val}}},methods:{select:function(){var _this$$refs$input;(_this$$refs$input=this.$refs.input).select.apply(_this$$refs$input,arguments)},setSelectionRange:function(){var _this$$refs$input2;(_this$$refs$input2=this.$refs.input).setSelectionRange.apply(_this$$refs$input2,arguments)},setRangeText:function(){var _this$$refs$input3;(_this$$refs$input3=this.$refs.input).setRangeText.apply(_this$$refs$input3,arguments)}}},formTextMixin={model:{prop:"value",event:"update"},props:{value:{type:[String,Number],default:""},ariaInvalid:{type:[Boolean,String],default:!1},readonly:{type:Boolean,default:!1},plaintext:{type:Boolean,default:!1},autocomplete:{type:String},placeholder:{type:String},formatter:{type:Function},lazyFormatter:{type:Boolean,default:!1},trim:{type:Boolean,default:!1},number:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},debounce:{type:[Number,String],default:0}},data:function(){return{localValue:toString$1(this.value),vModelValue:this.value}},computed:{computedClass:function(){return[{"custom-range":"range"===this.type,"form-control-plaintext":this.plaintext&&"range"!==this.type&&"color"!==this.type,"form-control":!this.plaintext&&"range"!==this.type||"color"===this.type},this.sizeFormClass,this.stateClass]},computedAriaInvalid:function(){return this.ariaInvalid&&"false"!==this.ariaInvalid?!0===this.ariaInvalid?"true":this.ariaInvalid:!1===this.computedState?"true":null},computedDebounce:function(){return mathMax(toInteger(this.debounce,0),0)},hasFormatter:function(){return isFunction(this.formatter)}},watch:{value:function(newVal){var stringifyValue=toString$1(newVal);stringifyValue!==this.localValue&&newVal!==this.vModelValue&&(this.clearDebounce(),this.localValue=stringifyValue,this.vModelValue=newVal)}},created:function(){this.$_inputDebounceTimer=null},mounted:function(){this.$on("hook:beforeDestroy",this.clearDebounce);var value=this.value,stringifyValue=toString$1(value);stringifyValue!==this.localValue&&value!==this.vModelValue&&(this.localValue=stringifyValue,this.vModelValue=value)},methods:{clearDebounce:function(){clearTimeout(this.$_inputDebounceTimer),this.$_inputDebounceTimer=null},formatValue:function(value,evt){var force=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return value=toString$1(value),!this.hasFormatter||this.lazyFormatter&&!force||(value=this.formatter(value,evt)),value},modifyValue:function(value){return this.trim&&(value=value.trim()),this.number&&(value=toFloat(value,value)),value},updateValue:function(value){var _this=this,force=arguments.length>1&&void 0!==arguments[1]&&arguments[1],lazy=this.lazy;if(!lazy||force)if((value=this.modifyValue(value))!==this.vModelValue){this.clearDebounce();var doUpdate=function(){_this.vModelValue=value,_this.$emit("update",value)},debounce=this.computedDebounce;debounce>0&&!lazy&&!force?this.$_inputDebounceTimer=setTimeout(doUpdate,debounce):doUpdate()}else if(this.hasFormatter){var $input=this.$refs.input;$input&&value!==$input.value&&($input.value=value)}},onInput:function(evt){if(!evt.target.composing){var value=evt.target.value,formattedValue=this.formatValue(value,evt);!1===formattedValue||evt.defaultPrevented?evt.preventDefault():(this.localValue=formattedValue,this.updateValue(formattedValue),this.$emit("input",formattedValue))}},onChange:function(evt){var value=evt.target.value,formattedValue=this.formatValue(value,evt);!1===formattedValue||evt.defaultPrevented?evt.preventDefault():(this.localValue=formattedValue,this.updateValue(formattedValue,!0),this.$emit("change",formattedValue))},onBlur:function(evt){var value=evt.target.value,formattedValue=this.formatValue(value,evt,!0);!1!==formattedValue&&(this.localValue=toString$1(this.modifyValue(formattedValue)),this.updateValue(formattedValue,!0)),this.$emit("blur",evt)},focus:function(){this.disabled||attemptFocus(this.$el)},blur:function(){this.disabled||attemptBlur(this.$el)}}},formValidityMixin={computed:{validity:{cache:!1,get:function(){return this.$refs.input.validity}},validationMessage:{cache:!1,get:function(){return this.$refs.input.validationMessage}},willValidate:{cache:!1,get:function(){return this.$refs.input.willValidate}}},methods:{setCustomValidity:function(){var _this$$refs$input;return(_this$$refs$input=this.$refs.input).setCustomValidity.apply(_this$$refs$input,arguments)},checkValidity:function(){var _this$$refs$input2;return(_this$$refs$input2=this.$refs.input).checkValidity.apply(_this$$refs$input2,arguments)},reportValidity:function(){var _this$$refs$input3;return(_this$$refs$input3=this.$refs.input).reportValidity.apply(_this$$refs$input3,arguments)}}},TYPES=["text","password","email","number","url","tel","search","range","color","date","time","datetime","datetime-local","month","week"],BFormInput=Vue.extend({name:"BFormInput",mixins:[listenersMixin,idMixin,formMixin,formSizeMixin,formStateMixin,formTextMixin,formSelectionMixin,formValidityMixin],props:{type:{type:String,default:"text",validator:function(type){return arrayIncludes(TYPES,type)}},noWheel:{type:Boolean,default:!1},min:{type:[String,Number]},max:{type:[String,Number]},step:{type:[String,Number]},list:{type:String}},computed:{localType:function(){return arrayIncludes(TYPES,this.type)?this.type:"text"},computedAttrs:function(){var type=this.localType,disabled=this.disabled,placeholder=this.placeholder,required=this.required,min=this.min,max=this.max,step=this.step;return{id:this.safeId(),name:this.name||null,form:this.form||null,type:type,disabled:disabled,placeholder:placeholder,required:required,autocomplete:this.autocomplete||null,readonly:this.readonly||this.plaintext,min:min,max:max,step:step,list:"password"!==type?this.list:null,"aria-required":required?"true":null,"aria-invalid":this.computedAriaInvalid}},computedListeners:function(){return _objectSpread2(_objectSpread2({},this.bvListeners),{},{input:this.onInput,change:this.onChange,blur:this.onBlur})}},watch:{noWheel:function(newVal){this.setWheelStopper(newVal)}},mounted:function(){this.setWheelStopper(this.noWheel)},deactivated:function(){this.setWheelStopper(!1)},activated:function(){this.setWheelStopper(this.noWheel)},beforeDestroy:function(){this.setWheelStopper(!1)},methods:{setWheelStopper:function(on){var input=this.$el;eventOnOff(on,input,"focus",this.onWheelFocus),eventOnOff(on,input,"blur",this.onWheelBlur),on||eventOff(document,"wheel",this.stopWheel)},onWheelFocus:function(){eventOn(document,"wheel",this.stopWheel)},onWheelBlur:function(){eventOff(document,"wheel",this.stopWheel)},stopWheel:function(evt){evt.preventDefault(),attemptBlur(this.$el)}},render:function(h){return h("input",{ref:"input",class:this.computedClass,attrs:this.computedAttrs,domProps:{value:this.localValue},on:this.computedListeners})}}),FormInputPlugin=pluginFactory({components:{BFormInput:BFormInput,BInput:BFormInput}}),BFormRadioGroup=Vue.extend({name:"BFormRadioGroup",mixins:[idMixin,formMixin,formRadioCheckGroupMixin,formOptionsMixin,formSizeMixin,formStateMixin],provide:function(){return{bvRadioGroup:this}},props:{checked:{default:null}},data:function(){return{localChecked:this.checked}},computed:{isRadioGroup:function(){return!0}}}),FormRadioPlugin=pluginFactory({components:{BFormRadio:BFormRadio,BRadio:BFormRadio,BFormRadioGroup:BFormRadioGroup,BRadioGroup:BFormRadioGroup}}),LEFT$1=KEY_CODES.LEFT,RIGHT$1=KEY_CODES.RIGHT,UP$1=KEY_CODES.UP,DOWN$1=KEY_CODES.DOWN,BVFormRatingStar=Vue.extend({name:"BVFormRatingStar",mixins:[normalizeSlotMixin],props:{rating:{type:Number,default:0},star:{type:Number,default:0},focused:{type:Boolean,default:!1},variant:{type:String},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},hasClear:{type:Boolean,default:!1}},methods:{onClick:function(evt){this.disabled||this.readonly||(evt.preventDefault(),this.$emit("selected",this.star))}},render:function(h){var rating=this.rating,star=this.star,focused=this.focused,hasClear=this.hasClear,variant=this.variant,disabled=this.disabled,readonly=this.readonly,minStar=hasClear?0:1,type=rating>=star?"full":rating>=star-.5?"half":"empty",slotScope={variant:variant,disabled:disabled,readonly:readonly};return h("span",{staticClass:"b-rating-star",class:{focused:focused&&rating===star||!toInteger(rating)&&star===minStar,"b-rating-star-empty":"empty"===type,"b-rating-star-half":"half"===type,"b-rating-star-full":"full"===type},attrs:{tabindex:disabled||readonly?null:"-1"},on:{click:this.onClick}},[h("span",{staticClass:"b-rating-icon"},[this.normalizeSlot(type,slotScope)])])}}),computeStars=function(stars){return mathMax(3,toInteger(stars,5))},clampValue=function(value,min,max){return mathMax(mathMin(value,max),min)},BFormRating=Vue.extend({name:"BFormRating",components:{BIconStar:BIconStar,BIconStarHalf:BIconStarHalf,BIconStarFill:BIconStarFill,BIconX:BIconX},mixins:[idMixin],model:{prop:"value",event:"change"},props:{value:{type:[Number,String],default:null},stars:{type:[Number,String],default:5,validator:function(val){return toInteger(val)>=3}},variant:{type:String,default:function(){return getComponentConfig("BFormRating","variant")}},color:{type:String,default:function(){return getComponentConfig("BFormRating","color")}},showValue:{type:Boolean,default:!1},showValueMax:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},size:{type:String},name:{type:String},form:{type:String},noBorder:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},precision:{type:[Number,String],default:null},iconEmpty:{type:String,default:"star"},iconHalf:{type:String,default:"star-half"},iconFull:{type:String,default:"star-fill"},iconClear:{type:String,default:"x"},locale:{type:[String,Array]},showClear:{type:Boolean,default:!1}},data:function(){var value=toFloat(this.value,null),stars=computeStars(this.stars);return{localValue:isNull(value)?null:clampValue(value,0,stars),hasFocus:!1}},computed:{computedStars:function(){return computeStars(this.stars)},computedRating:function(){var value=toFloat(this.localValue,0),precision=toInteger(this.precision,3);return clampValue(toFloat(value.toFixed(precision)),0,this.computedStars)},computedLocale:function(){var locales=concat(this.locale).filter(identity);return new Intl.NumberFormat(locales).resolvedOptions().locale},isInteractive:function(){return!this.disabled&&!this.readonly},isRTL:function(){return isLocaleRTL(this.computedLocale)},formattedRating:function(){var precision=toInteger(this.precision),showValueMax=this.showValueMax,locale=this.computedLocale,formatOptions={notation:"standard",minimumFractionDigits:isNaN(precision)?0:precision,maximumFractionDigits:isNaN(precision)?3:precision},stars=this.computedStars.toLocaleString(locale),value=this.localValue;return value=isNull(value)?showValueMax?"-":"":value.toLocaleString(locale,formatOptions),showValueMax?"".concat(value,"/").concat(stars):value}},watch:{value:function(newVal,oldVal){if(newVal!==oldVal){var value=toFloat(newVal,null);this.localValue=isNull(value)?null:clampValue(value,0,this.computedStars)}},localValue:function(newVal,oldVal){newVal!==oldVal&&newVal!==(this.value||0)&&this.$emit("change",newVal||null)},disabled:function(newVal){newVal&&(this.hasFocus=!1,this.blur())}},methods:{focus:function(){this.disabled||attemptFocus(this.$el)},blur:function(){this.disabled||attemptBlur(this.$el)},onKeydown:function(evt){var keyCode=evt.keyCode;if(this.isInteractive&&arrayIncludes([LEFT$1,DOWN$1,RIGHT$1,UP$1],keyCode)){evt.preventDefault();var value=toInteger(this.localValue,0),min=this.showClear?0:1,stars=this.computedStars,amountRtl=this.isRTL?-1:1;keyCode===LEFT$1?this.localValue=clampValue(value-amountRtl,min,stars)||null:keyCode===RIGHT$1?this.localValue=clampValue(value+amountRtl,min,stars):keyCode===DOWN$1?this.localValue=clampValue(value-1,min,stars)||null:keyCode===UP$1&&(this.localValue=clampValue(value+1,min,stars))}},onSelected:function(value){this.isInteractive&&(this.localValue=value)},onFocus:function(evt){this.hasFocus=!!this.isInteractive&&"focus"===evt.type},renderIcon:function(icon){return this.$createElement(BIcon,{props:{icon:icon,variant:this.disabled||this.color?null:this.variant||null}})},iconEmptyFn:function(){return this.renderIcon(this.iconEmpty)},iconHalfFn:function(){return this.renderIcon(this.iconHalf)},iconFullFn:function(){return this.renderIcon(this.iconFull)},iconClearFn:function(){return this.$createElement(BIcon,{props:{icon:this.iconClear}})}},render:function(h){var _class,_this=this,disabled=this.disabled,readonly=this.readonly,size=this.size,name=this.name,form=this.form,inline=this.inline,variant=this.variant,color=this.color,noBorder=this.noBorder,hasFocus=this.hasFocus,computedRating=this.computedRating,computedStars=this.computedStars,formattedRating=this.formattedRating,showClear=this.showClear,isRTL=this.isRTL,isInteractive=this.isInteractive,$scopedSlots=this.$scopedSlots,$content=[];if(showClear&&!disabled&&!readonly){var $icon=h("span",{staticClass:"b-rating-icon"},[($scopedSlots["icon-clear"]||this.iconClearFn)()]);$content.push(h("span",{staticClass:"b-rating-star b-rating-star-clear flex-grow-1",class:{focused:hasFocus&&0===computedRating},attrs:{tabindex:isInteractive?"-1":null},on:{click:function(){return _this.onSelected(null)}},key:"clear"},[$icon]))}for(var index=0;index1&&void 0!==arguments[1]?arguments[1]:null;if(isPlainObject(option)){var value=get(option,this.valueField),text=get(option,this.textField),options=get(option,this.optionsField,null);return isNull(options)?{value:isUndefined(value)?key||text:value,text:String(isUndefined(text)?key:text),html:get(option,this.htmlField),disabled:Boolean(get(option,this.disabledField))}:{label:String(get(option,this.labelField)||text),options:this.normalizeOptions(options)}}return{value:key||option,text:String(option),disabled:!1}}}},props$z={value:{required:!0},disabled:{type:Boolean,default:!1}},BFormSelectOption=Vue.extend({name:"BFormSelectOption",functional:!0,props:props$z,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children,value=props.value;return h("option",a(data,{attrs:{disabled:props.disabled},domProps:{value:value}}),children)}}),BFormSelectOptionGroup=Vue.extend({name:"BFormSelectOptionGroup",mixins:[normalizeSlotMixin,formOptionsMixin],props:{label:{type:String,required:!0}},render:function(h){var $options=this.formOptions.map((function(option,index){var value=option.value,text=option.text,html=option.html,disabled=option.disabled;return h(BFormSelectOption,{attrs:{value:value,disabled:disabled},domProps:htmlOrText(html,text),key:"option_".concat(index)})}));return h("optgroup",{attrs:{label:this.label}},[this.normalizeSlot("first"),$options,this.normalizeSlot("default")])}}),BFormSelect=Vue.extend({name:"BFormSelect",mixins:[idMixin,normalizeSlotMixin,formMixin,formSizeMixin,formStateMixin,formCustomMixin,optionsMixin],model:{prop:"value",event:"input"},props:{value:{},multiple:{type:Boolean,default:!1},selectSize:{type:Number,default:0},ariaInvalid:{type:[Boolean,String],default:!1}},data:function(){return{localValue:this.value}},computed:{computedSelectSize:function(){return this.plain||0!==this.selectSize?this.selectSize:null},inputClass:function(){return[this.plain?"form-control":"custom-select",this.size&&this.plain?"form-control-".concat(this.size):null,this.size&&!this.plain?"custom-select-".concat(this.size):null,this.stateClass]},computedAriaInvalid:function(){return!0===this.ariaInvalid||"true"===this.ariaInvalid||"is-invalid"===this.stateClass?"true":null}},watch:{value:function(newVal){this.localValue=newVal},localValue:function(){this.$emit("input",this.localValue)}},methods:{focus:function(){attemptFocus(this.$refs.input)},blur:function(){attemptBlur(this.$refs.input)},onChange:function(evt){var _this=this,target=evt.target,selectedVal=from(target.options).filter((function(o){return o.selected})).map((function(o){return"_value"in o?o._value:o.value}));this.localValue=target.multiple?selectedVal:selectedVal[0],this.$nextTick((function(){_this.$emit("change",_this.localValue)}))}},render:function(h){var name=this.name,disabled=this.disabled,required=this.required,size=this.computedSelectSize,value=this.localValue,$options=this.formOptions.map((function(option,index){var value=option.value,label=option.label,options=option.options,disabled=option.disabled,key="option_".concat(index);return isArray(options)?h(BFormSelectOptionGroup,{props:{label:label,options:options},key:key}):h(BFormSelectOption,{props:{value:value,disabled:disabled},domProps:htmlOrText(option.html,option.text),key:key})}));return h("select",{class:this.inputClass,attrs:{id:this.safeId(),name:name,form:this.form||null,multiple:this.multiple||null,size:size,disabled:disabled,required:required,"aria-required":required?"true":null,"aria-invalid":this.computedAriaInvalid},on:{change:this.onChange},directives:[{name:"model",value:value}],ref:"input"},[this.normalizeSlot("first"),$options,this.normalizeSlot("default")])}}),FormSelectPlugin=pluginFactory({components:{BFormSelect:BFormSelect,BFormSelectOption:BFormSelectOption,BFormSelectOptionGroup:BFormSelectOptionGroup,BSelect:BFormSelect,BSelectOption:BFormSelectOption,BSelectOptionGroup:BFormSelectOptionGroup}}),NAME$m="BFormSpinbutton",UP$2=KEY_CODES.UP,DOWN$2=KEY_CODES.DOWN,HOME$1=KEY_CODES.HOME,END$1=KEY_CODES.END,PAGEUP$1=KEY_CODES.PAGEUP,PAGEDOWN$1=KEY_CODES.PAGEDOWN,BFormSpinbutton=Vue.extend({name:NAME$m,mixins:[attrsMixin,idMixin,normalizeSlotMixin],inheritAttrs:!1,props:{value:{type:Number,default:null},min:{type:[Number,String],default:1},max:{type:[Number,String],default:100},step:{type:[Number,String],default:1},wrap:{type:Boolean,default:!1},formatterFn:{type:Function},size:{type:String},placeholder:{type:String},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{type:String},form:{type:String},state:{type:Boolean,default:null},inline:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},ariaLabel:{type:String},ariaControls:{type:String},labelDecrement:{type:String,default:function(){return getComponentConfig(NAME$m,"labelDecrement")}},labelIncrement:{type:String,default:function(){return getComponentConfig(NAME$m,"labelIncrement")}},locale:{type:[String,Array]},repeatDelay:{type:[Number,String],default:500},repeatInterval:{type:[Number,String],default:100},repeatThreshold:{type:[Number,String],default:10},repeatStepMultiplier:{type:[Number,String],default:4}},data:function(){return{localValue:toFloat(this.value,null),hasFocus:!1}},computed:{spinId:function(){return this.safeId()},computedInline:function(){return this.inline&&!this.vertical},computedReadonly:function(){return this.readonly&&!this.disabled},computedRequired:function(){return this.required&&!this.computedReadonly&&!this.disabled},computedStep:function(){return toFloat(this.step,1)},computedMin:function(){return toFloat(this.min,1)},computedMax:function(){var max=toFloat(this.max,100),step=this.computedStep,min=this.computedMin;return mathFloor((max-min)/step)*step+min},computedDelay:function(){var delay=toInteger(this.repeatDelay,0);return delay>0?delay:500},computedInterval:function(){var interval=toInteger(this.repeatInterval,0);return interval>0?interval:100},computedThreshold:function(){return mathMax(toInteger(this.repeatThreshold,10),1)},computedStepMultiplier:function(){return mathMax(toInteger(this.repeatStepMultiplier,4),1)},computedPrecision:function(){var step=this.computedStep;return mathFloor(step)===step?0:(step.toString().split(".")[1]||"").length},computedMultiplier:function(){return mathPow(10,this.computedPrecision||0)},valueAsFixed:function(){var value=this.localValue;return isNull(value)?"":value.toFixed(this.computedPrecision)},computedLocale:function(){var locales=concat(this.locale).filter(identity);return new Intl.NumberFormat(locales).resolvedOptions().locale},computedRTL:function(){return isLocaleRTL(this.computedLocale)},defaultFormatter:function(){var precision=this.computedPrecision;return new Intl.NumberFormat(this.computedLocale,{style:"decimal",useGrouping:!1,minimumIntegerDigits:1,minimumFractionDigits:precision,maximumFractionDigits:precision,notation:"standard"}).format},computedFormatter:function(){return isFunction(this.formatterFn)?this.formatterFn:this.defaultFormatter},computedAttrs:function(){return _objectSpread2(_objectSpread2({},this.bvAttrs),{},{role:"group",lang:this.computedLocale,tabindex:this.disabled?null:"-1",title:this.ariaLabel})},computedSpinAttrs:function(){var spinId=this.spinId,value=this.localValue,required=this.computedRequired,disabled=this.disabled,state=this.state,computedFormatter=this.computedFormatter,hasValue=!isNull(value);return _objectSpread2(_objectSpread2({dir:this.computedRTL?"rtl":"ltr"},this.bvAttrs),{},{id:spinId,role:"spinbutton",tabindex:disabled?null:"0","aria-live":"off","aria-label":this.ariaLabel||null,"aria-controls":this.ariaControls||null,"aria-invalid":!1===state||!hasValue&&required?"true":null,"aria-required":required?"true":null,"aria-valuemin":toString$1(this.computedMin),"aria-valuemax":toString$1(this.computedMax),"aria-valuenow":hasValue?value:null,"aria-valuetext":hasValue?computedFormatter(value):null})}},watch:{value:function(_value){this.localValue=toFloat(_value,null)},localValue:function(value){this.$emit("input",value)},disabled:function(_disabled){_disabled&&this.clearRepeat()},readonly:function(_readonly){_readonly&&this.clearRepeat()}},created:function(){this.$_autoDelayTimer=null,this.$_autoRepeatTimer=null,this.$_keyIsDown=!1},beforeDestroy:function(){this.clearRepeat()},deactivated:function(){this.clearRepeat()},methods:{focus:function(){this.disabled||attemptFocus(this.$refs.spinner)},blur:function(){this.disabled||attemptBlur(this.$refs.spinner)},emitChange:function(){this.$emit("change",this.localValue)},stepValue:function(direction){var value=this.localValue;if(!this.disabled&&!isNull(value)){var step=this.computedStep*direction,min=this.computedMin,max=this.computedMax,multiplier=this.computedMultiplier,wrap=this.wrap;value=mathRound((value-min)/step)*step+min+step,value=mathRound(value*multiplier)/multiplier,this.localValue=value>max?wrap?min:max:value0&&void 0!==arguments[0]?arguments[0]:1,value=this.localValue;isNull(value)?this.localValue=this.computedMin:this.stepValue(1*multiplier)},stepDown:function(){var multiplier=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,value=this.localValue;isNull(value)?this.localValue=this.wrap?this.computedMax:this.computedMin:this.stepValue(-1*multiplier)},onKeydown:function(evt){var keyCode=evt.keyCode,altKey=evt.altKey,ctrlKey=evt.ctrlKey,metaKey=evt.metaKey;if(!(this.disabled||this.readonly||altKey||ctrlKey||metaKey)&&arrayIncludes([UP$2,DOWN$2,HOME$1,END$1,PAGEUP$1,PAGEDOWN$1],keyCode)){if(evt.preventDefault(),this.$_keyIsDown)return;this.resetTimers(),arrayIncludes([UP$2,DOWN$2],keyCode)?(this.$_keyIsDown=!0,keyCode===UP$2?this.handleStepRepeat(evt,this.stepUp):keyCode===DOWN$2&&this.handleStepRepeat(evt,this.stepDown)):keyCode===PAGEUP$1?this.stepUp(this.computedStepMultiplier):keyCode===PAGEDOWN$1?this.stepDown(this.computedStepMultiplier):keyCode===HOME$1?this.localValue=this.computedMin:keyCode===END$1&&(this.localValue=this.computedMax)}},onKeyup:function(evt){var keyCode=evt.keyCode,altKey=evt.altKey,ctrlKey=evt.ctrlKey,metaKey=evt.metaKey;this.disabled||this.readonly||altKey||ctrlKey||metaKey||arrayIncludes([UP$2,DOWN$2,HOME$1,END$1,PAGEUP$1,PAGEDOWN$1],keyCode)&&(this.resetTimers(),this.$_keyIsDown=!1,evt.preventDefault(),this.emitChange())},handleStepRepeat:function(evt,stepper){var _this=this,_ref=evt||{},type=_ref.type,button=_ref.button;if(!this.disabled&&!this.readonly){if("mousedown"===type&&button)return;this.resetTimers(),stepper(1);var threshold=this.computedThreshold,multiplier=this.computedStepMultiplier,delay=this.computedDelay,interval=this.computedInterval;this.$_autoDelayTimer=setTimeout((function(){var count=0;_this.$_autoRepeatTimer=setInterval((function(){stepper(count0&&arr.indexOf(tag)===index}))},processEventValue=function(evt){return isString(evt)?evt:isEvent(evt)&&evt.target.value||""},BFormTags=Vue.extend({name:NAME$o,mixins:[idMixin,normalizeSlotMixin],model:{prop:"value",event:"input"},props:{inputId:{type:String},placeholder:{type:String,default:function(){return getComponentConfig(NAME$o,"placeholder")}},disabled:{type:Boolean,default:!1},name:{type:String},form:{type:String},autofocus:{type:Boolean,default:!1},state:{type:Boolean,default:null},size:{type:String},inputType:{type:String,default:"text",validator:function(type){return arrayIncludes(TYPES$1,type)}},inputClass:{type:[String,Array,Object]},inputAttrs:{type:Object,default:function(){return{}}},addButtonText:{type:String,default:function(){return getComponentConfig(NAME$o,"addButtonText")}},addButtonVariant:{type:String,default:function(){return getComponentConfig(NAME$o,"addButtonVariant")}},tagVariant:{type:String,default:function(){return getComponentConfig(NAME$o,"tagVariant")}},tagClass:{type:[String,Array,Object]},tagPills:{type:Boolean,default:!1},tagRemoveLabel:{type:String,default:function(){return getComponentConfig(NAME$o,"tagRemoveLabel")}},tagRemovedLabel:{type:String,default:function(){return getComponentConfig(NAME$o,"tagRemovedLabel")}},tagValidator:{type:Function},duplicateTagText:{type:String,default:function(){return getComponentConfig(NAME$o,"duplicateTagText")}},invalidTagText:{type:String,default:function(){return getComponentConfig(NAME$o,"invalidTagText")}},separator:{type:[String,Array]},removeOnDelete:{type:Boolean,default:!1},addOnChange:{type:Boolean,default:!1},noAddOnEnter:{type:Boolean,default:!1},noOuterFocus:{type:Boolean,default:!1},ignoreInputFocusSelector:{type:[Array,String],default:function(){return[".b-form-tag","button","input","select"]}},value:{type:Array,default:function(){return[]}}},data:function(){return{hasFocus:!1,newTag:"",tags:[],removedTags:[],tagsState:{all:[],valid:[],invalid:[],duplicate:[]}}},computed:{computedInputId:function(){return this.inputId||this.safeId("__input__")},computedInputType:function(){return arrayIncludes(TYPES$1,this.inputType)?this.inputType:"text"},computedInputAttrs:function(){return _objectSpread2(_objectSpread2({},this.inputAttrs),{},{id:this.computedInputId,value:this.newTag,disabled:this.disabled||null,form:this.form||null})},computedInputHandlers:function(){return{input:this.onInputInput,change:this.onInputChange,keydown:this.onInputKeydown}},computedSeparator:function(){return concat(this.separator).filter(isString).filter(identity).join("")},computedSeparatorRegExp:function(){var separator=this.computedSeparator;return separator?new RegExp("[".concat(escapeRegExp(separator).replace(RX_SPACES,"\\s"),"]+")):null},computedJoiner:function(){var joiner=this.computedSeparator.charAt(0);return" "!==joiner?"".concat(joiner," "):joiner},computeIgnoreInputFocusSelector:function(){return concat(this.ignoreInputFocusSelector).filter(identity).join(",").trim()},disableAddButton:function(){var _this=this,newTag=trim(this.newTag);return""===newTag||!this.splitTags(newTag).some((function(t){return!arrayIncludes(_this.tags,t)&&_this.validateTag(t)}))},duplicateTags:function(){return this.tagsState.duplicate},hasDuplicateTags:function(){return this.duplicateTags.length>0},invalidTags:function(){return this.tagsState.invalid},hasInvalidTags:function(){return this.invalidTags.length>0}},watch:{value:function(newVal){this.tags=cleanTags(newVal)},tags:function(newVal,oldVal){looseEqual(newVal,this.value)||this.$emit("input",newVal),looseEqual(newVal,oldVal)||(newVal=concat(newVal).filter(identity),oldVal=concat(oldVal).filter(identity),this.removedTags=oldVal.filter((function(old){return!arrayIncludes(newVal,old)})))},tagsState:function(newVal,oldVal){looseEqual(newVal,oldVal)||this.$emit("tag-state",newVal.valid,newVal.invalid,newVal.duplicate)}},created:function(){this.tags=cleanTags(this.value)},mounted:function(){this.handleAutofocus()},activated:function(){this.handleAutofocus()},methods:{addTag:function(newTag){if(newTag=isString(newTag)?newTag:this.newTag,!this.disabled&&""!==trim(newTag)){var parsed=this.parseTags(newTag);if(parsed.valid.length>0||0===parsed.all.length)if(matches(this.getInput(),"select"))this.newTag="";else{var invalidAndDuplicates=[].concat(_toConsumableArray(parsed.invalid),_toConsumableArray(parsed.duplicate));this.newTag=parsed.all.filter((function(tag){return arrayIncludes(invalidAndDuplicates,tag)})).join(this.computedJoiner).concat(invalidAndDuplicates.length>0?this.computedJoiner.charAt(0):"")}parsed.valid.length>0&&(this.tags=concat(this.tags,parsed.valid)),this.tagsState=parsed,this.focus()}},removeTag:function(tag){var _this2=this;this.disabled||(this.tags=this.tags.filter((function(t){return t!==tag})),this.$nextTick((function(){_this2.focus()})))},onInputInput:function(evt){if(!(this.disabled||isEvent(evt)&&evt.target.composing)){var newTag=processEventValue(evt),separatorRe=this.computedSeparatorRegExp;this.newTag!==newTag&&(this.newTag=newTag),newTag=toString$1(newTag).replace(RX_TRIM_LEFT,""),separatorRe&&separatorRe.test(newTag.slice(-1))?this.addTag():this.tagsState=""===newTag?{all:[],valid:[],invalid:[],duplicate:[]}:this.parseTags(newTag)}},onInputChange:function(evt){if(!this.disabled&&this.addOnChange){var newTag=processEventValue(evt);this.newTag!==newTag&&(this.newTag=newTag),this.addTag()}},onInputKeydown:function(evt){if(!this.disabled&&isEvent(evt)){var keyCode=evt.keyCode,value=evt.target.value||"";this.noAddOnEnter||keyCode!==ENTER$2?!this.removeOnDelete||keyCode!==BACKSPACE&&keyCode!==DELETE||""!==value||(evt.preventDefault(),this.tags=this.tags.slice(0,-1)):(evt.preventDefault(),this.addTag())}},onClick:function(evt){var _this3=this,ignoreFocusSelector=this.computeIgnoreInputFocusSelector,target=evt.target;this.disabled||isActiveElement(target)||ignoreFocusSelector&&closest(ignoreFocusSelector,target,!0)||this.$nextTick((function(){_this3.focus()}))},onFocusin:function(){this.hasFocus=!0},onFocusout:function(){this.hasFocus=!1},handleAutofocus:function(){var _this4=this;this.$nextTick((function(){requestAF((function(){_this4.autofocus&&!_this4.disabled&&_this4.focus()}))}))},focus:function(){this.disabled||attemptFocus(this.getInput())},blur:function(){this.disabled||attemptBlur(this.getInput())},splitTags:function(newTag){newTag=toString$1(newTag);var separatorRe=this.computedSeparatorRegExp;return(separatorRe?newTag.split(separatorRe):[newTag]).map(trim).filter(identity)},parseTags:function(newTag){var _this5=this,tags=this.splitTags(newTag),parsed={all:tags,valid:[],invalid:[],duplicate:[]};return tags.forEach((function(tag){arrayIncludes(_this5.tags,tag)||arrayIncludes(parsed.valid,tag)?arrayIncludes(parsed.duplicate,tag)||parsed.duplicate.push(tag):_this5.validateTag(tag)?parsed.valid.push(tag):arrayIncludes(parsed.invalid,tag)||parsed.invalid.push(tag)})),parsed},validateTag:function(tag){var validator=this.tagValidator;return!isFunction(validator)||validator(tag)},getInput:function(){return select("#".concat(cssEscape(this.computedInputId)),this.$el)},defaultRender:function(_ref){var tags=_ref.tags,addTag=_ref.addTag,removeTag=_ref.removeTag,inputType=_ref.inputType,inputAttrs=_ref.inputAttrs,inputHandlers=_ref.inputHandlers,inputClass=_ref.inputClass,tagClass=_ref.tagClass,tagVariant=_ref.tagVariant,tagPills=_ref.tagPills,tagRemoveLabel=_ref.tagRemoveLabel,invalidTagText=_ref.invalidTagText,duplicateTagText=_ref.duplicateTagText,isInvalid=_ref.isInvalid,isDuplicate=_ref.isDuplicate,disabled=_ref.disabled,placeholder=_ref.placeholder,addButtonText=_ref.addButtonText,addButtonVariant=_ref.addButtonVariant,disableAddButton=_ref.disableAddButton,h=this.$createElement,$tags=tags.map((function(tag){return tag=toString$1(tag),h(BFormTag,{key:"li-tag__".concat(tag),class:tagClass,props:{tag:"li",title:tag,disabled:disabled,variant:tagVariant,pill:tagPills,removeLabel:tagRemoveLabel},on:{remove:function(){return removeTag(tag)}}},tag)})),invalidFeedbackId=invalidTagText&&isInvalid?this.safeId("__invalid_feedback__"):null,duplicateFeedbackId=duplicateTagText&&isDuplicate?this.safeId("__duplicate_feedback__"):null,ariaDescribedby=[inputAttrs["aria-describedby"],invalidFeedbackId,duplicateFeedbackId].filter(identity).join(" "),$input=h("input",{ref:"input",directives:[{name:"model",value:inputAttrs.value}],staticClass:"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0",class:inputClass,style:{outline:0,minWidth:"5rem"},attrs:_objectSpread2(_objectSpread2({},inputAttrs),{},{"aria-describedby":ariaDescribedby||null,type:inputType,placeholder:placeholder||null}),domProps:{value:inputAttrs.value},on:inputHandlers}),$button=h(BButton,{ref:"button",staticClass:"b-form-tags-button py-0",class:{invisible:disableAddButton},style:{fontSize:"90%"},props:{variant:addButtonVariant,disabled:disableAddButton},on:{click:function(){return addTag()}}},[this.normalizeSlot("add-button-text")||addButtonText]),tagListId=this.safeId("__TAG__LIST__"),$field=h("li",{key:"__li-input__",staticClass:"flex-grow-1",attrs:{role:"none","aria-live":"off","aria-controls":tagListId}},[h("div",{staticClass:"d-flex",attrs:{role:"group"}},[$input,$button])]),$ul=h("ul",{key:"_tags_list_",staticClass:"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center",attrs:{id:tagListId}},[$tags,$field]),$feedback=h();if(invalidTagText||duplicateTagText){var joiner=this.computedJoiner,$invalid=h();invalidFeedbackId&&($invalid=h(BFormInvalidFeedback,{key:"_tags_invalid_feedback_",props:{id:invalidFeedbackId,forceShow:!0}},[this.invalidTagText,": ",this.invalidTags.join(joiner)]));var $duplicate=h();duplicateFeedbackId&&($duplicate=h(BFormText,{key:"_tags_duplicate_feedback_",props:{id:duplicateFeedbackId}},[this.duplicateTagText,": ",this.duplicateTags.join(joiner)])),$feedback=h("div",{key:"_tags_feedback_",attrs:{"aria-live":"polite","aria-atomic":"true"}},[$invalid,$duplicate])}return[$ul,$feedback]}},render:function(h){var _this6=this,scope={tags:this.tags.slice(),removeTag:this.removeTag,addTag:this.addTag,inputType:this.computedInputType,inputAttrs:this.computedInputAttrs,inputHandlers:this.computedInputHandlers,inputId:this.computedInputId,invalidTags:this.invalidTags.slice(),isInvalid:this.hasInvalidTags,duplicateTags:this.duplicateTags.slice(),isDuplicate:this.hasDuplicateTags,disableAddButton:this.disableAddButton,state:this.state,separator:this.separator,disabled:this.disabled,size:this.size,placeholder:this.placeholder,inputClass:this.inputClass,tagRemoveLabel:this.tagRemoveLabel,tagVariant:this.tagVariant,tagPills:this.tagPills,tagClass:this.tagClass,addButtonText:this.addButtonText,addButtonVariant:this.addButtonVariant,invalidTagText:this.invalidTagText,duplicateTagText:this.duplicateTagText},$content=this.normalizeSlot("default",scope)||this.defaultRender(scope),$output=h("output",{staticClass:"sr-only",attrs:{id:this.safeId("_selected-tags_"),role:"status",for:this.computedInputId,"aria-live":this.hasFocus?"polite":"off","aria-atomic":"true","aria-relevant":"additions text"}},this.tags.join(", ")),$removed=h("div",{staticClass:"sr-only",attrs:{id:this.safeId("_removed-tags_"),role:"status","aria-live":this.hasFocus?"assertive":"off","aria-atomic":"true"}},this.removedTags.length>0?"(".concat(this.tagRemovedLabel,") ").concat(this.removedTags.join(", ")):""),$hidden=h();return this.name&&!this.disabled&&($hidden=this.tags.map((function(tag){return h("input",{key:tag,attrs:{type:"hidden",value:tag,name:_this6.name,form:_this6.form||null}})}))),h("div",{staticClass:"b-form-tags form-control h-auto",class:_defineProperty({focus:this.hasFocus&&!this.noOuterFocus&&!this.disabled,disabled:this.disabled,"is-valid":!0===this.state,"is-invalid":!1===this.state},"form-control-".concat(this.size),this.size),attrs:{id:this.safeId(),role:"group",tabindex:this.disabled||this.noOuterFocus?null:"-1","aria-describedby":this.safeId("_selected_")},on:{click:this.onClick,focusin:this.onFocusin,focusout:this.onFocusout}},[$output,$removed,$content,$hidden])}}),FormTagsPlugin=pluginFactory({components:{BFormTags:BFormTags,BTags:BFormTags,BFormTag:BFormTag,BTag:BFormTag}}),BFormTextarea=Vue.extend({name:"BFormTextarea",directives:{"b-visible":VBVisible},mixins:[listenersMixin,idMixin,listenOnRootMixin,formMixin,formSizeMixin,formStateMixin,formTextMixin,formSelectionMixin,formValidityMixin],props:{rows:{type:[Number,String],default:2},maxRows:{type:[Number,String]},wrap:{type:String,default:"soft"},noResize:{type:Boolean,default:!1},noAutoShrink:{type:Boolean,default:!1}},data:function(){return{heightInPx:null}},computed:{computedStyle:function(){var styles={resize:!this.computedRows||this.noResize?"none":null};return this.computedRows||(styles.height=this.heightInPx,styles.overflowY="scroll"),styles},computedMinRows:function(){return mathMax(toInteger(this.rows,2),2)},computedMaxRows:function(){return mathMax(this.computedMinRows,toInteger(this.maxRows,0))},computedRows:function(){return this.computedMinRows===this.computedMaxRows?this.computedMinRows:null},computedAttrs:function(){var disabled=this.disabled,required=this.required;return{id:this.safeId(),name:this.name||null,form:this.form||null,disabled:disabled,placeholder:this.placeholder||null,required:required,autocomplete:this.autocomplete||null,readonly:this.readonly||this.plaintext,rows:this.computedRows,wrap:this.wrap||null,"aria-required":this.required?"true":null,"aria-invalid":this.computedAriaInvalid}},computedListeners:function(){return _objectSpread2(_objectSpread2({},this.bvListeners),{},{input:this.onInput,change:this.onChange,blur:this.onBlur})}},watch:{localValue:function(){this.setHeight()}},mounted:function(){this.setHeight()},methods:{visibleCallback:function(visible){visible&&this.$nextTick(this.setHeight)},setHeight:function(){var _this=this;this.$nextTick((function(){requestAF((function(){_this.heightInPx=_this.computeHeight()}))}))},computeHeight:function(){if(this.$isServer||!isNull(this.computedRows))return null;var el=this.$el;if(!isVisible(el))return null;var computedStyle=getCS(el),lineHeight=toFloat(computedStyle.lineHeight,1),border=toFloat(computedStyle.borderTopWidth,0)+toFloat(computedStyle.borderBottomWidth,0),padding=toFloat(computedStyle.paddingTop,0)+toFloat(computedStyle.paddingBottom,0),offset=border+padding,minHeight=lineHeight*this.computedMinRows+offset,oldHeight=el.style.height||computedStyle.height;el.style.height="auto";var scrollHeight=el.scrollHeight;el.style.height=oldHeight;var contentRows=mathMax((scrollHeight-padding)/lineHeight,2),rows=mathMin(mathMax(contentRows,this.computedMinRows),this.computedMaxRows),height=mathMax(mathCeil(rows*lineHeight+offset),minHeight);return this.noAutoShrink&&toFloat(oldHeight,0)>height?oldHeight:"".concat(height,"px")}},render:function(h){return h("textarea",{ref:"input",class:this.computedClass,style:this.computedStyle,directives:[{name:"b-visible",value:this.visibleCallback,modifiers:{640:!0}}],attrs:this.computedAttrs,domProps:{value:this.localValue},on:this.computedListeners})}}),FormTextareaPlugin=pluginFactory({components:{BFormTextarea:BFormTextarea,BTextarea:BFormTextarea}}),LEFT$2=KEY_CODES.LEFT,RIGHT$2=KEY_CODES.RIGHT,RE_TIME=/^([0-1]?[0-9]|2[0-3]):[0-5]?[0-9](:[0-5]?[0-9])?$/,getConfigFallback$1=function(prop){return getComponentConfig("BTime",prop)||getComponentConfig("BFormSpinbutton",prop)},padLeftZeros=function(num){return"00".concat(num||"").slice(-2)},parseHMS=function(hms){hms=toString$1(hms);var hh=null,mm=null,ss=null;if(RE_TIME.test(hms)){var _hms$split$map2=_slicedToArray(hms.split(":").map((function(v){return toInteger(v,null)})),3);hh=_hms$split$map2[0],mm=_hms$split$map2[1],ss=_hms$split$map2[2]}return{hours:isUndefinedOrNull(hh)?null:hh,minutes:isUndefinedOrNull(mm)?null:mm,seconds:isUndefinedOrNull(ss)?null:ss,ampm:isUndefinedOrNull(hh)||hh<12?0:1}},BTime=Vue.extend({name:"BTime",mixins:[idMixin,normalizeSlotMixin],model:{prop:"value",event:"input"},props:{value:{type:String,default:""},showSeconds:{type:Boolean,default:!1},hour12:{type:Boolean,default:null},locale:{type:[String,Array]},ariaLabelledby:{type:String},secondsStep:{type:[Number,String],default:1},minutesStep:{type:[Number,String],default:1},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},labelNoTimeSelected:{type:String,default:function(){return getComponentConfig("BTime","labelNoTimeSelected")}},labelSelected:{type:String,default:function(){return getComponentConfig("BTime","labelSelected")}},labelHours:{type:String,default:function(){return getComponentConfig("BTime","labelHours")}},labelMinutes:{type:String,default:function(){return getComponentConfig("BTime","labelMinutes")}},labelSeconds:{type:String,default:function(){return getComponentConfig("BTime","labelSeconds")}},labelAmpm:{type:String,default:function(){return getComponentConfig("BTime","labelAmpm")}},labelAm:{type:String,default:function(){return getComponentConfig("BTime","labelAm")}},labelPm:{type:String,default:function(){return getComponentConfig("BTime","labelPm")}},labelIncrement:{type:String,default:function(){return getConfigFallback$1("labelIncrement")}},labelDecrement:{type:String,default:function(){return getConfigFallback$1("labelDecrement")}},hidden:{type:Boolean,default:!1}},data:function(){var parsed=parseHMS(this.value||"");return{modelHours:parsed.hours,modelMinutes:parsed.minutes,modelSeconds:parsed.seconds,modelAmpm:parsed.ampm,isLive:!1}},computed:{computedHMS:function(){return function(_ref){var hours=_ref.hours,minutes=_ref.minutes,seconds=_ref.seconds,requireSeconds=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return isNull(hours)||isNull(minutes)||requireSeconds&&isNull(seconds)?"":[hours,minutes,requireSeconds?seconds:0].map(padLeftZeros).join(":")}({hours:this.modelHours,minutes:this.modelMinutes,seconds:this.modelSeconds},this.showSeconds)},resolvedOptions:function(){var locale=concat(this.locale).filter(identity),options={hour:"numeric",minute:"numeric",second:"numeric"};isUndefinedOrNull(this.hour12)||(options.hour12=!!this.hour12);var resolved=new Intl.DateTimeFormat(locale,options).resolvedOptions(),hour12=resolved.hour12||!1,hourCycle=resolved.hourCycle||(hour12?"h12":"h23");return{locale:resolved.locale,hour12:hour12,hourCycle:hourCycle}},computedLocale:function(){return this.resolvedOptions.locale},computedLang:function(){return(this.computedLocale||"").replace(/-u-.*$/,"")},computedRTL:function(){return isLocaleRTL(this.computedLang)},computedHourCycle:function(){return this.resolvedOptions.hourCycle},is12Hour:function(){return!!this.resolvedOptions.hour12},context:function(){return{locale:this.computedLocale,isRTL:this.computedRTL,hourCycle:this.computedHourCycle,hour12:this.is12Hour,hours:this.modelHours,minutes:this.modelMinutes,seconds:this.showSeconds?this.modelSeconds:0,value:this.computedHMS,formatted:this.formattedTimeString}},valueId:function(){return this.safeId()||null},computedAriaLabelledby:function(){return[this.ariaLabelledby,this.valueId].filter(identity).join(" ")||null},timeFormatter:function(){var options={hour12:this.is12Hour,hourCycle:this.computedHourCycle,hour:"numeric",minute:"numeric",timeZone:"UTC"};return this.showSeconds&&(options.second="numeric"),createDateFormatter(this.computedLocale,options)},numberFormatter:function(){return new Intl.NumberFormat(this.computedLocale,{style:"decimal",minimumIntegerDigits:2,minimumFractionDigits:0,maximumFractionDigits:0,notation:"standard"}).format},formattedTimeString:function(){var hours=this.modelHours,minutes=this.modelMinutes,seconds=this.showSeconds&&this.modelSeconds||0;return this.computedHMS?this.timeFormatter(createDate(Date.UTC(0,0,1,hours,minutes,seconds))):this.labelNoTimeSelected||" "},spinScopedSlots:function(){var h=this.$createElement;return{increment:function(_ref2){var hasFocus=_ref2.hasFocus;return h(BIconChevronUp,{props:{scale:hasFocus?1.5:1.25},attrs:{"aria-hidden":"true"}})},decrement:function(_ref3){var hasFocus=_ref3.hasFocus;return h(BIconChevronUp,{props:{flipV:!0,scale:hasFocus?1.5:1.25},attrs:{"aria-hidden":"true"}})}}}},watch:{value:function(newVal,oldVal){if(newVal!==oldVal&&!looseEqual(parseHMS(newVal),parseHMS(this.computedHMS))){var _parseHMS=parseHMS(newVal),hours=_parseHMS.hours,minutes=_parseHMS.minutes,seconds=_parseHMS.seconds,ampm=_parseHMS.ampm;this.modelHours=hours,this.modelMinutes=minutes,this.modelSeconds=seconds,this.modelAmpm=ampm}},computedHMS:function(newVal,oldVal){newVal!==oldVal&&this.$emit("input",newVal)},context:function(newVal,oldVal){looseEqual(newVal,oldVal)||this.$emit("context",newVal)},modelAmpm:function(newVal,oldVal){var _this=this;if(newVal!==oldVal){var hours=isNull(this.modelHours)?0:this.modelHours;this.$nextTick((function(){0===newVal&&hours>11?_this.modelHours=hours-12:1===newVal&&hours<12&&(_this.modelHours=hours+12)}))}},modelHours:function(newHours,oldHours){newHours!==oldHours&&(this.modelAmpm=newHours>11?1:0)}},created:function(){var _this2=this;this.$nextTick((function(){_this2.$emit("context",_this2.context)}))},mounted:function(){this.setLive(!0)},activated:function(){this.setLive(!0)},deactivated:function(){this.setLive(!1)},beforeDestroy:function(){this.setLive(!1)},methods:{focus:function(){this.disabled||attemptFocus(this.$refs.spinners[0])},blur:function(){if(!this.disabled){var activeElement=getActiveElement();contains(this.$el,activeElement)&&attemptBlur(activeElement)}},formatHours:function(hh){var hourCycle=this.computedHourCycle;return hh=0===(hh=this.is12Hour&&hh>12?hh-12:hh)&&"h12"===hourCycle?12:0===hh&&"h24"===hourCycle?24:12===hh&&"h11"===hourCycle?0:hh,this.numberFormatter(hh)},formatMinutes:function(mm){return this.numberFormatter(mm)},formatSeconds:function(ss){return this.numberFormatter(ss)},formatAmpm:function(ampm){return 0===ampm?this.labelAm:1===ampm?this.labelPm:""},setHours:function(value){this.modelHours=value},setMinutes:function(value){this.modelMinutes=value},setSeconds:function(value){this.modelSeconds=value},setAmpm:function(value){this.modelAmpm=value},onSpinLeftRight:function(){var evt=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},type=evt.type,keyCode=evt.keyCode;if(!this.disabled&&"keydown"===type&&(keyCode===LEFT$2||keyCode===RIGHT$2)){evt.preventDefault(),evt.stopPropagation();var spinners=this.$refs.spinners||[],index=spinners.map((function(cmp){return!!cmp.hasFocus})).indexOf(!0);index=(index+=keyCode===LEFT$2?-1:1)>=spinners.length?0:index<0?spinners.length-1:index,attemptFocus(spinners[index])}},setLive:function(on){var _this3=this;on?this.$nextTick((function(){requestAF((function(){_this3.isLive=!0}))})):this.isLive=!1}},render:function(h){var _this4=this;if(this.hidden)return h();var valueId=this.valueId,computedAriaLabelledby=this.computedAriaLabelledby,spinIds=[],makeSpinbutton=function(handler,key,classes){var spinbuttonProps=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},id=_this4.safeId("_spinbutton_".concat(key,"_"))||null;return spinIds.push(id),h(BFormSpinbutton,{key:key,ref:"spinners",refInFor:!0,class:classes,props:_objectSpread2({id:id,placeholder:"--",vertical:!0,required:!0,disabled:_this4.disabled,readonly:_this4.readonly,locale:_this4.computedLocale,labelIncrement:_this4.labelIncrement,labelDecrement:_this4.labelDecrement,wrap:!0,ariaControls:valueId,min:0},spinbuttonProps),scopedSlots:_this4.spinScopedSlots,on:{change:handler}})},makeColon=function(){return h("div",{staticClass:"d-flex flex-column",class:{"text-muted":_this4.disabled||_this4.readonly},attrs:{"aria-hidden":"true"}},[h(BIconCircleFill,{props:{shiftV:4,scale:.5}}),h(BIconCircleFill,{props:{shiftV:-4,scale:.5}})])},$spinners=[];$spinners.push(makeSpinbutton(this.setHours,"hours","b-time-hours",{value:this.modelHours,max:23,step:1,formatterFn:this.formatHours,ariaLabel:this.labelHours})),$spinners.push(makeColon()),$spinners.push(makeSpinbutton(this.setMinutes,"minutes","b-time-minutes",{value:this.modelMinutes,max:59,step:this.minutesStep||1,formatterFn:this.formatMinutes,ariaLabel:this.labelMinutes})),this.showSeconds&&($spinners.push(makeColon()),$spinners.push(makeSpinbutton(this.setSeconds,"seconds","b-time-seconds",{value:this.modelSeconds,max:59,step:this.secondsStep||1,formatterFn:this.formatSeconds,ariaLabel:this.labelSeconds}))),this.is12Hour&&$spinners.push(makeSpinbutton(this.setAmpm,"ampm","b-time-ampm",{value:this.modelAmpm,max:1,formatterFn:this.formatAmpm,ariaLabel:this.labelAmpm,required:!1})),$spinners=h("div",{staticClass:"d-flex align-items-center justify-content-center mx-auto",attrs:{role:"group",tabindex:this.disabled||this.readonly?null:"-1","aria-labelledby":computedAriaLabelledby},on:{keydown:this.onSpinLeftRight,click:function(evt){evt.target===evt.currentTarget&&_this4.focus()}}},$spinners);var $value=h("output",{staticClass:"form-control form-control-sm text-center",class:{disabled:this.disabled||this.readonly},attrs:{id:valueId,role:"status",for:spinIds.filter(identity).join(" ")||null,tabindex:this.disabled?null:"-1","aria-live":this.isLive?"polite":"off","aria-atomic":"true"},on:{click:this.focus,focus:this.focus}},[h("bdi",this.formattedTimeString),this.computedHMS?h("span",{staticClass:"sr-only"}," (".concat(this.labelSelected,") ")):""]),$header=h("header",{staticClass:"b-time-header",class:{"sr-only":this.hideHeader}},[$value]),$slot=this.normalizeSlot("default");return $slot=$slot?h("footer",{staticClass:"b-time-footer"},$slot):h(),h("div",{staticClass:"b-time d-inline-flex flex-column text-center",attrs:{role:"group",lang:this.computedLang||null,"aria-labelledby":computedAriaLabelledby||null,"aria-disabled":this.disabled?"true":null,"aria-readonly":this.readonly&&!this.disabled?"true":null}},[$header,$spinners,$slot])}}),NAME$q="BFormTimepicker",getConfigFallback$2=function(prop){return getComponentConfig(NAME$q,prop)||getComponentConfig("BTime",prop)||getComponentConfig("BFormSpinbutton",prop)},propsMixin$1={props:_objectSpread2({value:{type:String,default:""},resetValue:{type:String,default:""},placeholder:{type:String},size:{type:String},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{type:String},form:{type:String},state:{type:Boolean,default:null},hour12:{type:Boolean,default:null},locale:{type:[String,Array]},showSeconds:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},secondsStep:{type:[Number,String],default:1},minutesStep:{type:[Number,String],default:1},buttonOnly:{type:Boolean,default:!1},buttonVariant:{type:String,default:"secondary"},nowButton:{type:Boolean,default:!1},labelNowButton:{type:String,default:function(){return getComponentConfig(NAME$q,"labelNowButton")}},nowButtonVariant:{type:String,default:"outline-primary"},resetButton:{type:Boolean,default:!1},labelResetButton:{type:String,default:function(){return getComponentConfig(NAME$q,"labelResetButton")}},resetButtonVariant:{type:String,default:"outline-danger"},noCloseButton:{type:Boolean,default:!1},labelCloseButton:{type:String,default:function(){return getComponentConfig(NAME$q,"labelCloseButton")}},closeButtonVariant:{type:String,default:"outline-secondary"},labelSelected:{type:String,default:function(){return getConfigFallback$2("labelSelected")}},labelNoTimeSelected:{type:String,default:function(){return getConfigFallback$2("labelNoTimeSelected")}},labelHours:{type:String,default:function(){return getConfigFallback$2("labelHours")}},labelMinutes:{type:String,default:function(){return getConfigFallback$2("labelMinutes")}},labelSeconds:{type:String,default:function(){return getConfigFallback$2("labelSeconds")}},labelAmpm:{type:String,default:function(){return getConfigFallback$2("labelAmpm")}},labelAm:{type:String,default:function(){return getConfigFallback$2("labelAm")}},labelPm:{type:String,default:function(){return getConfigFallback$2("labelPm")}},labelIncrement:{type:String,default:function(){return getConfigFallback$2("labelIncrement")}},labelDecrement:{type:String,default:function(){return getConfigFallback$2("labelDecrement")}},menuClass:{type:[String,Array,Object]}},dropdownProps)},BFormTimepicker=Vue.extend({name:NAME$q,mixins:[idMixin,propsMixin$1],model:{prop:"value",event:"input"},data:function(){return{localHMS:this.value||"",localLocale:null,isRTL:!1,formattedValue:"",isVisible:!1}},computed:{computedLang:function(){return(this.localLocale||"").replace(/-u-.*$/i,"")||null},timeProps:function(){return{hidden:!this.isVisible,value:this.localHMS,readonly:this.readonly,disabled:this.disabled,locale:this.locale,hour12:this.hour12,hideHeader:this.hideHeader,showSeconds:this.showSeconds,secondsStep:this.secondsStep,minutesStep:this.minutesStep,labelNoTimeSelected:this.labelNoTimeSelected,labelSelected:this.labelSelected,labelHours:this.labelHours,labelMinutes:this.labelMinutes,labelSeconds:this.labelSeconds,labelAmpm:this.labelAmpm,labelAm:this.labelAm,labelPm:this.labelPm,labelIncrement:this.labelIncrement,labelDecrement:this.labelDecrement}}},watch:{value:function(newVal){this.localHMS=newVal||""},localHMS:function(newVal){this.isVisible&&this.$emit("input",newVal||"")}},methods:{focus:function(){this.disabled||attemptFocus(this.$refs.control)},blur:function(){this.disabled||attemptBlur(this.$refs.control)},setAndClose:function(value){var _this=this;this.localHMS=value,this.$nextTick((function(){_this.$refs.control.hide(!0)}))},onInput:function(hms){this.localHMS!==hms&&(this.localHMS=hms)},onContext:function(ctx){var isRTL=ctx.isRTL,locale=ctx.locale,value=ctx.value,formatted=ctx.formatted;this.isRTL=isRTL,this.localLocale=locale,this.formattedValue=formatted,this.localHMS=value||"",this.$emit("context",ctx)},onNowButton:function(){var now=new Date,value=[now.getHours(),now.getMinutes(),this.showSeconds?now.getSeconds():0].map((function(v){return"00".concat(v||"").slice(-2)})).join(":");this.setAndClose(value)},onResetButton:function(){this.setAndClose(this.resetValue)},onCloseButton:function(){this.$refs.control.hide(!0)},onShow:function(){this.isVisible=!0},onShown:function(){var _this2=this;this.$nextTick((function(){attemptFocus(_this2.$refs.time),_this2.$emit("shown")}))},onHidden:function(){this.isVisible=!1,this.$emit("hidden")},defaultButtonFn:function(_ref){var isHovered=_ref.isHovered,hasFocus=_ref.hasFocus;return this.$createElement(isHovered||hasFocus?BIconClockFill:BIconClock,{attrs:{"aria-hidden":"true"}})}},render:function(h){var localHMS=this.localHMS,disabled=this.disabled,readonly=this.readonly,placeholder=isUndefinedOrNull(this.placeholder)?this.labelNoTimeSelected:this.placeholder,$footer=[];if(this.nowButton){var label=this.labelNowButton;$footer.push(h(BButton,{key:"now-btn",props:{size:"sm",disabled:disabled||readonly,variant:this.nowButtonVariant},attrs:{"aria-label":label||null},on:{click:this.onNowButton}},label))}if(this.resetButton){$footer.length>0&&$footer.push(h("span"," "));var _label=this.labelResetButton;$footer.push(h(BButton,{key:"reset-btn",props:{size:"sm",disabled:disabled||readonly,variant:this.resetButtonVariant},attrs:{"aria-label":_label||null},on:{click:this.onResetButton}},_label))}if(!this.noCloseButton){$footer.length>0&&$footer.push(h("span"," "));var _label2=this.labelCloseButton;$footer.push(h(BButton,{key:"close-btn",props:{size:"sm",disabled:disabled,variant:this.closeButtonVariant},attrs:{"aria-label":_label2||null},on:{click:this.onCloseButton}},_label2))}$footer.length>0&&($footer=[h("div",{staticClass:"b-form-date-controls d-flex flex-wrap",class:{"justify-content-between":$footer.length>1,"justify-content-end":$footer.length<2}},$footer)]);var $time=h(BTime,{ref:"time",staticClass:"b-form-time-control",props:this.timeProps,on:{input:this.onInput,context:this.onContext}},$footer);return h(BVFormBtnLabelControl,{ref:"control",staticClass:"b-form-timepicker",props:_objectSpread2(_objectSpread2({},this.$props),{},{id:this.safeId(),rtl:this.isRTL,lang:this.computedLang,value:localHMS||"",formattedValue:localHMS?this.formattedValue:"",placeholder:placeholder||""}),on:{show:this.onShow,shown:this.onShown,hidden:this.onHidden},scopedSlots:{"button-content":this.$scopedSlots["button-content"]||this.defaultButtonFn}},[$time])}}),FormTimepickerPlugin=pluginFactory({components:{BFormTimepicker:BFormTimepicker,BTimepicker:BFormTimepicker}}),ImagePlugin=pluginFactory({components:{BImg:BImg,BImgLazy:BImgLazy}}),props$A={tag:{type:String,default:"div"}},BInputGroupText=Vue.extend({name:"BInputGroupText",functional:!0,props:props$A,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{staticClass:"input-group-text"}),children)}}),commonProps$1={id:{type:String,default:null},tag:{type:String,default:"div"},isText:{type:Boolean,default:!1}},BInputGroupAddon=Vue.extend({name:"BInputGroupAddon",functional:!0,props:_objectSpread2(_objectSpread2({},commonProps$1),{},{append:{type:Boolean,default:!1}}),render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{class:{"input-group-append":props.append,"input-group-prepend":!props.append},attrs:{id:props.id}}),props.isText?[h(BInputGroupText,children)]:children)}}),BInputGroupAppend=Vue.extend({name:"BInputGroupAppend",functional:!0,props:commonProps$1,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(BInputGroupAddon,a(data,{props:_objectSpread2(_objectSpread2({},props),{},{append:!0})}),children)}}),BInputGroupPrepend=Vue.extend({name:"BInputGroupPrepend",functional:!0,props:commonProps$1,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(BInputGroupAddon,a(data,{props:_objectSpread2(_objectSpread2({},props),{},{append:!1})}),children)}}),props$B={id:{type:String},size:{type:String,default:function(){return getComponentConfig("BInputGroup","size")}},prepend:{type:String},prependHtml:{type:String},append:{type:String},appendHtml:{type:String},tag:{type:String,default:"div"}},BInputGroup=Vue.extend({name:"BInputGroup",functional:!0,props:props$B,render:function(h,_ref){var props=_ref.props,data=_ref.data,slots=_ref.slots,scopedSlots=_ref.scopedSlots,prepend=props.prepend,prependHtml=props.prependHtml,append=props.append,appendHtml=props.appendHtml,size=props.size,$scopedSlots=scopedSlots||{},$slots=slots(),slotScope={},$prepend=h(),hasPrependSlot=hasNormalizedSlot("prepend",$scopedSlots,$slots);(hasPrependSlot||prepend||prependHtml)&&($prepend=h(BInputGroupPrepend,[hasPrependSlot?normalizeSlot("prepend",slotScope,$scopedSlots,$slots):h(BInputGroupText,{domProps:htmlOrText(prependHtml,prepend)})]));var $append=h(),hasAppendSlot=hasNormalizedSlot("append",$scopedSlots,$slots);return(hasAppendSlot||append||appendHtml)&&($append=h(BInputGroupAppend,[hasAppendSlot?normalizeSlot("append",slotScope,$scopedSlots,$slots):h(BInputGroupText,{domProps:htmlOrText(appendHtml,append)})])),h(props.tag,a(data,{staticClass:"input-group",class:_defineProperty({},"input-group-".concat(size),size),attrs:{id:props.id||null,role:"group"}}),[$prepend,normalizeSlot("default",slotScope,$scopedSlots,$slots),$append])}}),InputGroupPlugin=pluginFactory({components:{BInputGroup:BInputGroup,BInputGroupAddon:BInputGroupAddon,BInputGroupPrepend:BInputGroupPrepend,BInputGroupAppend:BInputGroupAppend,BInputGroupText:BInputGroupText}}),props$C={tag:{type:String,default:"div"},fluid:{type:[Boolean,String],default:!1}},BContainer=Vue.extend({name:"BContainer",functional:!0,props:props$C,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{class:_defineProperty({container:!(props.fluid||""===props.fluid),"container-fluid":!0===props.fluid||""===props.fluid},"container-".concat(props.fluid),props.fluid&&!0!==props.fluid)}),children)}}),NAME$s="BJumbotron",props$D={fluid:{type:Boolean,default:!1},containerFluid:{type:[Boolean,String],default:!1},header:{type:String},headerHtml:{type:String},headerTag:{type:String,default:"h1"},headerLevel:{type:[Number,String],default:"3"},lead:{type:String},leadHtml:{type:String},leadTag:{type:String,default:"p"},tag:{type:String,default:"div"},bgVariant:{type:String,default:function(){return getComponentConfig(NAME$s,"bgVariant")}},borderVariant:{type:String,default:function(){return getComponentConfig(NAME$s,"borderVariant")}},textVariant:{type:String,default:function(){return getComponentConfig(NAME$s,"textVariant")}}},BJumbotron=Vue.extend({name:NAME$s,functional:!0,props:props$D,render:function(h,_ref){var _class2,props=_ref.props,data=_ref.data,slots=_ref.slots,scopedSlots=_ref.scopedSlots,header=props.header,headerHtml=props.headerHtml,lead=props.lead,leadHtml=props.leadHtml,textVariant=props.textVariant,bgVariant=props.bgVariant,borderVariant=props.borderVariant,$scopedSlots=scopedSlots||{},$slots=slots(),slotScope={},$header=h(),hasHeaderSlot=hasNormalizedSlot("header",$scopedSlots,$slots);if(hasHeaderSlot||header||headerHtml){var headerLevel=props.headerLevel;$header=h(props.headerTag,{class:_defineProperty({},"display-".concat(headerLevel),headerLevel),domProps:hasHeaderSlot?{}:htmlOrText(headerHtml,header)},normalizeSlot("header",slotScope,$scopedSlots,$slots))}var $lead=h(),hasLeadSlot=hasNormalizedSlot("lead",$scopedSlots,$slots);(hasLeadSlot||lead||leadHtml)&&($lead=h(props.leadTag,{staticClass:"lead",domProps:hasLeadSlot?{}:htmlOrText(leadHtml,lead)},normalizeSlot("lead",slotScope,$scopedSlots,$slots)));var $children=[$header,$lead,normalizeSlot("default",slotScope,$scopedSlots,$slots)];return props.fluid&&($children=[h(BContainer,{props:{fluid:props.containerFluid}},$children)]),h(props.tag,a(data,{staticClass:"jumbotron",class:(_class2={"jumbotron-fluid":props.fluid},_defineProperty(_class2,"text-".concat(textVariant),textVariant),_defineProperty(_class2,"bg-".concat(bgVariant),bgVariant),_defineProperty(_class2,"border-".concat(borderVariant),borderVariant),_defineProperty(_class2,"border",borderVariant),_class2)}),$children)}}),JumbotronPlugin=pluginFactory({components:{BJumbotron:BJumbotron}}),COMMON_ALIGNMENT=["start","end","center"],computeRowColsClass=memoize((function(breakpoint,cols){return(cols=trim(toString$1(cols)))?lowerCase(["row-cols",breakpoint,cols].filter(identity).join("-")):null})),computeRowColsBreakpoint=memoize((function(prop){return lowerCase(prop.replace("cols",""))})),rowColsPropList=[],generateProps$2=function(){var rowColsProps=getBreakpointsUpCached().reduce((function(props,breakpoint){return props[suffixPropName(breakpoint,"cols")]={type:[String,Number],default:null},props}),create(null));return rowColsPropList=keys(rowColsProps),_objectSpread2({tag:{type:String,default:"div"},noGutters:{type:Boolean,default:!1},alignV:{type:String,default:null,validator:function(str){return arrayIncludes(concat(COMMON_ALIGNMENT,"baseline","stretch"),str)}},alignH:{type:String,default:null,validator:function(str){return arrayIncludes(concat(COMMON_ALIGNMENT,"between","around"),str)}},alignContent:{type:String,default:null,validator:function(str){return arrayIncludes(concat(COMMON_ALIGNMENT,"between","around","stretch"),str)}}},rowColsProps)},BRow={name:"BRow",functional:!0,get props(){return delete this.props,this.props=generateProps$2(),this.props},render:function(h,_ref){var _classList$push,props=_ref.props,data=_ref.data,children=_ref.children,classList=[];return rowColsPropList.forEach((function(prop){var c=computeRowColsClass(computeRowColsBreakpoint(prop),props[prop]);c&&classList.push(c)})),classList.push((_defineProperty(_classList$push={"no-gutters":props.noGutters},"align-items-".concat(props.alignV),props.alignV),_defineProperty(_classList$push,"justify-content-".concat(props.alignH),props.alignH),_defineProperty(_classList$push,"align-content-".concat(props.alignContent),props.alignContent),_classList$push)),h(props.tag,a(data,{staticClass:"row",class:classList}),children)}},LayoutPlugin=pluginFactory({components:{BContainer:BContainer,BRow:BRow,BCol:BCol,BFormRow:BFormRow}}),LinkPlugin=pluginFactory({components:{BLink:BLink}}),props$E={tag:{type:String,default:"div"},flush:{type:Boolean,default:!1},horizontal:{type:[Boolean,String],default:!1}},BListGroup=Vue.extend({name:"BListGroup",functional:!0,props:props$E,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children,horizontal=""===props.horizontal||props.horizontal;horizontal=!props.flush&&horizontal;var componentData={staticClass:"list-group",class:_defineProperty({"list-group-flush":props.flush,"list-group-horizontal":!0===horizontal},"list-group-horizontal-".concat(horizontal),isString(horizontal))};return h(props.tag,a(data,componentData),children)}}),actionTags=["a","router-link","button","b-link"],linkProps$3=omit(props$1,["event","routerTag"]);delete linkProps$3.href.default,delete linkProps$3.to.default;var props$F=_objectSpread2({tag:{type:String,default:"div"},action:{type:Boolean,default:null},button:{type:Boolean,default:null},variant:{type:String,default:function(){return getComponentConfig("BListGroupItem","variant")}}},linkProps$3),BListGroupItem=Vue.extend({name:"BListGroupItem",functional:!0,props:props$F,render:function(h,_ref){var _class,props=_ref.props,data=_ref.data,children=_ref.children,button=props.button,variant=props.variant,active=props.active,disabled=props.disabled,link=isLink(props),tag=button?"button":link?BLink:props.tag,action=!!(props.action||link||button||arrayIncludes(actionTags,props.tag)),attrs={},itemProps={};return isTag(tag,"button")?(data.attrs&&data.attrs.type||(attrs.type="button"),props.disabled&&(attrs.disabled=!0)):itemProps=pluckProps(linkProps$3,props),h(tag,a(data,{attrs:attrs,props:itemProps,staticClass:"list-group-item",class:(_class={},_defineProperty(_class,"list-group-item-".concat(variant),variant),_defineProperty(_class,"list-group-item-action",action),_defineProperty(_class,"active",active),_defineProperty(_class,"disabled",disabled),_class)}),children)}}),ListGroupPlugin=pluginFactory({components:{BListGroup:BListGroup,BListGroupItem:BListGroupItem}}),props$G={tag:{type:String,default:"div"}},BMediaBody=Vue.extend({name:"BMediaBody",functional:!0,props:props$G,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{staticClass:"media-body"}),children)}}),props$H={tag:{type:String,default:"div"},verticalAlign:{type:String,default:"top"}},BMediaAside=Vue.extend({name:"BMediaAside",functional:!0,props:props$H,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children,align="top"===props.verticalAlign?"start":"bottom"===props.verticalAlign?"end":props.verticalAlign;return h(props.tag,a(data,{staticClass:"d-flex",class:_defineProperty({},"align-self-".concat(align),align)}),children)}}),props$I={tag:{type:String,default:"div"},rightAlign:{type:Boolean,default:!1},verticalAlign:{type:String,default:"top"},noBody:{type:Boolean,default:!1}},BMedia=Vue.extend({name:"BMedia",functional:!0,props:props$I,render:function(h,_ref){var props=_ref.props,data=_ref.data,slots=_ref.slots,scopedSlots=_ref.scopedSlots,children=_ref.children,childNodes=props.noBody?children:[];if(!props.noBody){var $slots=slots(),$scopedSlots=scopedSlots||{},$aside=normalizeSlot("aside",{},$scopedSlots,$slots),$default=normalizeSlot("default",{},$scopedSlots,$slots);$aside&&!props.rightAlign&&childNodes.push(h(BMediaAside,{staticClass:"mr-3",props:{verticalAlign:props.verticalAlign}},$aside)),childNodes.push(h(BMediaBody,$default)),$aside&&props.rightAlign&&childNodes.push(h(BMediaAside,{staticClass:"ml-3",props:{verticalAlign:props.verticalAlign}},$aside))}return h(props.tag,a(data,{staticClass:"media"}),childNodes)}}),MediaPlugin=pluginFactory({components:{BMedia:BMedia,BMediaAside:BMediaAside,BMediaBody:BMediaBody}}),BTransporterTargetSingle=Vue.extend({abstract:!0,name:"BTransporterTargetSingle",props:{nodes:{type:[Array,Function]}},data:function(vm){return{updatedNodes:vm.nodes}},destroyed:function(){var el;(el=this.$el)&&el.parentNode&&el.parentNode.removeChild(el)},render:function(h){var nodes=isFunction(this.updatedNodes)?this.updatedNodes({}):this.updatedNodes;return(nodes=concat(nodes).filter(Boolean))&&nodes.length>0&&!nodes[0].text?nodes[0]:h()}}),BTransporterSingle=Vue.extend({name:"BTransporterSingle",mixins:[normalizeSlotMixin],props:{disabled:{type:Boolean,default:!1},container:{type:[String,HTMLElement],default:"body"},tag:{type:String,default:"div"}},watch:{disabled:{immediate:!0,handler:function(disabled){disabled?this.unmountTarget():this.$nextTick(this.mountTarget)}}},created:function(){this.$_defaultFn=null,this.$_target=null},beforeMount:function(){this.mountTarget()},updated:function(){this.updateTarget()},beforeDestroy:function(){this.unmountTarget(),this.$_defaultFn=null},methods:{getContainer:function(){if(isBrowser){var container=this.container;return isString(container)?select(container):container}return null},mountTarget:function(){if(!this.$_target){var container=this.getContainer();if(container){var el=document.createElement("div");container.appendChild(el),this.$_target=new BTransporterTargetSingle({el:el,parent:this,propsData:{nodes:concat(this.normalizeSlot("default"))}})}}},updateTarget:function(){if(isBrowser&&this.$_target){var defaultFn=this.$scopedSlots.default;this.disabled||(defaultFn&&this.$_defaultFn!==defaultFn?this.$_target.updatedNodes=defaultFn:defaultFn||(this.$_target.updatedNodes=this.$slots.default)),this.$_defaultFn=defaultFn}},unmountTarget:function(){this.$_target&&this.$_target.$destroy(),this.$_target=null}},render:function(h){if(this.disabled){var nodes=concat(this.normalizeSlot("default")).filter(identity);if(nodes.length>0&&!nodes[0].text)return nodes[0]}return h()}}),PROP$1="$_bv_documentHandlers_",listenOnDocumentMixin={created:function(){var _this=this;isBrowser&&(this[PROP$1]={},this.$once("hook:beforeDestroy",(function(){var items=_this[PROP$1]||{};delete _this[PROP$1],keys(items).forEach((function(evtName){(items[evtName]||[]).forEach((function(handler){return eventOff(document,evtName,handler,EVENT_OPTIONS_NO_CAPTURE)}))}))})))},methods:{listenDocument:function(on,evtName,handler){on?this.listenOnDocument(evtName,handler):this.listenOffDocument(evtName,handler)},listenOnDocument:function(evtName,handler){this[PROP$1]&&isString(evtName)&&isFunction(handler)&&(this[PROP$1][evtName]=this[PROP$1][evtName]||[],arrayIncludes(this[PROP$1][evtName],handler)||(this[PROP$1][evtName].push(handler),eventOn(document,evtName,handler,EVENT_OPTIONS_NO_CAPTURE)))},listenOffDocument:function(evtName,handler){this[PROP$1]&&isString(evtName)&&isFunction(handler)&&(eventOff(document,evtName,handler,EVENT_OPTIONS_NO_CAPTURE),this[PROP$1][evtName]=(this[PROP$1][evtName]||[]).filter((function(h){return h!==handler})))}}},PROP$2="$_bv_windowHandlers_",listenOnWindowMixin={beforeCreate:function(){this[PROP$2]={}},beforeDestroy:function(){if(isBrowser){var items=this[PROP$2];delete this[PROP$2],keys(items).forEach((function(evtName){(items[evtName]||[]).forEach((function(handler){return eventOff(window,evtName,handler,EVENT_OPTIONS_NO_CAPTURE)}))}))}},methods:{listenWindow:function(on,evtName,handler){on?this.listenOnWindow(evtName,handler):this.listenOffWindow(evtName,handler)},listenOnWindow:function(evtName,handler){isBrowser&&this[PROP$2]&&isString(evtName)&&isFunction(handler)&&(this[PROP$2][evtName]=this[PROP$2][evtName]||[],arrayIncludes(this[PROP$2][evtName],handler)||(this[PROP$2][evtName].push(handler),eventOn(window,evtName,handler,EVENT_OPTIONS_NO_CAPTURE)))},listenOffWindow:function(evtName,handler){isBrowser&&this[PROP$2]&&isString(evtName)&&isFunction(handler)&&(eventOff(window,evtName,handler,EVENT_OPTIONS_NO_CAPTURE),this[PROP$2][evtName]=(this[PROP$2][evtName]||[]).filter((function(h){return h!==handler})))}}},getScopeId=function(vm){var defaultValue=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return vm&&vm.$options._scopeId||defaultValue},scopedStyleAttrsMixin={computed:{scopedStyleAttrs:function(){var scopeId=getScopeId(this.$parent);return scopeId?_defineProperty({},scopeId,""):{}}}},Selector$1_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Selector$1_STICKY_CONTENT=".sticky-top",Selector$1_NAVBAR_TOGGLER=".navbar-toggler",modalManager=new(Vue.extend({data:function(){return{modals:[],baseZIndex:null,scrollbarWidth:null,isBodyOverflowing:!1}},computed:{modalCount:function(){return this.modals.length},modalsAreOpen:function(){return this.modalCount>0}},watch:{modalCount:function(newCount,oldCount){isBrowser&&(this.getScrollbarWidth(),newCount>0&&0===oldCount?(this.checkScrollbar(),this.setScrollbar(),addClass(document.body,"modal-open")):0===newCount&&oldCount>0&&(this.resetScrollbar(),removeClass(document.body,"modal-open")),setAttr(document.body,"data-modal-open-count",String(newCount)))},modals:function(newVal){var _this=this;this.checkScrollbar(),requestAF((function(){_this.updateModals(newVal||[])}))}},methods:{registerModal:function(modal){var _this2=this;modal&&-1===this.modals.indexOf(modal)&&(this.modals.push(modal),modal.$once("hook:beforeDestroy",(function(){_this2.unregisterModal(modal)})))},unregisterModal:function(modal){var index=this.modals.indexOf(modal);index>-1&&(this.modals.splice(index,1),modal._isBeingDestroyed||modal._isDestroyed||this.resetModal(modal))},getBaseZIndex:function(){if(isNull(this.baseZIndex)&&isBrowser){var div=document.createElement("div");div.className="modal-backdrop d-none",div.style.display="none",document.body.appendChild(div),this.baseZIndex=toInteger(getCS(div).zIndex,1040),document.body.removeChild(div)}return this.baseZIndex||1040},getScrollbarWidth:function(){if(isNull(this.scrollbarWidth)&&isBrowser){var div=document.createElement("div");div.className="modal-scrollbar-measure",document.body.appendChild(div),this.scrollbarWidth=getBCR(div).width-div.clientWidth,document.body.removeChild(div)}return this.scrollbarWidth||0},updateModals:function(modals){var _this3=this,baseZIndex=this.getBaseZIndex(),scrollbarWidth=this.getScrollbarWidth();modals.forEach((function(modal,index){modal.zIndex=baseZIndex+index,modal.scrollbarWidth=scrollbarWidth,modal.isTop=index===_this3.modals.length-1,modal.isBodyOverflowing=_this3.isBodyOverflowing}))},resetModal:function(modal){modal&&(modal.zIndex=this.getBaseZIndex(),modal.isTop=!0,modal.isBodyOverflowing=!1)},checkScrollbar:function(){var _getBCR=getBCR(document.body),left=_getBCR.left,right=_getBCR.right;this.isBodyOverflowing=left+right1&&void 0!==arguments[1]?arguments[1]:{};return _classCallCheck(this,BvModalEvent),_this=_super.call(this,type,eventInit),defineProperties(_assertThisInitialized(_this),{trigger:{enumerable:!0,configurable:!1,writable:!1}}),_this}return _createClass(BvModalEvent,null,[{key:"Defaults",get:function(){return _objectSpread2(_objectSpread2({},_get(_getPrototypeOf(BvModalEvent),"Defaults",this)),{},{trigger:null})}}]),BvModalEvent}(BvEvent),NAME$u="BModal",OBSERVER_CONFIG={subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["style","class"]},props$J={size:{type:String,default:function(){return getComponentConfig(NAME$u,"size")}},centered:{type:Boolean,default:!1},scrollable:{type:Boolean,default:!1},buttonSize:{type:String},noStacking:{type:Boolean,default:!1},noFade:{type:Boolean,default:!1},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noEnforceFocus:{type:Boolean,default:!1},ignoreEnforceFocusSelector:{type:[Array,String],default:""},title:{type:String,default:""},titleHtml:{type:String},titleTag:{type:String,default:function(){return getComponentConfig(NAME$u,"titleTag")}},titleClass:{type:[String,Array,Object]},titleSrOnly:{type:Boolean,default:!1},ariaLabel:{type:String},headerBgVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"headerBgVariant")}},headerBorderVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"headerBorderVariant")}},headerTextVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"headerTextVariant")}},headerCloseVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"headerCloseVariant")}},headerClass:{type:[String,Array,Object]},bodyBgVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"bodyBgVariant")}},bodyTextVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"bodyTextVariant")}},modalClass:{type:[String,Array,Object]},dialogClass:{type:[String,Array,Object]},contentClass:{type:[String,Array,Object]},bodyClass:{type:[String,Array,Object]},footerBgVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"footerBgVariant")}},footerBorderVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"footerBorderVariant")}},footerTextVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"footerTextVariant")}},footerClass:{type:[String,Array,Object]},hideHeader:{type:Boolean,default:!1},hideFooter:{type:Boolean,default:!1},hideHeaderClose:{type:Boolean,default:!1},hideBackdrop:{type:Boolean,default:!1},okOnly:{type:Boolean,default:!1},okDisabled:{type:Boolean,default:!1},cancelDisabled:{type:Boolean,default:!1},visible:{type:Boolean,default:!1},returnFocus:{type:[HTMLElement,String,Object],default:null},headerCloseContent:{type:String,default:function(){return getComponentConfig(NAME$u,"headerCloseContent")}},headerCloseLabel:{type:String,default:function(){return getComponentConfig(NAME$u,"headerCloseLabel")}},cancelTitle:{type:String,default:function(){return getComponentConfig(NAME$u,"cancelTitle")}},cancelTitleHtml:{type:String},okTitle:{type:String,default:function(){return getComponentConfig(NAME$u,"okTitle")}},okTitleHtml:{type:String},cancelVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"cancelVariant")}},okVariant:{type:String,default:function(){return getComponentConfig(NAME$u,"okVariant")}},lazy:{type:Boolean,default:!1},busy:{type:Boolean,default:!1},static:{type:Boolean,default:!1},autoFocusButton:{type:String,default:null,validator:function(val){return isUndefinedOrNull(val)||arrayIncludes(["ok","cancel","close"],val)}}},BModal=Vue.extend({name:NAME$u,mixins:[attrsMixin,idMixin,listenOnDocumentMixin,listenOnRootMixin,listenOnWindowMixin,normalizeSlotMixin,scopedStyleAttrsMixin],inheritAttrs:!1,model:{prop:"visible",event:"change"},props:props$J,data:function(){return{isHidden:!0,isVisible:!1,isTransitioning:!1,isShow:!1,isBlock:!1,isOpening:!1,isClosing:!1,ignoreBackdropClick:!1,isModalOverflowing:!1,return_focus:this.returnFocus||null,scrollbarWidth:0,zIndex:modalManager.getBaseZIndex(),isTop:!0,isBodyOverflowing:!1}},computed:{modalId:function(){return this.safeId()},modalOuterId:function(){return this.safeId("__BV_modal_outer_")},modalHeaderId:function(){return this.safeId("__BV_modal_header_")},modalBodyId:function(){return this.safeId("__BV_modal_body_")},modalTitleId:function(){return this.safeId("__BV_modal_title_")},modalContentId:function(){return this.safeId("__BV_modal_content_")},modalFooterId:function(){return this.safeId("__BV_modal_footer_")},modalBackdropId:function(){return this.safeId("__BV_modal_backdrop_")},modalClasses:function(){return[{fade:!this.noFade,show:this.isShow},this.modalClass]},modalStyles:function(){var sbWidth="".concat(this.scrollbarWidth,"px");return{paddingLeft:!this.isBodyOverflowing&&this.isModalOverflowing?sbWidth:"",paddingRight:this.isBodyOverflowing&&!this.isModalOverflowing?sbWidth:"",display:this.isBlock?"block":"none"}},dialogClasses:function(){var _ref;return[(_ref={},_defineProperty(_ref,"modal-".concat(this.size),this.size),_defineProperty(_ref,"modal-dialog-centered",this.centered),_defineProperty(_ref,"modal-dialog-scrollable",this.scrollable),_ref),this.dialogClass]},headerClasses:function(){var _ref2;return[(_ref2={},_defineProperty(_ref2,"bg-".concat(this.headerBgVariant),this.headerBgVariant),_defineProperty(_ref2,"text-".concat(this.headerTextVariant),this.headerTextVariant),_defineProperty(_ref2,"border-".concat(this.headerBorderVariant),this.headerBorderVariant),_ref2),this.headerClass]},titleClasses:function(){return[{"sr-only":this.titleSrOnly},this.titleClass]},bodyClasses:function(){var _ref3;return[(_ref3={},_defineProperty(_ref3,"bg-".concat(this.bodyBgVariant),this.bodyBgVariant),_defineProperty(_ref3,"text-".concat(this.bodyTextVariant),this.bodyTextVariant),_ref3),this.bodyClass]},footerClasses:function(){var _ref4;return[(_ref4={},_defineProperty(_ref4,"bg-".concat(this.footerBgVariant),this.footerBgVariant),_defineProperty(_ref4,"text-".concat(this.footerTextVariant),this.footerTextVariant),_defineProperty(_ref4,"border-".concat(this.footerBorderVariant),this.footerBorderVariant),_ref4),this.footerClass]},modalOuterStyle:function(){return{position:"absolute",zIndex:this.zIndex}},slotScope:function(){return{ok:this.onOk,cancel:this.onCancel,close:this.onClose,hide:this.hide,visible:this.isVisible}},computeIgnoreEnforceFocusSelector:function(){return concat(this.ignoreEnforceFocusSelector).filter(identity).join(",").trim()},computedAttrs:function(){return _objectSpread2(_objectSpread2(_objectSpread2({},this.static?{}:this.scopedStyleAttrs),this.bvAttrs),{},{id:this.modalOuterId})},computedModalAttrs:function(){var isVisible=this.isVisible,ariaLabel=this.ariaLabel;return{id:this.modalId,role:"dialog","aria-hidden":isVisible?null:"true","aria-modal":isVisible?"true":null,"aria-label":ariaLabel,"aria-labelledby":this.hideHeader||ariaLabel||!(this.hasNormalizedSlot("modal-title")||this.titleHtml||this.title)?null:this.modalTitleId,"aria-describedby":this.modalBodyId}}},watch:{visible:function(newVal,oldVal){newVal!==oldVal&&this[newVal?"show":"hide"]()}},created:function(){this.$_observer=null},mounted:function(){this.zIndex=modalManager.getBaseZIndex(),this.listenOnRoot("bv::show::modal",this.showHandler),this.listenOnRoot("bv::hide::modal",this.hideHandler),this.listenOnRoot("bv::toggle::modal",this.toggleHandler),this.listenOnRoot("bv::modal::show",this.modalListener),!0===this.visible&&this.$nextTick(this.show)},beforeDestroy:function(){this.setObserver(!1),this.isVisible&&(this.isVisible=!1,this.isShow=!1,this.isTransitioning=!1)},methods:{setObserver:function(){var on=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.$_observer&&this.$_observer.disconnect(),this.$_observer=null,on&&(this.$_observer=observeDom(this.$refs.content,this.checkModalOverflow.bind(this),OBSERVER_CONFIG))},updateModel:function(val){val!==this.visible&&this.$emit("change",val)},buildEvent:function(type){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new BvModalEvent(type,_objectSpread2(_objectSpread2({cancelable:!1,target:this.$refs.modal||this.$el||null,relatedTarget:null,trigger:null},options),{},{vueTarget:this,componentId:this.modalId}))},show:function(){if(!this.isVisible&&!this.isOpening)if(this.isClosing)this.$once("hidden",this.show);else{this.isOpening=!0,this.return_focus=this.return_focus||this.getActiveElement();var showEvt=this.buildEvent("show",{cancelable:!0});if(this.emitEvent(showEvt),showEvt.defaultPrevented||this.isVisible)return this.isOpening=!1,void this.updateModel(!1);this.doShow()}},hide:function(){var trigger=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(this.isVisible&&!this.isClosing){this.isClosing=!0;var hideEvt=this.buildEvent("hide",{cancelable:"FORCE"!==trigger,trigger:trigger||null});if("ok"===trigger?this.$emit("ok",hideEvt):"cancel"===trigger?this.$emit("cancel",hideEvt):"headerclose"===trigger&&this.$emit("close",hideEvt),this.emitEvent(hideEvt),hideEvt.defaultPrevented||!this.isVisible)return this.isClosing=!1,void this.updateModel(!0);this.setObserver(!1),this.isVisible=!1,this.updateModel(!1)}},toggle:function(triggerEl){triggerEl&&(this.return_focus=triggerEl),this.isVisible?this.hide("toggle"):this.show()},getActiveElement:function(){var activeElement=getActiveElement(isBrowser?[document.body]:[]);return activeElement&&activeElement.focus?activeElement:null},doShow:function(){var _this=this;modalManager.modalsAreOpen&&this.noStacking?this.listenOnRootOnce("bv::modal::hidden",this.doShow):(modalManager.registerModal(this),this.isHidden=!1,this.$nextTick((function(){_this.isVisible=!0,_this.isOpening=!1,_this.updateModel(!0),_this.$nextTick((function(){_this.setObserver(!0)}))})))},onBeforeEnter:function(){this.isTransitioning=!0,this.setResizeEvent(!0)},onEnter:function(){var _this2=this;this.isBlock=!0,requestAF((function(){requestAF((function(){_this2.isShow=!0}))}))},onAfterEnter:function(){var _this3=this;this.checkModalOverflow(),this.isTransitioning=!1,requestAF((function(){_this3.emitEvent(_this3.buildEvent("shown")),_this3.setEnforceFocus(!0),_this3.$nextTick((function(){_this3.focusFirst()}))}))},onBeforeLeave:function(){this.isTransitioning=!0,this.setResizeEvent(!1),this.setEnforceFocus(!1)},onLeave:function(){this.isShow=!1},onAfterLeave:function(){var _this4=this;this.isBlock=!1,this.isTransitioning=!1,this.isModalOverflowing=!1,this.isHidden=!0,this.$nextTick((function(){_this4.isClosing=!1,modalManager.unregisterModal(_this4),_this4.returnFocusTo(),_this4.emitEvent(_this4.buildEvent("hidden"))}))},emitEvent:function(bvModalEvt){var type=bvModalEvt.type;this.emitOnRoot("bv::modal::".concat(type),bvModalEvt,bvModalEvt.componentId),this.$emit(type,bvModalEvt)},onDialogMousedown:function(){var _this5=this,modal=this.$refs.modal;eventOn(modal,"mouseup",(function onceModalMouseup(evt){eventOff(modal,"mouseup",onceModalMouseup,EVENT_OPTIONS_NO_CAPTURE),evt.target===modal&&(_this5.ignoreBackdropClick=!0)}),EVENT_OPTIONS_NO_CAPTURE)},onClickOut:function(evt){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:this.isVisible&&!this.noCloseOnBackdrop&&contains(document.body,evt.target)&&(contains(this.$refs.content,evt.target)||this.hide("backdrop"))},onOk:function(){this.hide("ok")},onCancel:function(){this.hide("cancel")},onClose:function(){this.hide("headerclose")},onEsc:function(evt){evt.keyCode===KEY_CODES.ESC&&this.isVisible&&!this.noCloseOnEsc&&this.hide("esc")},focusHandler:function(evt){var content=this.$refs.content,target=evt.target;if(!(this.noEnforceFocus||!this.isTop||!this.isVisible||!content||document===target||contains(content,target)||this.computeIgnoreEnforceFocusSelector&&closest(this.computeIgnoreEnforceFocusSelector,target,!0))){var tabables=getTabables(this.$refs.content),_this$$refs=this.$refs,bottomTrap=_this$$refs.bottomTrap,topTrap=_this$$refs.topTrap;if(bottomTrap&&target===bottomTrap){if(attemptFocus(tabables[0]))return}else if(topTrap&&target===topTrap&&attemptFocus(tabables[tabables.length-1]))return;attemptFocus(content,{preventScroll:!0})}},setEnforceFocus:function(on){this.listenDocument(on,"focusin",this.focusHandler)},setResizeEvent:function(on){this.listenWindow(on,"resize",this.checkModalOverflow),this.listenWindow(on,"orientationchange",this.checkModalOverflow)},showHandler:function(id,triggerEl){id===this.modalId&&(this.return_focus=triggerEl||this.getActiveElement(),this.show())},hideHandler:function(id){id===this.modalId&&this.hide("event")},toggleHandler:function(id,triggerEl){id===this.modalId&&this.toggle(triggerEl)},modalListener:function(bvEvt){this.noStacking&&bvEvt.vueTarget!==this&&this.hide()},focusFirst:function(){var _this6=this;isBrowser&&requestAF((function(){var modal=_this6.$refs.modal,content=_this6.$refs.content,activeElement=_this6.getActiveElement();if(modal&&content&&(!activeElement||!contains(content,activeElement))){var ok=_this6.$refs["ok-button"],cancel=_this6.$refs["cancel-button"],close=_this6.$refs["close-button"],autoFocus=_this6.autoFocusButton,el="ok"===autoFocus&&ok?ok.$el||ok:"cancel"===autoFocus&&cancel?cancel.$el||cancel:"close"===autoFocus&&close?close.$el||close:content;attemptFocus(el),el===content&&_this6.$nextTick((function(){modal.scrollTop=0}))}}))},returnFocusTo:function(){var el=this.returnFocus||this.return_focus||null;this.return_focus=null,this.$nextTick((function(){(el=isString(el)?select(el):el)&&(el=el.$el||el,attemptFocus(el))}))},checkModalOverflow:function(){if(this.isVisible){var modal=this.$refs.modal;this.isModalOverflowing=modal.scrollHeight>document.documentElement.clientHeight}},makeModal:function(h){var $header=h();if(!this.hideHeader){var $modalHeader=this.normalizeSlot("modal-header",this.slotScope);if(!$modalHeader){var $closeButton=h();this.hideHeaderClose||($closeButton=h(BButtonClose,{props:{content:this.headerCloseContent,disabled:this.isTransitioning,ariaLabel:this.headerCloseLabel,textVariant:this.headerCloseVariant||this.headerTextVariant},on:{click:this.onClose},ref:"close-button"},[this.normalizeSlot("modal-header-close")])),$modalHeader=[h(this.titleTag,{staticClass:"modal-title",class:this.titleClasses,attrs:{id:this.modalTitleId},domProps:this.hasNormalizedSlot("modal-title")?{}:htmlOrText(this.titleHtml,this.title)},[this.normalizeSlot("modal-title",this.slotScope)]),$closeButton]}$header=h("header",{staticClass:"modal-header",class:this.headerClasses,attrs:{id:this.modalHeaderId},ref:"header"},[$modalHeader])}var $body=h("div",{staticClass:"modal-body",class:this.bodyClasses,attrs:{id:this.modalBodyId},ref:"body"},this.normalizeSlot("default",this.slotScope)),$footer=h();if(!this.hideFooter){var $modalFooter=this.normalizeSlot("modal-footer",this.slotScope);if(!$modalFooter){var $cancelButton=h();this.okOnly||($cancelButton=h(BButton,{props:{variant:this.cancelVariant,size:this.buttonSize,disabled:this.cancelDisabled||this.busy||this.isTransitioning},domProps:this.hasNormalizedSlot("modal-cancel")?{}:htmlOrText(this.cancelTitleHtml,this.cancelTitle),on:{click:this.onCancel},ref:"cancel-button"},this.normalizeSlot("modal-cancel"))),$modalFooter=[$cancelButton,h(BButton,{props:{variant:this.okVariant,size:this.buttonSize,disabled:this.okDisabled||this.busy||this.isTransitioning},domProps:this.hasNormalizedSlot("modal-ok")?{}:htmlOrText(this.okTitleHtml,this.okTitle),on:{click:this.onOk},ref:"ok-button"},this.normalizeSlot("modal-ok"))]}$footer=h("footer",{staticClass:"modal-footer",class:this.footerClasses,attrs:{id:this.modalFooterId},ref:"footer"},[$modalFooter])}var $modalContent=h("div",{staticClass:"modal-content",class:this.contentClass,attrs:{id:this.modalContentId,tabindex:"-1"},ref:"content"},[$header,$body,$footer]),$tabTrapTop=h(),$tabTrapBottom=h();this.isVisible&&!this.noEnforceFocus&&($tabTrapTop=h("span",{ref:"topTrap",attrs:{tabindex:"0"}}),$tabTrapBottom=h("span",{ref:"bottomTrap",attrs:{tabindex:"0"}}));var $modalDialog=h("div",{staticClass:"modal-dialog",class:this.dialogClasses,on:{mousedown:this.onDialogMousedown},ref:"dialog"},[$tabTrapTop,$modalContent,$tabTrapBottom]),$modal=h("div",{staticClass:"modal",class:this.modalClasses,style:this.modalStyles,attrs:this.computedModalAttrs,on:{keydown:this.onEsc,click:this.onClickOut},directives:[{name:"show",value:this.isVisible}],ref:"modal"},[$modalDialog]);$modal=h("transition",{props:{enterClass:"",enterToClass:"",enterActiveClass:"",leaveClass:"",leaveActiveClass:"",leaveToClass:""},on:{beforeEnter:this.onBeforeEnter,enter:this.onEnter,afterEnter:this.onAfterEnter,beforeLeave:this.onBeforeLeave,leave:this.onLeave,afterLeave:this.onAfterLeave}},[$modal]);var $backdrop=h();return!this.hideBackdrop&&this.isVisible&&($backdrop=h("div",{staticClass:"modal-backdrop",attrs:{id:this.modalBackdropId}},this.normalizeSlot("modal-backdrop"))),$backdrop=h(BVTransition,{props:{noFade:this.noFade}},[$backdrop]),h("div",{style:this.modalOuterStyle,attrs:this.computedAttrs,key:"modal-outer-".concat(this._uid)},[$modal,$backdrop])}},render:function(h){return this.static?this.lazy&&this.isHidden?h():this.makeModal(h):this.isHidden?h():h(BTransporterSingle,[this.makeModal(h)])}}),PROPERTY="__bv_modal_directive__",getTarget=function(_ref){var _ref$modifiers=_ref.modifiers,modifiers=void 0===_ref$modifiers?{}:_ref$modifiers,arg=_ref.arg,value=_ref.value;return isString(value)?value:isString(arg)?arg:keys(modifiers).reverse()[0]},getTriggerElement=function(el){return el&&matches(el,".dropdown-menu > li, li.nav-item")&&select("a, button",el)||el},setRole=function(trigger){trigger&&"BUTTON"!==trigger.tagName&&(hasAttr(trigger,"role")||setAttr(trigger,"role","button"),"A"===trigger.tagName||hasAttr(trigger,"tabindex")||setAttr(trigger,"tabindex","0"))},unbind$1=function(el){var oldProp=el[PROPERTY]||{},trigger=oldProp.trigger,handler=oldProp.handler;trigger&&handler&&(eventOff(trigger,"click",handler,EVENT_OPTIONS_PASSIVE),eventOff(trigger,"keydown",handler,EVENT_OPTIONS_PASSIVE),eventOff(el,"click",handler,EVENT_OPTIONS_PASSIVE),eventOff(el,"keydown",handler,EVENT_OPTIONS_PASSIVE)),delete el[PROPERTY]},componentUpdated$1=function(el,binding,vnode){var oldProp=el[PROPERTY]||{},target=getTarget(binding),trigger=getTriggerElement(el);target===oldProp.target&&trigger===oldProp.trigger||(unbind$1(el),function(el,binding,vnode){var target=getTarget(binding),trigger=getTriggerElement(el);if(target&&trigger){var handler=function(evt){var currentTarget=evt.currentTarget;if(!isDisabled(currentTarget)){var type=evt.type,key=evt.keyCode;"click"!==type&&("keydown"!==type||key!==KEY_CODES.ENTER&&key!==KEY_CODES.SPACE)||vnode.context.$root.$emit("bv::show::modal",target,currentTarget)}};el[PROPERTY]={handler:handler,target:target,trigger:trigger},setRole(trigger),eventOn(trigger,"click",handler,EVENT_OPTIONS_PASSIVE),"BUTTON"!==trigger.tagName&&"button"===getAttr(trigger,"role")&&eventOn(trigger,"keydown",handler,EVENT_OPTIONS_PASSIVE)}}(el,binding,vnode)),setRole(trigger)},VBModal={inserted:componentUpdated$1,updated:function(){},componentUpdated:componentUpdated$1,unbind:unbind$1},BASE_PROPS=["id"].concat(_toConsumableArray(keys(omit(props$J,["busy","lazy","noStacking","static","visible"])))),defaultResolver=function(){},propsToSlots={msgBoxContent:"default",title:"modal-title",okTitle:"modal-ok",cancelTitle:"modal-cancel"},filterOptions=function(options){return BASE_PROPS.reduce((function(memo,key){return isUndefined(options[key])||(memo[key]=options[key]),memo}),{})},BVModalPlugin=pluginFactory({plugins:{plugin:function(Vue){var BMsgBox=Vue.extend({name:"BMsgBox",extends:BModal,destroyed:function(){this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)},mounted:function(){var _this=this,handleDestroy=function(){var self=_this;_this.$nextTick((function(){setTimeout((function(){return self.$destroy()}),0)}))};this.$parent.$once("hook:destroyed",handleDestroy),this.$once("hidden",handleDestroy),this.$router&&this.$route&&this.$once("hook:beforeDestroy",this.$watch("$router",handleDestroy)),this.show()}}),makeMsgBox=function($parent,content){var options=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},resolver=arguments.length>3?arguments[3]:void 0;if(content&&!warnNoPromiseSupport("$bvModal")&&!warnNotClient("$bvModal")&&isFunction(resolver))return function($parent,props){var resolver=arguments.length>2&&void 0!==arguments[2]?arguments[2]:defaultResolver;if(!warnNotClient("$bvModal")&&!warnNoPromiseSupport("$bvModal")){var msgBox=new BMsgBox({parent:$parent,propsData:_objectSpread2(_objectSpread2(_objectSpread2({},filterOptions(getComponentConfig("BModal")||{})),{},{hideHeaderClose:!0,hideHeader:!(props.title||props.titleHtml)},omit(props,keys(propsToSlots))),{},{lazy:!1,busy:!1,visible:!1,noStacking:!1,noEnforceFocus:!1})});return keys(propsToSlots).forEach((function(prop){isUndefined(props[prop])||(msgBox.$slots[propsToSlots[prop]]=concat(props[prop]))})),new Promise((function(resolve,reject){var resolved=!1;msgBox.$once("hook:destroyed",(function(){resolved||reject(new Error("BootstrapVue MsgBox destroyed before resolve"))})),msgBox.$on("hide",(function(bvModalEvt){if(!bvModalEvt.defaultPrevented){var result=resolver(bvModalEvt);bvModalEvt.defaultPrevented||(resolved=!0,resolve(result))}}));var div=document.createElement("div");document.body.appendChild(div),msgBox.$mount(div)}))}}($parent,_objectSpread2(_objectSpread2({},filterOptions(options)),{},{msgBoxContent:content}),resolver)},BvModal=function(){function BvModal(vm){_classCallCheck(this,BvModal),assign(this,{_vm:vm,_root:vm.$root}),defineProperties(this,{_vm:{enumerable:!0,configurable:!1,writable:!1},_root:{enumerable:!0,configurable:!1,writable:!1}})}return _createClass(BvModal,[{key:"show",value:function(id){if(id&&this._root){for(var _this$_root,_len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];(_this$_root=this._root).$emit.apply(_this$_root,["bv::show::modal",id].concat(args))}}},{key:"hide",value:function(id){if(id&&this._root){for(var _this$_root2,_len2=arguments.length,args=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++)args[_key2-1]=arguments[_key2];(_this$_root2=this._root).$emit.apply(_this$_root2,["bv::hide::modal",id].concat(args))}}},{key:"msgBoxOk",value:function(message){var props=_objectSpread2(_objectSpread2({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),{},{okOnly:!0,okDisabled:!1,hideFooter:!1,msgBoxContent:message});return makeMsgBox(this._vm,message,props,(function(){return!0}))}},{key:"msgBoxConfirm",value:function(message){var props=_objectSpread2(_objectSpread2({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),{},{okOnly:!1,okDisabled:!1,cancelDisabled:!1,hideFooter:!1});return makeMsgBox(this._vm,message,props,(function(bvModalEvt){var trigger=bvModalEvt.trigger;return"ok"===trigger||"cancel"!==trigger&&null}))}}]),BvModal}();Vue.mixin({beforeCreate:function(){this._bv__modal=new BvModal(this)}}),hasOwnProperty(Vue.prototype,"$bvModal")||defineProperty(Vue.prototype,"$bvModal",{get:function(){return this&&this._bv__modal||warn('"'.concat("$bvModal",'" must be accessed from a Vue instance "this" context.'),"BModal"),this._bv__modal}})}}}),ModalPlugin=pluginFactory({components:{BModal:BModal},directives:{VBModal:VBModal},plugins:{BVModalPlugin:BVModalPlugin}}),props$K={tag:{type:String,default:"ul"},fill:{type:Boolean,default:!1},justified:{type:Boolean,default:!1},align:{type:String},tabs:{type:Boolean,default:!1},pills:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},small:{type:Boolean,default:!1},cardHeader:{type:Boolean,default:!1}},BNav=Vue.extend({name:"BNav",functional:!0,props:props$K,render:function(h,_ref){var _class,value,props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{staticClass:"nav",class:(_class={"nav-tabs":props.tabs,"nav-pills":props.pills&&!props.tabs,"card-header-tabs":!props.vertical&&props.cardHeader&&props.tabs,"card-header-pills":!props.vertical&&props.cardHeader&&props.pills&&!props.tabs,"flex-column":props.vertical,"nav-fill":!props.vertical&&props.fill,"nav-justified":!props.vertical&&props.justified},_defineProperty(_class,(value=props.align,"justify-content-".concat(value="left"===value?"start":"right"===value?"end":value)),!props.vertical&&props.align),_defineProperty(_class,"small",props.small),_class)}),children)}}),props$L=omit(props$1,["event","routerTag"]),BNavItem=Vue.extend({name:"BNavItem",functional:!0,props:_objectSpread2(_objectSpread2({},props$L),{},{linkAttrs:{type:Object,default:function(){}},linkClasses:{type:[String,Object,Array],default:null}}),render:function(h,_ref){var props=_ref.props,data=_ref.data,listeners=_ref.listeners,children=_ref.children;return delete data.on,h("li",a(data,{staticClass:"nav-item"}),[h(BLink,{staticClass:"nav-link",class:props.linkClasses,attrs:props.linkAttrs,props:props,on:listeners},children)])}}),BNavText=Vue.extend({name:"BNavText",functional:!0,props:{},render:function(h,_ref){var data=_ref.data,children=_ref.children;return h("li",a(data,{staticClass:"navbar-text"}),children)}}),props$N=_objectSpread2(_objectSpread2({},omit(props$q,["inline"])),{},{formClass:{type:[String,Array,Object]}}),BNavForm=Vue.extend({name:"BNavForm",functional:!0,props:props$N,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children,_ref$listeners=_ref.listeners,listeners=void 0===_ref$listeners?{}:_ref$listeners,attrs=data.attrs;data.attrs={},data.on={};var $form=h(BForm,{class:props.formClass,props:_objectSpread2(_objectSpread2({},props),{},{inline:!0}),attrs:attrs,on:listeners},children);return h("li",a(data,{staticClass:"form-inline"}),[$form])}}),props$O=pluckProps(["text","html","menuClass","toggleClass","noCaret","role","lazy"],props$l),BNavItemDropdown=Vue.extend({name:"BNavItemDropdown",mixins:[idMixin,dropdownMixin,normalizeSlotMixin],props:props$O,computed:{toggleId:function(){return this.safeId("_BV_toggle_")},isNav:function(){return!0},dropdownClasses:function(){return[this.directionClass,{show:this.visible}]},menuClasses:function(){return[this.menuClass,{"dropdown-menu-right":this.right,show:this.visible}]},toggleClasses:function(){return[this.toggleClass,{"dropdown-toggle-no-caret":this.noCaret}]}},render:function(h){var toggleId=this.toggleId,visible=this.visible,$toggle=h(BLink,{staticClass:"nav-link dropdown-toggle",class:this.toggleClasses,props:{href:"#".concat(this.id||""),disabled:this.disabled},attrs:{id:toggleId,role:"button","aria-haspopup":"true","aria-expanded":visible?"true":"false"},on:{mousedown:this.onMousedown,click:this.toggle,keydown:this.toggle},ref:"toggle"},[this.normalizeSlot(["button-content","text"])||h("span",{domProps:htmlOrText(this.html,this.text)})]),$menu=h("ul",{staticClass:"dropdown-menu",class:this.menuClasses,attrs:{tabindex:"-1","aria-labelledby":toggleId},on:{keydown:this.onKeydown},ref:"menu"},!this.lazy||visible?this.normalizeSlot("default",{hide:this.hide}):[h()]);return h("li",{staticClass:"nav-item b-nav-dropdown dropdown",class:this.dropdownClasses,attrs:{id:this.safeId()}},[$toggle,$menu])}}),NavPlugin=pluginFactory({components:{BNav:BNav,BNavItem:BNavItem,BNavText:BNavText,BNavForm:BNavForm,BNavItemDropdown:BNavItemDropdown,BNavItemDd:BNavItemDropdown,BNavDropdown:BNavItemDropdown,BNavDd:BNavItemDropdown},plugins:{DropdownPlugin:DropdownPlugin}}),props$P={tag:{type:String,default:"nav"},type:{type:String,default:"light"},variant:{type:String,default:function(){return getComponentConfig("BNavbar","variant")}},toggleable:{type:[Boolean,String],default:!1},fixed:{type:String},sticky:{type:Boolean,default:!1},print:{type:Boolean,default:!1}},BNavbar=Vue.extend({name:"BNavbar",mixins:[normalizeSlotMixin],props:props$P,provide:function(){return{bvNavbar:this}},computed:{breakpointClass:function(){var breakpoint=null,xs=getBreakpoints()[0],toggleable=this.toggleable;return toggleable&&isString(toggleable)&&toggleable!==xs?breakpoint="navbar-expand-".concat(toggleable):!1===toggleable&&(breakpoint="navbar-expand"),breakpoint}},render:function(h){var _ref;return h(this.tag,{staticClass:"navbar",class:[(_ref={"d-print":this.print,"sticky-top":this.sticky},_defineProperty(_ref,"navbar-".concat(this.type),this.type),_defineProperty(_ref,"bg-".concat(this.variant),this.variant),_defineProperty(_ref,"fixed-".concat(this.fixed),this.fixed),_ref),this.breakpointClass],attrs:{role:isTag(this.tag,"nav")?null:"navigation"}},[this.normalizeSlot("default")])}}),props$Q=pluckProps(["tag","fill","justified","align","small"],props$K),BNavbarNav=Vue.extend({name:"BNavbarNav",functional:!0,props:props$Q,render:function(h,_ref){var _class,value,props=_ref.props,data=_ref.data,children=_ref.children;return h(props.tag,a(data,{staticClass:"navbar-nav",class:(_class={"nav-fill":props.fill,"nav-justified":props.justified},_defineProperty(_class,(value=props.align,"justify-content-".concat(value="left"===value?"start":"right"===value?"end":value)),props.align),_defineProperty(_class,"small",props.small),_class)}),children)}}),linkProps$4=omit(props$1,["event","routerTag"]);linkProps$4.href.default=void 0,linkProps$4.to.default=void 0;var props$R=_objectSpread2({tag:{type:String,default:"div"}},linkProps$4),BNavbarBrand=Vue.extend({name:"BNavbarBrand",functional:!0,props:props$R,render:function(h,_ref){var props=_ref.props,data=_ref.data,children=_ref.children,isLink=props.to||props.href;return h(isLink?BLink:props.tag,a(data,{staticClass:"navbar-brand",props:isLink?pluckProps(linkProps$4,props):{}}),children)}}),BNavbarToggle=Vue.extend({name:"BNavbarToggle",directives:{BToggle:VBToggle},mixins:[listenOnRootMixin,normalizeSlotMixin],props:{label:{type:String,default:function(){return getComponentConfig("BNavbarToggle","label")}},target:{type:String,required:!0},disabled:{type:Boolean,default:!1}},data:function(){return{toggleState:!1}},created:function(){this.listenOnRoot(EVENT_STATE,this.handleStateEvt),this.listenOnRoot(EVENT_STATE_SYNC,this.handleStateEvt)},methods:{onClick:function(evt){this.disabled||this.$emit("click",evt)},handleStateEvt:function(id,state){id===this.target&&(this.toggleState=state)}},render:function(h){var disabled=this.disabled;return h("button",{staticClass:"navbar-toggler",class:{disabled:disabled},directives:[{name:"BToggle",value:this.target}],attrs:{type:"button",disabled:disabled,"aria-label":this.label},on:{click:this.onClick}},[this.normalizeSlot("default",{expanded:this.toggleState})||h("span",{staticClass:"".concat("navbar-toggler","-icon")})])}}),NavbarPlugin=pluginFactory({components:{BNavbar:BNavbar,BNavbarNav:BNavbarNav,BNavbarBrand:BNavbarBrand,BNavbarToggle:BNavbarToggle,BNavToggle:BNavbarToggle},plugins:{NavPlugin:NavPlugin,CollapsePlugin:CollapsePlugin,DropdownPlugin:DropdownPlugin}}),BSpinner=Vue.extend({name:"BSpinner",functional:!0,props:{type:{type:String,default:"border"},label:{type:String},variant:{type:String,default:function(){return getComponentConfig("BSpinner","variant")}},small:{type:Boolean,default:!1},role:{type:String,default:"status"},tag:{type:String,default:"span"}},render:function(h,_ref){var _class,props=_ref.props,data=_ref.data,slots=_ref.slots,scopedSlots=_ref.scopedSlots,$slots=slots(),label=normalizeSlot("label",{},scopedSlots||{},$slots)||props.label;return label&&(label=h("span",{staticClass:"sr-only"},label)),h(props.tag,a(data,{attrs:{role:label?props.role||"status":null,"aria-hidden":label?null:"true"},class:(_class={},_defineProperty(_class,"spinner-".concat(props.type),props.type),_defineProperty(_class,"spinner-".concat(props.type,"-sm"),props.small),_defineProperty(_class,"text-".concat(props.variant),props.variant),_class)}),[label||h()])}}),positionCover={top:0,left:0,bottom:0,right:0},OverlayPlugin=pluginFactory({components:{BOverlay:Vue.extend({name:"BOverlay",mixins:[normalizeSlotMixin],props:{show:{type:Boolean,default:!1},variant:{type:String,default:"light"},bgColor:{type:String},opacity:{type:[Number,String],default:.85,validator:function(value){var number=toFloat(value,0);return number>=0&&number<=1}},blur:{type:String,default:"2px"},rounded:{type:[Boolean,String],default:!1},noCenter:{type:Boolean,default:!1},noFade:{type:Boolean,default:!1},spinnerType:{type:String,default:"border"},spinnerVariant:{type:String},spinnerSmall:{type:Boolean,default:!1},overlayTag:{type:String,default:"div"},wrapTag:{type:String,default:"div"},noWrap:{type:Boolean,default:!1},fixed:{type:Boolean,default:!1},zIndex:{type:[Number,String],default:10}},computed:{computedRounded:function(){var rounded=this.rounded;return!0===rounded||""===rounded?"rounded":rounded?"rounded-".concat(rounded):""},computedVariant:function(){return this.variant&&!this.bgColor?"bg-".concat(this.variant):""},overlayScope:function(){return{spinnerType:this.spinnerType||null,spinnerVariant:this.spinnerVariant||null,spinnerSmall:this.spinnerSmall}}},methods:{defaultOverlayFn:function(_ref){var spinnerType=_ref.spinnerType,spinnerVariant=_ref.spinnerVariant,spinnerSmall=_ref.spinnerSmall;return this.$createElement(BSpinner,{props:{type:spinnerType,variant:spinnerVariant,small:spinnerSmall}})}},render:function(h){var _this=this,$overlay=h();if(this.show){var scope=this.overlayScope,$background=h("div",{staticClass:"position-absolute",class:[this.computedVariant,this.computedRounded],style:_objectSpread2(_objectSpread2({},positionCover),{},{opacity:this.opacity,backgroundColor:this.bgColor||null,backdropFilter:this.blur?"blur(".concat(this.blur,")"):null})}),$content=h("div",{staticClass:"position-absolute",style:this.noCenter?_objectSpread2({},positionCover):{top:"50%",left:"50%",transform:"translateX(-50%) translateY(-50%)"}},[this.normalizeSlot("overlay",scope)||this.defaultOverlayFn(scope)]);$overlay=h(this.overlayTag,{key:"overlay",staticClass:"b-overlay",class:{"position-absolute":!this.noWrap||this.noWrap&&!this.fixed,"position-fixed":this.noWrap&&this.fixed},style:_objectSpread2(_objectSpread2({},positionCover),{},{zIndex:this.zIndex||10}),on:{click:function(evt){return _this.$emit("click",evt)}}},[$background,$content])}return $overlay=h(BVTransition,{props:{noFade:this.noFade,appear:!0},on:{"after-enter":function(){return _this.$emit("shown")},"after-leave":function(){return _this.$emit("hidden")}}},[$overlay]),this.noWrap?$overlay:h(this.wrapTag,{staticClass:"b-overlay-wrap position-relative",attrs:{"aria-busy":this.show?"true":null}},this.noWrap?[$overlay]:[this.normalizeSlot("default"),$overlay])}})}}),range=function(length){return Array.apply(null,{length:length})},sanitizeLimit=function(val){var limit=toInteger(val)||1;return limit<1?5:limit},sanitizeCurrentPage=function(val,numberOfPages){var page=toInteger(val)||1;return page>numberOfPages?numberOfPages:page<1?1:page},onSpaceKey=function(evt){if(evt.keyCode===KEY_CODES.SPACE)return evt.preventDefault(),evt.stopImmediatePropagation(),evt.stopPropagation(),evt.currentTarget.click(),!1},paginationMixin={mixins:[normalizeSlotMixin],model:{prop:"value",event:"input"},props:{disabled:{type:Boolean,default:!1},value:{type:[Number,String],default:null,validator:function(value){return!(!isNull(value)&&toInteger(value,0)<1)||(warn('"v-model" value must be a number greater than "0"',"BPagination"),!1)}},limit:{type:[Number,String],default:5,validator:function(value){return!(toInteger(value,0)<1)||(warn('Prop "limit" must be a number greater than "0"',"BPagination"),!1)}},align:{type:String,default:"left"},pills:{type:Boolean,default:!1},hideGotoEndButtons:{type:Boolean,default:!1},ariaLabel:{type:String,default:"Pagination"},labelFirstPage:{type:String,default:"Go to first page"},firstText:{type:String,default:"«"},firstNumber:{type:Boolean,default:!1},firstClass:{type:[String,Array,Object],default:null},labelPrevPage:{type:String,default:"Go to previous page"},prevText:{type:String,default:"‹"},prevClass:{type:[String,Array,Object],default:null},labelNextPage:{type:String,default:"Go to next page"},nextText:{type:String,default:"›"},nextClass:{type:[String,Array,Object]},labelLastPage:{type:String,default:"Go to last page"},lastText:{type:String,default:"»"},lastNumber:{type:Boolean,default:!1},lastClass:{type:[String,Array,Object]},labelPage:{type:[String,Function],default:"Go to page"},pageClass:{type:[String,Array,Object]},hideEllipsis:{type:Boolean,default:!1},ellipsisText:{type:String,default:"…"},ellipsisClass:{type:[String,Array,Object]}},data:function(){var currentPage=toInteger(this.value,0);return{currentPage:currentPage=currentPage>0?currentPage:-1,localNumberOfPages:1,localLimit:5}},computed:{btnSize:function(){return this.size?"pagination-".concat(this.size):""},alignment:function(){var align=this.align;return"center"===align?"justify-content-center":"end"===align||"right"===align?"justify-content-end":"fill"===align?"text-center":""},styleClass:function(){return this.pills?"b-pagination-pills":""},computedCurrentPage:function(){return sanitizeCurrentPage(this.currentPage,this.localNumberOfPages)},paginationParams:function(){var limit=this.localLimit,numberOfPages=this.localNumberOfPages,currentPage=this.computedCurrentPage,hideEllipsis=this.hideEllipsis,firstNumber=this.firstNumber,lastNumber=this.lastNumber,showFirstDots=!1,showLastDots=!1,numberOfLinks=limit,startNumber=1;numberOfPages<=limit?numberOfLinks=numberOfPages:currentPage3?(hideEllipsis&&!lastNumber||(showLastDots=!0,numberOfLinks=limit-(firstNumber?0:1)),numberOfLinks=mathMin(numberOfLinks,limit)):numberOfPages-currentPage+23?(hideEllipsis&&!firstNumber||(showFirstDots=!0,numberOfLinks=limit-(lastNumber?0:1)),startNumber=numberOfPages-numberOfLinks+1):(limit>3&&(numberOfLinks=limit-2,showFirstDots=!(hideEllipsis&&!firstNumber),showLastDots=!(hideEllipsis&&!lastNumber)),startNumber=currentPage-mathFloor(numberOfLinks/2)),startNumber<1?(startNumber=1,showFirstDots=!1):startNumber>numberOfPages-numberOfLinks&&(startNumber=numberOfPages-numberOfLinks+1,showLastDots=!1),showFirstDots&&firstNumber&&startNumber<4&&(numberOfLinks+=2,startNumber=1,showFirstDots=!1);var lastPageNumber=startNumber+numberOfLinks-1;return showLastDots&&lastNumber&&lastPageNumber>numberOfPages-3&&(numberOfLinks+=lastPageNumber===numberOfPages-2?2:3,showLastDots=!1),limit<=3&&(firstNumber&&1===startNumber?numberOfLinks=mathMin(numberOfLinks+1,numberOfPages,limit+1):lastNumber&&numberOfPages===startNumber+numberOfLinks-1&&(startNumber=mathMax(startNumber-1,1),numberOfLinks=mathMin(numberOfPages-startNumber+1,numberOfPages,limit+1))),{showFirstDots:showFirstDots,showLastDots:showLastDots,numberOfLinks:numberOfLinks=mathMin(numberOfLinks,numberOfPages-startNumber+1),startNumber:startNumber}},pageList:function(){var _this$paginationParam=this.paginationParams,numberOfLinks=_this$paginationParam.numberOfLinks,startNumber=_this$paginationParam.startNumber,currentPage=this.computedCurrentPage,pages=function(startNumber,numberOfPages){return range(numberOfPages).map((function(val,i){return{number:startNumber+i,classes:null}}))}(startNumber,numberOfLinks);if(pages.length>3){var idx=currentPage-startNumber,classes="bv-d-xs-down-none";if(0===idx)for(var i=3;iidx+1;_i3--)pages[_i3].classes=classes}}return pages}},watch:{value:function(newValue,oldValue){newValue!==oldValue&&(this.currentPage=sanitizeCurrentPage(newValue,this.localNumberOfPages))},currentPage:function(newValue,oldValue){newValue!==oldValue&&this.$emit("input",newValue>0?newValue:null)},limit:function(newValue,oldValue){newValue!==oldValue&&(this.localLimit=sanitizeLimit(newValue))}},created:function(){var _this=this;this.localLimit=sanitizeLimit(this.limit),this.$nextTick((function(){_this.currentPage=_this.currentPage>_this.localNumberOfPages?_this.localNumberOfPages:_this.currentPage}))},methods:{handleKeyNav:function(evt){var keyCode=evt.keyCode,shiftKey=evt.shiftKey;this.isNav||(keyCode===KEY_CODES.LEFT||keyCode===KEY_CODES.UP?(evt.preventDefault(),shiftKey?this.focusFirst():this.focusPrev()):keyCode!==KEY_CODES.RIGHT&&keyCode!==KEY_CODES.DOWN||(evt.preventDefault(),shiftKey?this.focusLast():this.focusNext()))},getButtons:function(){return selectAll("button.page-link, a.page-link",this.$el).filter((function(btn){return isVisible(btn)}))},focusCurrent:function(){var _this2=this;this.$nextTick((function(){var btn=_this2.getButtons().find((function(el){return toInteger(getAttr(el,"aria-posinset"),0)===_this2.computedCurrentPage}));attemptFocus(btn)||_this2.focusFirst()}))},focusFirst:function(){var _this3=this;this.$nextTick((function(){var btn=_this3.getButtons().find((function(el){return!isDisabled(el)}));attemptFocus(btn)}))},focusLast:function(){var _this4=this;this.$nextTick((function(){var btn=_this4.getButtons().reverse().find((function(el){return!isDisabled(el)}));attemptFocus(btn)}))},focusPrev:function(){var _this5=this;this.$nextTick((function(){var buttons=_this5.getButtons(),index=buttons.indexOf(getActiveElement());index>0&&!isDisabled(buttons[index-1])&&attemptFocus(buttons[index-1])}))},focusNext:function(){var _this6=this;this.$nextTick((function(){var buttons=_this6.getButtons(),index=buttons.indexOf(getActiveElement());indexnumberOfPages,pageNumber=linkTo<1?1:linkTo>numberOfPages?numberOfPages:linkTo,scope={disabled:isDisabled,page:pageNumber,index:pageNumber-1},$btnContent=_this7.normalizeSlot(btnSlot,scope)||toString$1(btnText)||h(),$inner=h(isDisabled?"span":isNav?BLink:"button",{staticClass:"page-link",class:{"flex-grow-1":!isNav&&!isDisabled&&fill},props:isDisabled||!isNav?{}:_this7.linkProps(linkTo),attrs:{role:isNav?null:"menuitem",type:isNav||isDisabled?null:"button",tabindex:isDisabled||isNav?null:"-1","aria-label":ariaLabel,"aria-controls":_this7.ariaControls||null,"aria-disabled":isDisabled?"true":null},on:isDisabled?{}:{"!click":function(evt){_this7.onClick(linkTo,evt)},keydown:onSpaceKey}},[$btnContent]);return h("li",{key:key,staticClass:"page-item",class:[{disabled:isDisabled,"flex-fill":fill,"d-flex":fill&&!isNav&&!isDisabled},btnClass],attrs:{role:isNav?null:"presentation","aria-hidden":isDisabled?"true":null}},[$inner])},makeEllipsis=function(isLast){return h("li",{key:"ellipsis-".concat(isLast?"last":"first"),staticClass:"page-item",class:["disabled","bv-d-xs-down-none",fill?"flex-fill":"",_this7.ellipsisClass],attrs:{role:"separator"}},[h("span",{staticClass:"page-link"},[_this7.normalizeSlot("ellipsis-text")||toString$1(_this7.ellipsisText)||h()])])},makePageButton=function(page,idx){var active=isActivePage(page.number)&&!noCurrentPage,tabIndex=disabled?null:active||noCurrentPage&&0===idx?"0":"-1",attrs={role:isNav?null:"menuitemradio",type:isNav||disabled?null:"button","aria-disabled":disabled?"true":null,"aria-controls":_this7.ariaControls||null,"aria-label":isFunction(_this7.labelPage)?_this7.labelPage(page.number):"".concat(_this7.labelPage," ").concat(page.number),"aria-checked":isNav?null:active?"true":"false","aria-current":isNav&&active?"page":null,"aria-posinset":page.number,"aria-setsize":numberOfPages,tabindex:isNav?null:tabIndex},btnContent=toString$1(_this7.makePage(page.number)),scope={page:page.number,index:page.number-1,content:btnContent,active:active,disabled:disabled},$inner=h(disabled?"span":isNav?BLink:"button",{props:disabled||!isNav?{}:_this7.linkProps(page.number),staticClass:"page-link",class:{"flex-grow-1":!isNav&&!disabled&&fill},attrs:attrs,on:disabled?{}:{"!click":function(evt){_this7.onClick(page.number,evt)},keydown:onSpaceKey}},[_this7.normalizeSlot("page",scope)||btnContent]);return h("li",{key:"page-".concat(page.number),staticClass:"page-item",class:[{disabled:disabled,active:active,"flex-fill":fill,"d-flex":fill&&!isNav&&!disabled},page.classes,_this7.pageClass],attrs:{role:isNav?null:"presentation"}},[$inner])},$firstPageBtn=h();this.firstNumber||this.hideGotoEndButtons||($firstPageBtn=makeEndBtn(1,this.labelFirstPage,"first-text",this.firstText,this.firstClass,1,"pagination-goto-first")),buttons.push($firstPageBtn),buttons.push(makeEndBtn(currentPage-1,this.labelPrevPage,"prev-text",this.prevText,this.prevClass,1,"pagination-goto-prev")),buttons.push(this.firstNumber&&1!==pageNumbers[0]?makePageButton({number:1},0):h()),buttons.push(showFirstDots?makeEllipsis(!1):h()),this.pageList.forEach((function(page,idx){var offset=showFirstDots&&_this7.firstNumber&&1!==pageNumbers[0]?1:0;buttons.push(makePageButton(page,idx+offset))})),buttons.push(showLastDots?makeEllipsis(!0):h()),buttons.push(this.lastNumber&&pageNumbers[pageNumbers.length-1]!==numberOfPages?makePageButton({number:numberOfPages},-1):h()),buttons.push(makeEndBtn(currentPage+1,this.labelNextPage,"next-text",this.nextText,this.nextClass,numberOfPages,"pagination-goto-next"));var $lastPageBtn=h();this.lastNumber||this.hideGotoEndButtons||($lastPageBtn=makeEndBtn(numberOfPages,this.labelLastPage,"last-text",this.lastText,this.lastClass,numberOfPages,"pagination-goto-last")),buttons.push($lastPageBtn);var $pagination=h("ul",{ref:"ul",staticClass:"pagination",class:["b-pagination",this.btnSize,this.alignment,this.styleClass],attrs:{role:isNav?null:"menubar","aria-disabled":disabled?"true":"false","aria-label":isNav?null:this.ariaLabel||null},on:isNav?{}:{keydown:this.handleKeyNav}},buttons);return isNav?h("nav",{attrs:{"aria-disabled":disabled?"true":null,"aria-hidden":disabled?"true":"false","aria-label":isNav&&this.ariaLabel||null}},[$pagination]):$pagination}},props$T={size:{type:String,default:function(){return getComponentConfig("BPagination","size")}},perPage:{type:[Number,String],default:20},totalRows:{type:[Number,String],default:0},ariaControls:{type:String}},sanitizePerPage=function(val){return mathMax(toInteger(val)||20,1)},sanitizeTotalRows=function(val){return mathMax(toInteger(val)||0,0)},PaginationPlugin=pluginFactory({components:{BPagination:Vue.extend({name:"BPagination",mixins:[paginationMixin],props:props$T,computed:{numberOfPages:function(){var result=mathCeil(sanitizeTotalRows(this.totalRows)/sanitizePerPage(this.perPage));return result<1?1:result},pageSizeNumberOfPages:function(){return{perPage:sanitizePerPage(this.perPage),totalRows:sanitizeTotalRows(this.totalRows),numberOfPages:this.numberOfPages}}},watch:{pageSizeNumberOfPages:function(newVal,oldVal){isUndefinedOrNull(oldVal)||(newVal.perPage!==oldVal.perPage&&newVal.totalRows===oldVal.totalRows||newVal.numberOfPages!==oldVal.numberOfPages&&this.currentPage>newVal.numberOfPages)&&(this.currentPage=1),this.localNumberOfPages=newVal.numberOfPages}},created:function(){var _this=this;this.localNumberOfPages=this.numberOfPages;var currentPage=toInteger(this.value,0);currentPage>0?this.currentPage=currentPage:this.$nextTick((function(){_this.currentPage=0}))},mounted:function(){this.localNumberOfPages=this.numberOfPages},methods:{onClick:function(num,evt){var _this2=this;num>this.numberOfPages?num=this.numberOfPages:num<1&&(num=1),this.currentPage=num,this.$emit("change",this.currentPage),this.$nextTick((function(){var target=evt.target;isVisible(target)&&_this2.$el.contains(target)?attemptFocus(target):_this2.focusCurrent()}))},makePage:function(pageNum){return pageNum},linkProps:function(){return{}}}})}}),NAME$z="BPaginationNav",_linkProps=omit(props$1,["event","routerTag"]),props$U=_objectSpread2({size:{type:String,default:function(){return getComponentConfig(NAME$z,"size")}},numberOfPages:{type:[Number,String],default:1,validator:function(value){return!(toInteger(value,0)<1)||(warn('Prop "number-of-pages" must be a number greater than "0"',NAME$z),!1)}},baseUrl:{type:String,default:"/"},useRouter:{type:Boolean,default:!1},linkGen:{type:Function},pageGen:{type:Function},pages:{type:Array},noPageDetect:{type:Boolean,default:!1}},_linkProps),BPaginationNav=Vue.extend({name:NAME$z,mixins:[paginationMixin],props:props$U,computed:{isNav:function(){return!0},computedValue:function(){var value=toInteger(this.value,0);return value<1?null:value}},watch:{numberOfPages:function(){var _this=this;this.$nextTick((function(){_this.setNumberOfPages()}))},pages:function(){var _this2=this;this.$nextTick((function(){_this2.setNumberOfPages()}))}},created:function(){this.setNumberOfPages()},mounted:function(){var _this3=this;this.$router&&this.$watch("$route",(function(){_this3.$nextTick((function(){requestAF((function(){_this3.guessCurrentPage()}))}))}))},methods:{setNumberOfPages:function(){var value,_this4=this;isArray(this.pages)&&this.pages.length>0?this.localNumberOfPages=this.pages.length:this.localNumberOfPages=(value=this.numberOfPages,mathMax(toInteger(value,0),1)),this.$nextTick((function(){_this4.guessCurrentPage()}))},onClick:function(pageNum,evt){var _this5=this;pageNum!==this.currentPage&&(requestAF((function(){_this5.currentPage=pageNum,_this5.$emit("change",pageNum)})),this.$nextTick((function(){var target=evt.currentTarget||evt.target;attemptBlur(target)})))},getPageInfo:function(pageNum){if(!isArray(this.pages)||0===this.pages.length||isUndefined(this.pages[pageNum-1])){var link="".concat(this.baseUrl).concat(pageNum);return{link:this.useRouter?{path:link}:link,text:toString$1(pageNum)}}var info=this.pages[pageNum-1];if(isObject(info)){var _link=info.link;return{link:isObject(_link)?_link:this.useRouter?{path:_link}:_link,text:toString$1(info.text||pageNum)}}return{link:toString$1(info),text:toString$1(pageNum)}},makePage:function(pageNum){var info=this.getPageInfo(pageNum);return this.pageGen&&isFunction(this.pageGen)?this.pageGen(pageNum,info):info.text},makeLink:function(pageNum){var info=this.getPageInfo(pageNum);return this.linkGen&&isFunction(this.linkGen)?this.linkGen(pageNum,info):info.link},linkProps:function(pageNum){var props=pluckProps(_linkProps,this),link=this.makeLink(pageNum);return this.useRouter||isObject(link)?props.to=link:props.href=link,props},resolveLink:function(){var link,to=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{(link=document.createElement("a")).href=computeHref({to:to},"a","/","/"),document.body.appendChild(link);var _link2=link,pathname=_link2.pathname,hash=_link2.hash,search=_link2.search;return document.body.removeChild(link),{path:pathname,hash:hash,query:parseQuery(search)}}catch(e){try{link&&link.parentNode&&link.parentNode.removeChild(link)}catch(e){}return{}}},resolveRoute:function(){var to=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{var route=this.$router.resolve(to,this.$route).route;return{path:route.path,hash:route.hash,query:route.query}}catch(e){return{}}},guessCurrentPage:function(){var guess=this.computedValue,$router=this.$router,$route=this.$route;if(!this.noPageDetect&&!guess&&(isBrowser||!isBrowser&&$router))for(var currRoute=$router&&$route?{path:$route.path,hash:$route.hash,query:$route.query}:{},loc=isBrowser?window.location||document.location:null,currLink=loc?{path:loc.pathname,hash:loc.hash,query:parseQuery(loc.search)}:{},page=1;!guess&&page<=this.localNumberOfPages;page++){var to=this.makeLink(page);guess=$router&&(isObject(to)||this.useRouter)?looseEqual(this.resolveRoute(to),currRoute)?page:null:isBrowser?looseEqual(this.resolveLink(to),currLink)?page:null:-1}this.currentPage=guess>0?guess:0}}}),PaginationNavPlugin=pluginFactory({components:{BPaginationNav:BPaginationNav}}),AttachmentMap$1={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left",TOPLEFT:"top",TOPRIGHT:"top",RIGHTTOP:"right",RIGHTBOTTOM:"right",BOTTOMLEFT:"bottom",BOTTOMRIGHT:"bottom",LEFTTOP:"left",LEFTBOTTOM:"left"},OffsetMap={AUTO:0,TOPLEFT:-1,TOP:0,TOPRIGHT:1,RIGHTTOP:-1,RIGHT:0,RIGHTBOTTOM:1,BOTTOMLEFT:-1,BOTTOM:0,BOTTOMRIGHT:1,LEFTTOP:-1,LEFT:0,LEFTBOTTOM:1},BVPopper=Vue.extend({name:"BVPopper",props:{target:{type:[HTMLElement,SVGElement]},placement:{type:String,default:"top"},fallbackPlacement:{type:[String,Array],default:"flip"},offset:{type:Number,default:0},boundary:{type:[String,HTMLElement],default:"scrollParent"},boundaryPadding:{type:Number,default:5},arrowPadding:{type:Number,default:6}},data:function(){return{noFade:!1,localShow:!0,attachment:this.getAttachment(this.placement)}},computed:{templateType:function(){return"unknown"},popperConfig:function(){var _this=this,placement=this.placement;return{placement:this.getAttachment(placement),modifiers:{offset:{offset:this.getOffset(placement)},flip:{behavior:this.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{padding:this.boundaryPadding,boundariesElement:this.boundary}},onCreate:function(data){data.originalPlacement!==data.placement&&_this.popperPlacementChange(data)},onUpdate:function(data){_this.popperPlacementChange(data)}}}},created:function(){var _this2=this;this.$_popper=null,this.localShow=!0,this.$on("show",(function(el){_this2.popperCreate(el)})),this.$on("hidden",(function(){_this2.$nextTick(_this2.$destroy)})),this.$parent.$once("hook:destroyed",this.$destroy)},beforeMount:function(){this.attachment=this.getAttachment(this.placement)},mounted:function(){},updated:function(){this.updatePopper()},beforeDestroy:function(){this.destroyPopper()},destroyed:function(){var el=this.$el;el&&el.parentNode&&el.parentNode.removeChild(el)},methods:{hide:function(){this.localShow=!1},getAttachment:function(placement){return AttachmentMap$1[String(placement).toUpperCase()]||"auto"},getOffset:function(placement){if(!this.offset){var arrow=this.$refs.arrow||select(".arrow",this.$el),arrowOffset=toFloat(getCS(arrow).width,0)+toFloat(this.arrowPadding,0);switch(OffsetMap[String(placement).toUpperCase()]||0){case 1:return"+50%p - ".concat(arrowOffset,"px");case-1:return"-50%p + ".concat(arrowOffset,"px");default:return 0}}return this.offset},popperCreate:function(el){this.destroyPopper(),this.$_popper=new Popper(this.target,el,this.popperConfig)},destroyPopper:function(){this.$_popper&&this.$_popper.destroy(),this.$_popper=null},updatePopper:function(){this.$_popper&&this.$_popper.scheduleUpdate()},popperPlacementChange:function(data){this.attachment=this.getAttachment(data.placement)},renderTemplate:function(h){return h("div")}},render:function(h){var _this3=this;return h(BVTransition,{props:{appear:!0,noFade:this.noFade},on:{beforeEnter:function(el){return _this3.$emit("show",el)},afterEnter:function(el){return _this3.$emit("shown",el)},beforeLeave:function(el){return _this3.$emit("hide",el)},afterLeave:function(el){return _this3.$emit("hidden",el)}}},[this.localShow?this.renderTemplate(h):h()])}}),BVTooltipTemplate=Vue.extend({name:"BVTooltipTemplate",extends:BVPopper,mixins:[scopedStyleAttrsMixin],props:{id:{type:String},html:{type:Boolean}},data:function(){return{title:"",content:"",variant:null,customClass:null,interactive:!0}},computed:{templateType:function(){return"tooltip"},templateClasses:function(){var _ref;return[(_ref={noninteractive:!this.interactive},_defineProperty(_ref,"b-".concat(this.templateType,"-").concat(this.variant),this.variant),_defineProperty(_ref,"bs-".concat(this.templateType,"-").concat(this.attachment),this.attachment),_ref),this.customClass]},templateAttributes:function(){return _objectSpread2({id:this.id,role:"tooltip",tabindex:"-1"},this.scopedStyleAttrs)},templateListeners:function(){var _this=this;return{mouseenter:function(evt){_this.$emit("mouseenter",evt)},mouseleave:function(evt){_this.$emit("mouseleave",evt)},focusin:function(evt){_this.$emit("focusin",evt)},focusout:function(evt){_this.$emit("focusout",evt)}}}},methods:{renderTemplate:function(h){var $title=isFunction(this.title)?this.title({}):isUndefinedOrNull(this.title)?h():this.title,domProps=this.html&&!isFunction(this.title)?{innerHTML:this.title}:{};return h("div",{staticClass:"tooltip b-tooltip",class:this.templateClasses,attrs:this.templateAttributes,on:this.templateListeners},[h("div",{ref:"arrow",staticClass:"arrow"}),h("div",{staticClass:"tooltip-inner",domProps:domProps},[$title])])}}}),MODAL_SELECTOR=".modal-content",CONTAINER_SELECTOR=[MODAL_SELECTOR,".b-sidebar"].join(", "),templateData={title:"",content:"",variant:null,customClass:null,triggers:"",placement:"auto",fallbackPlacement:"flip",target:null,container:null,noFade:!1,boundary:"scrollParent",boundaryPadding:5,offset:0,delay:0,arrowPadding:6,interactive:!0,disabled:!1,id:null,html:!1},BVTooltip=Vue.extend({name:"BVTooltip",props:{},data:function(){return _objectSpread2(_objectSpread2({},templateData),{},{activeTrigger:{hover:!1,click:!1,focus:!1},localShow:!1})},computed:{templateType:function(){return"tooltip"},computedId:function(){return this.id||"__bv_".concat(this.templateType,"_").concat(this._uid,"__")},computedDelay:function(){var delay={show:0,hide:0};return isPlainObject(this.delay)?(delay.show=mathMax(toInteger(this.delay.show,0),0),delay.hide=mathMax(toInteger(this.delay.hide,0),0)):(isNumber(this.delay)||isString(this.delay))&&(delay.show=delay.hide=mathMax(toInteger(this.delay,0),0)),delay},computedTriggers:function(){return concat(this.triggers).filter(Boolean).join(" ").trim().toLowerCase().split(/\s+/).sort()},isWithActiveTrigger:function(){for(var trigger in this.activeTrigger)if(this.activeTrigger[trigger])return!0;return!1},computedTemplateData:function(){return{title:this.title,content:this.content,variant:this.variant,customClass:this.customClass,noFade:this.noFade,interactive:this.interactive}}},watch:{computedTriggers:function(newTriggers,oldTriggers){var _this=this;looseEqual(newTriggers,oldTriggers)||this.$nextTick((function(){_this.unListen(),oldTriggers.forEach((function(trigger){arrayIncludes(newTriggers,trigger)||_this.activeTrigger[trigger]&&(_this.activeTrigger[trigger]=!1)})),_this.listen()}))},computedTemplateData:function(){this.handleTemplateUpdate()},disabled:function(newVal){newVal?this.disable():this.enable()}},created:function(){var _this2=this;this.$_tip=null,this.$_hoverTimeout=null,this.$_hoverState="",this.$_visibleInterval=null,this.$_enabled=!this.disabled,this.$_noop=noop.bind(this),this.$parent&&this.$parent.$once("hook:beforeDestroy",this.$destroy),this.$nextTick((function(){var target=_this2.getTarget();target&&contains(document.body,target)?(_this2.scopeId=getScopeId(_this2.$parent),_this2.listen()):warn("Unable to find target element in document.",_this2.templateType)}))},updated:function(){this.$nextTick(this.handleTemplateUpdate)},deactivated:function(){this.forceHide()},beforeDestroy:function(){this.unListen(),this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.clearVisibilityInterval(),this.destroyTemplate(),this.$_noop=null},methods:{getTemplate:function(){return BVTooltipTemplate},updateData:function(){var _this3=this,data=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},titleUpdated=!1;keys(templateData).forEach((function(prop){isUndefined(data[prop])||_this3[prop]===data[prop]||(_this3[prop]=data[prop],"title"===prop&&(titleUpdated=!0))})),titleUpdated&&this.localShow&&this.fixTitle()},createTemplateAndShow:function(){var container=this.getContainer(),Template=this.getTemplate(),$tip=this.$_tip=new Template({parent:this,propsData:{id:this.computedId,html:this.html,placement:this.placement,fallbackPlacement:this.fallbackPlacement,target:this.getPlacementTarget(),boundary:this.getBoundary(),offset:toInteger(this.offset,0),arrowPadding:toInteger(this.arrowPadding,0),boundaryPadding:toInteger(this.boundaryPadding,0)}});this.handleTemplateUpdate(),$tip.$once("show",this.onTemplateShow),$tip.$once("shown",this.onTemplateShown),$tip.$once("hide",this.onTemplateHide),$tip.$once("hidden",this.onTemplateHidden),$tip.$once("hook:destroyed",this.destroyTemplate),$tip.$on("focusin",this.handleEvent),$tip.$on("focusout",this.handleEvent),$tip.$on("mouseenter",this.handleEvent),$tip.$on("mouseleave",this.handleEvent),$tip.$mount(container.appendChild(document.createElement("div")))},hideTemplate:function(){this.$_tip&&this.$_tip.hide(),this.clearActiveTriggers(),this.$_hoverState=""},destroyTemplate:function(){this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.$_hoverState="",this.clearActiveTriggers(),this.localPlacementTarget=null;try{this.$_tip.$destroy()}catch(_unused){}this.$_tip=null,this.removeAriaDescribedby(),this.restoreTitle(),this.localShow=!1},getTemplateElement:function(){return this.$_tip?this.$_tip.$el:null},handleTemplateUpdate:function(){var _this4=this,$tip=this.$_tip;if($tip){["title","content","variant","customClass","noFade","interactive"].forEach((function(prop){$tip[prop]!==_this4[prop]&&($tip[prop]=_this4[prop])}))}},show:function(){var target=this.getTarget();if(target&&contains(document.body,target)&&isVisible(target)&&!this.dropdownOpen()&&(!isUndefinedOrNull(this.title)&&""!==this.title||!isUndefinedOrNull(this.content)&&""!==this.content)&&!this.$_tip&&!this.localShow){this.localShow=!0;var showEvt=this.buildEvent("show",{cancelable:!0});this.emitEvent(showEvt),showEvt.defaultPrevented?this.destroyTemplate():(this.fixTitle(),this.addAriaDescribedby(),this.createTemplateAndShow())}},hide:function(){var force=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.getTemplateElement()&&this.localShow){var hideEvt=this.buildEvent("hide",{cancelable:!force});this.emitEvent(hideEvt),hideEvt.defaultPrevented||this.hideTemplate()}else this.restoreTitle()},forceHide:function(){this.getTemplateElement()&&this.localShow&&(this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.$_hoverState="",this.clearActiveTriggers(),this.$_tip&&(this.$_tip.noFade=!0),this.hide(!0))},enable:function(){this.$_enabled=!0,this.emitEvent(this.buildEvent("enabled"))},disable:function(){this.$_enabled=!1,this.emitEvent(this.buildEvent("disabled"))},onTemplateShow:function(){this.setWhileOpenListeners(!0)},onTemplateShown:function(){var prevHoverState=this.$_hoverState;this.$_hoverState="","out"===prevHoverState&&this.leave(null),this.emitEvent(this.buildEvent("shown"))},onTemplateHide:function(){this.setWhileOpenListeners(!1)},onTemplateHidden:function(){this.destroyTemplate(),this.emitEvent(this.buildEvent("hidden"))},getTarget:function(){var target=this.target?this.target.$el||this.target:null;return target=isString(target)?getById(target.replace(/^#/,"")):target,target=isFunction(target)?target():target,isElement(target)?target:null},getPlacementTarget:function(){return this.getTarget()},getTargetId:function(){var target=this.getTarget();return target&&target.id?target.id:null},getContainer:function(){var container=!!this.container&&(this.container.$el||this.container),body=document.body,target=this.getTarget();return!1===container?closest(CONTAINER_SELECTOR,target)||body:isString(container)&&getById(container.replace(/^#/,""))||body},getBoundary:function(){return this.boundary?this.boundary.$el||this.boundary:"scrollParent"},isInModal:function(){var target=this.getTarget();return target&&closest(MODAL_SELECTOR,target)},isDropdown:function(){var target=this.getTarget();return target&&hasClass(target,"dropdown")},dropdownOpen:function(){var target=this.getTarget();return this.isDropdown()&&target&&select(".dropdown-menu.show",target)},clearHoverTimeout:function(){clearTimeout(this.$_hoverTimeout),this.$_hoverTimeout=null},clearVisibilityInterval:function(){clearInterval(this.$_visibleInterval),this.$_visibleInterval=null},clearActiveTriggers:function(){for(var trigger in this.activeTrigger)this.activeTrigger[trigger]=!1},addAriaDescribedby:function(){var target=this.getTarget(),desc=getAttr(target,"aria-describedby")||"";desc=desc.split(/\s+/).concat(this.computedId).join(" ").trim(),setAttr(target,"aria-describedby",desc)},removeAriaDescribedby:function(){var _this5=this,target=this.getTarget(),desc=getAttr(target,"aria-describedby")||"";desc=desc.split(/\s+/).filter((function(d){return d!==_this5.computedId})).join(" ").trim(),desc?setAttr(target,"aria-describedby",desc):removeAttr(target,"aria-describedby")},fixTitle:function(){var target=this.getTarget();target&&getAttr(target,"title")&&(setAttr(target,"data-original-title",getAttr(target,"title")||""),setAttr(target,"title",""))},restoreTitle:function(){var target=this.getTarget();target&&hasAttr(target,"data-original-title")&&(setAttr(target,"title",getAttr(target,"data-original-title")||""),removeAttr(target,"data-original-title"))},buildEvent:function(type){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new BvEvent(type,_objectSpread2({cancelable:!1,target:this.getTarget(),relatedTarget:this.getTemplateElement()||null,componentId:this.computedId,vueTarget:this},options))},emitEvent:function(bvEvt){var evtName=bvEvt.type,$root=this.$root;$root&&$root.$emit&&$root.$emit("bv::".concat(this.templateType,"::").concat(evtName),bvEvt),this.$emit(evtName,bvEvt)},listen:function(){var _this6=this,el=this.getTarget();el&&(this.setRootListener(!0),this.computedTriggers.forEach((function(trigger){"click"===trigger?eventOn(el,"click",_this6.handleEvent,EVENT_OPTIONS_NO_CAPTURE):"focus"===trigger?(eventOn(el,"focusin",_this6.handleEvent,EVENT_OPTIONS_NO_CAPTURE),eventOn(el,"focusout",_this6.handleEvent,EVENT_OPTIONS_NO_CAPTURE)):"blur"===trigger?eventOn(el,"focusout",_this6.handleEvent,EVENT_OPTIONS_NO_CAPTURE):"hover"===trigger&&(eventOn(el,"mouseenter",_this6.handleEvent,EVENT_OPTIONS_NO_CAPTURE),eventOn(el,"mouseleave",_this6.handleEvent,EVENT_OPTIONS_NO_CAPTURE))}),this))},unListen:function(){var _this7=this,target=this.getTarget();this.setRootListener(!1),["click","focusin","focusout","mouseenter","mouseleave"].forEach((function(evt){target&&eventOff(target,evt,_this7.handleEvent,EVENT_OPTIONS_NO_CAPTURE)}),this)},setRootListener:function(on){var $root=this.$root;if($root){var method=on?"$on":"$off",type=this.templateType;$root[method]("bv::hide::".concat(type),this.doHide),$root[method]("bv::show::".concat(type),this.doShow),$root[method]("bv::disable::".concat(type),this.doDisable),$root[method]("bv::enable::".concat(type),this.doEnable)}},setWhileOpenListeners:function(on){this.setModalListener(on),this.setDropdownListener(on),this.visibleCheck(on),this.setOnTouchStartListener(on)},visibleCheck:function(on){var _this8=this;this.clearVisibilityInterval();var target=this.getTarget(),tip=this.getTemplateElement();on&&(this.$_visibleInterval=setInterval((function(){!tip||!_this8.localShow||target.parentNode&&isVisible(target)||_this8.forceHide()}),100))},setModalListener:function(on){this.isInModal()&&this.$root[on?"$on":"$off"]("bv::modal::hidden",this.forceHide)},setOnTouchStartListener:function(on){var _this9=this;"ontouchstart"in document.documentElement&&from(document.body.children).forEach((function(el){eventOnOff(on,el,"mouseover",_this9.$_noop)}))},setDropdownListener:function(on){var target=this.getTarget();target&&this.$root&&this.isDropdown&&target.__vue__&&target.__vue__[on?"$on":"$off"]("shown",this.forceHide)},handleEvent:function(evt){var target=this.getTarget();if(target&&!isDisabled(target)&&this.$_enabled&&!this.dropdownOpen()){var type=evt.type,triggers=this.computedTriggers;if("click"===type&&arrayIncludes(triggers,"click"))this.click(evt);else if("mouseenter"===type&&arrayIncludes(triggers,"hover"))this.enter(evt);else if("focusin"===type&&arrayIncludes(triggers,"focus"))this.enter(evt);else if("focusout"===type&&(arrayIncludes(triggers,"focus")||arrayIncludes(triggers,"blur"))||"mouseleave"===type&&arrayIncludes(triggers,"hover")){var tip=this.getTemplateElement(),evtTarget=evt.target,relatedTarget=evt.relatedTarget;if(tip&&contains(tip,evtTarget)&&contains(target,relatedTarget)||tip&&contains(target,evtTarget)&&contains(tip,relatedTarget)||tip&&contains(tip,evtTarget)&&contains(tip,relatedTarget)||contains(target,evtTarget)&&contains(target,relatedTarget))return;this.leave(evt)}}},doHide:function(id){id&&this.getTargetId()!==id&&this.computedId!==id||this.forceHide()},doShow:function(id){id&&this.getTargetId()!==id&&this.computedId!==id||this.show()},doDisable:function(id){id&&this.getTargetId()!==id&&this.computedId!==id||this.disable()},doEnable:function(id){id&&this.getTargetId()!==id&&this.computedId!==id||this.enable()},click:function(evt){this.$_enabled&&!this.dropdownOpen()&&(attemptFocus(evt.currentTarget),this.activeTrigger.click=!this.activeTrigger.click,this.isWithActiveTrigger?this.enter(null):this.leave(null))},toggle:function(){this.$_enabled&&!this.dropdownOpen()&&(this.localShow?this.leave(null):this.enter(null))},enter:function(){var _this10=this,evt=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;evt&&(this.activeTrigger["focusin"===evt.type?"focus":"hover"]=!0),this.localShow||"in"===this.$_hoverState?this.$_hoverState="in":(this.clearHoverTimeout(),this.$_hoverState="in",this.computedDelay.show?(this.fixTitle(),this.$_hoverTimeout=setTimeout((function(){"in"===_this10.$_hoverState?_this10.show():_this10.localShow||_this10.restoreTitle()}),this.computedDelay.show)):this.show())},leave:function(){var _this11=this,evt=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;evt&&(this.activeTrigger["focusout"===evt.type?"focus":"hover"]=!1,"focusout"===evt.type&&arrayIncludes(this.computedTriggers,"blur")&&(this.activeTrigger.click=!1,this.activeTrigger.hover=!1)),this.isWithActiveTrigger||(this.clearHoverTimeout(),this.$_hoverState="out",this.computedDelay.hide?this.$_hoverTimeout=setTimeout((function(){"out"===_this11.$_hoverState&&_this11.hide()}),this.computedDelay.hide):this.hide())}}}),NAME$D="BTooltip",BTooltip=Vue.extend({name:NAME$D,props:{title:{type:String},target:{type:[String,HTMLElement,SVGElement,Function,Object],required:!0},triggers:{type:[String,Array],default:"hover focus"},placement:{type:String,default:"top"},fallbackPlacement:{type:[String,Array],default:"flip",validator:function(value){return isArray(value)&&value.every((function(v){return isString(v)}))||arrayIncludes(["flip","clockwise","counterclockwise"],value)}},variant:{type:String,default:function(){return getComponentConfig(NAME$D,"variant")}},customClass:{type:String,default:function(){return getComponentConfig(NAME$D,"customClass")}},delay:{type:[Number,Object,String],default:function(){return getComponentConfig(NAME$D,"delay")}},boundary:{type:[String,HTMLElement,Object],default:function(){return getComponentConfig(NAME$D,"boundary")}},boundaryPadding:{type:[Number,String],default:function(){return getComponentConfig(NAME$D,"boundaryPadding")}},offset:{type:[Number,String],default:0},noFade:{type:Boolean,default:!1},container:{type:[String,HTMLElement,Object]},show:{type:Boolean,default:!1},noninteractive:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{type:String}},data:function(){return{localShow:this.show,localTitle:"",localContent:""}},computed:{templateData:function(){return{title:this.localTitle,content:this.localContent,target:this.target,triggers:this.triggers,placement:this.placement,fallbackPlacement:this.fallbackPlacement,variant:this.variant,customClass:this.customClass,container:this.container,boundary:this.boundary,boundaryPadding:this.boundaryPadding,delay:this.delay,offset:this.offset,noFade:this.noFade,interactive:!this.noninteractive,disabled:this.disabled,id:this.id}},templateTitleContent:function(){return{title:this.title,content:this.content}}},watch:{show:function(_show,oldVal){_show!==oldVal&&_show!==this.localShow&&this.$_toolpop&&(_show?this.$_toolpop.show():this.$_toolpop.forceHide())},disabled:function(newVal){newVal?this.doDisable():this.doEnable()},localShow:function(newVal){this.$emit("update:show",newVal)},templateData:function(){var _this=this;this.$nextTick((function(){_this.$_toolpop&&_this.$_toolpop.updateData(_this.templateData)}))},templateTitleContent:function(){this.$nextTick(this.updateContent)}},created:function(){this.$_toolpop=null},updated:function(){this.$nextTick(this.updateContent)},beforeDestroy:function(){this.$off("open",this.doOpen),this.$off("close",this.doClose),this.$off("disable",this.doDisable),this.$off("enable",this.doEnable),this.$_toolpop&&(this.$_toolpop.$destroy(),this.$_toolpop=null)},mounted:function(){var _this2=this;this.$nextTick((function(){var Component=_this2.getComponent();_this2.updateContent();var scopeId=getScopeId(_this2)||getScopeId(_this2.$parent),$toolpop=_this2.$_toolpop=new Component({parent:_this2,_scopeId:scopeId||void 0});$toolpop.updateData(_this2.templateData),$toolpop.$on("show",_this2.onShow),$toolpop.$on("shown",_this2.onShown),$toolpop.$on("hide",_this2.onHide),$toolpop.$on("hidden",_this2.onHidden),$toolpop.$on("disabled",_this2.onDisabled),$toolpop.$on("enabled",_this2.onEnabled),_this2.disabled&&_this2.doDisable(),_this2.$on("open",_this2.doOpen),_this2.$on("close",_this2.doClose),_this2.$on("disable",_this2.doDisable),_this2.$on("enable",_this2.doEnable),_this2.localShow&&$toolpop.show()}))},methods:{getComponent:function(){return BVTooltip},updateContent:function(){this.setTitle(this.$scopedSlots.default||this.title)},setTitle:function(val){val=isUndefinedOrNull(val)?"":val,this.localTitle!==val&&(this.localTitle=val)},setContent:function(val){val=isUndefinedOrNull(val)?"":val,this.localContent!==val&&(this.localContent=val)},onShow:function(bvEvt){this.$emit("show",bvEvt),bvEvt&&(this.localShow=!bvEvt.defaultPrevented)},onShown:function(bvEvt){this.localShow=!0,this.$emit("shown",bvEvt)},onHide:function(bvEvt){this.$emit("hide",bvEvt)},onHidden:function(bvEvt){this.$emit("hidden",bvEvt),this.localShow=!1},onDisabled:function(bvEvt){bvEvt&&"disabled"===bvEvt.type&&(this.$emit("update:disabled",!0),this.$emit("disabled",bvEvt))},onEnabled:function(bvEvt){bvEvt&&"enabled"===bvEvt.type&&(this.$emit("update:disabled",!1),this.$emit("enabled",bvEvt))},doOpen:function(){!this.localShow&&this.$_toolpop&&this.$_toolpop.show()},doClose:function(){this.localShow&&this.$_toolpop&&this.$_toolpop.hide()},doDisable:function(){this.$_toolpop&&this.$_toolpop.disable()},doEnable:function(){this.$_toolpop&&this.$_toolpop.enable()}},render:function(h){return h()}}),BVPopoverTemplate=Vue.extend({name:"BVPopoverTemplate",extends:BVTooltipTemplate,computed:{templateType:function(){return"popover"}},methods:{renderTemplate:function(h){var $title=isFunction(this.title)?this.title({}):this.title,$content=isFunction(this.content)?this.content({}):this.content,titleDomProps=this.html&&!isFunction(this.title)?{innerHTML:this.title}:{},contentDomProps=this.html&&!isFunction(this.content)?{innerHTML:this.content}:{};return h("div",{staticClass:"popover b-popover",class:this.templateClasses,attrs:this.templateAttributes,on:this.templateListeners},[h("div",{ref:"arrow",staticClass:"arrow"}),isUndefinedOrNull($title)||""===$title?h():h("h3",{staticClass:"popover-header",domProps:titleDomProps},[$title]),isUndefinedOrNull($content)||""===$content?h():h("div",{staticClass:"popover-body",domProps:contentDomProps},[$content])])}}}),BVPopover=Vue.extend({name:"BVPopover",extends:BVTooltip,computed:{templateType:function(){return"popover"}},methods:{getTemplate:function(){return BVPopoverTemplate}}}),NAME$G="BPopover",BPopover=Vue.extend({name:NAME$G,extends:BTooltip,inheritAttrs:!1,props:{title:{type:String},content:{type:String},triggers:{type:[String,Array],default:"click"},placement:{type:String,default:"right"},variant:{type:String,default:function(){return getComponentConfig(NAME$G,"variant")}},customClass:{type:String,default:function(){return getComponentConfig(NAME$G,"customClass")}},delay:{type:[Number,Object,String],default:function(){return getComponentConfig(NAME$G,"delay")}},boundary:{type:[String,HTMLElement,Object],default:function(){return getComponentConfig(NAME$G,"boundary")}},boundaryPadding:{type:[Number,String],default:function(){return getComponentConfig(NAME$G,"boundaryPadding")}}},methods:{getComponent:function(){return BVPopover},updateContent:function(){this.setContent(this.$scopedSlots.default||this.content),this.setTitle(this.$scopedSlots.title||this.title)}}}),BV_POPOVER="__BV_Popover__",validTriggers={focus:!0,hover:!0,click:!0,blur:!0,manual:!0},htmlRE=/^html$/i,noFadeRE=/^nofade$/i,placementRE=/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i,boundaryRE=/^(window|viewport|scrollParent)$/i,delayRE=/^d\d+$/i,delayShowRE=/^ds\d+$/i,delayHideRE=/^dh\d+$/i,offsetRE=/^o-?\d+$/i,variantRE=/^v-.+$/i,spacesRE=/\s+/,applyPopover=function(el,bindings,vnode){if(isBrowser){var config=function(bindings,vnode){var NAME="BPopover",config={title:void 0,content:void 0,trigger:"",placement:"right",fallbackPlacement:"flip",container:!1,animation:!0,offset:0,disabled:!1,id:null,html:!1,delay:getComponentConfig(NAME,"delay"),boundary:String(getComponentConfig(NAME,"boundary")),boundaryPadding:toInteger(getComponentConfig(NAME,"boundaryPadding"),0),variant:getComponentConfig(NAME,"variant"),customClass:getComponentConfig(NAME,"customClass")};if(isString(bindings.value)||isNumber(bindings.value)||isFunction(bindings.value)?config.content=bindings.value:isPlainObject(bindings.value)&&(config=_objectSpread2(_objectSpread2({},config),bindings.value)),bindings.arg&&(config.container="#".concat(bindings.arg)),isUndefined(config.title)){var data=vnode.data||{};config.title=data.attrs&&!isUndefinedOrNull(data.attrs.title)?data.attrs.title:void 0}isPlainObject(config.delay)||(config.delay={show:toInteger(config.delay,0),hide:toInteger(config.delay,0)}),keys(bindings.modifiers).forEach((function(mod){if(htmlRE.test(mod))config.html=!0;else if(noFadeRE.test(mod))config.animation=!1;else if(placementRE.test(mod))config.placement=mod;else if(boundaryRE.test(mod))mod="scrollparent"===mod?"scrollParent":mod,config.boundary=mod;else if(delayRE.test(mod)){var delay=toInteger(mod.slice(1),0);config.delay.show=delay,config.delay.hide=delay}else delayShowRE.test(mod)?config.delay.show=toInteger(mod.slice(2),0):delayHideRE.test(mod)?config.delay.hide=toInteger(mod.slice(2),0):offsetRE.test(mod)?config.offset=toInteger(mod.slice(1),0):variantRE.test(mod)&&(config.variant=mod.slice(2)||null)}));var selectedTriggers={};return concat(config.trigger||"").filter(identity).join(" ").trim().toLowerCase().split(spacesRE).forEach((function(trigger){validTriggers[trigger]&&(selectedTriggers[trigger]=!0)})),keys(bindings.modifiers).forEach((function(mod){mod=mod.toLowerCase(),validTriggers[mod]&&(selectedTriggers[mod]=!0)})),config.trigger=keys(selectedTriggers).join(" "),"blur"===config.trigger&&(config.trigger="focus"),config.trigger||(config.trigger="click"),config}(bindings,vnode);if(!el[BV_POPOVER]){var $parent=vnode.context;el[BV_POPOVER]=new BVPopover({parent:$parent,_scopeId:getScopeId($parent,void 0)}),el[BV_POPOVER].__bv_prev_data__={},el[BV_POPOVER].$on("show",(function(){var data={};isFunction(config.title)&&(data.title=config.title(el)),isFunction(config.content)&&(data.content=config.content(el)),keys(data).length>0&&el[BV_POPOVER].updateData(data)}))}var data={title:config.title,content:config.content,triggers:config.trigger,placement:config.placement,fallbackPlacement:config.fallbackPlacement,variant:config.variant,customClass:config.customClass,container:config.container,boundary:config.boundary,delay:config.delay,offset:config.offset,noFade:!config.animation,id:config.id,disabled:config.disabled,html:config.html},oldData=el[BV_POPOVER].__bv_prev_data__;if(el[BV_POPOVER].__bv_prev_data__=data,!looseEqual(data,oldData)){var newData={target:el};keys(data).forEach((function(prop){data[prop]!==oldData[prop]&&(newData[prop]="title"!==prop&&"content"!==prop||!isFunction(data[prop])?data[prop]:data[prop](el))})),el[BV_POPOVER].updateData(newData)}}},VBPopoverPlugin=pluginFactory({directives:{VBPopover:{bind:function(el,bindings,vnode){applyPopover(el,bindings,vnode)},componentUpdated:function(el,bindings,vnode){vnode.context.$nextTick((function(){applyPopover(el,bindings,vnode)}))},unbind:function(el){!function(el){el[BV_POPOVER]&&(el[BV_POPOVER].$destroy(),el[BV_POPOVER]=null),delete el[BV_POPOVER]}(el)}}}}),PopoverPlugin=pluginFactory({components:{BPopover:BPopover},plugins:{VBPopoverPlugin:VBPopoverPlugin}}),BProgressBar=Vue.extend({name:"BProgressBar",mixins:[normalizeSlotMixin],inject:{bvProgress:{default:function(){return{}}}},props:{value:{type:[Number,String],default:0},label:{type:String},labelHtml:{type:String},max:{type:[Number,String],default:null},precision:{type:[Number,String],default:null},variant:{type:String,default:function(){return getComponentConfig("BProgressBar","variant")}},striped:{type:Boolean,default:null},animated:{type:Boolean,default:null},showProgress:{type:Boolean,default:null},showValue:{type:Boolean,default:null}},computed:{progressBarClasses:function(){return[this.computedVariant?"bg-".concat(this.computedVariant):"",this.computedStriped||this.computedAnimated?"progress-bar-striped":"",this.computedAnimated?"progress-bar-animated":""]},progressBarStyles:function(){return{width:this.computedValue/this.computedMax*100+"%"}},computedValue:function(){return toFloat(this.value,0)},computedMax:function(){var max=toFloat(this.max)||toFloat(this.bvProgress.max,0);return max>0?max:100},computedPrecision:function(){return mathMax(toInteger(this.precision,toInteger(this.bvProgress.precision,0)),0)},computedProgress:function(){var precision=this.computedPrecision,p=mathPow(10,precision);return toFixed(100*p*this.computedValue/this.computedMax/p,precision)},computedVariant:function(){return this.variant||this.bvProgress.variant},computedStriped:function(){return isBoolean(this.striped)?this.striped:this.bvProgress.striped||!1},computedAnimated:function(){return isBoolean(this.animated)?this.animated:this.bvProgress.animated||!1},computedShowProgress:function(){return isBoolean(this.showProgress)?this.showProgress:this.bvProgress.showProgress||!1},computedShowValue:function(){return isBoolean(this.showValue)?this.showValue:this.bvProgress.showValue||!1}},render:function(h){var label=this.label,labelHtml=this.labelHtml,computedValue=this.computedValue,computedPrecision=this.computedPrecision,$content=h(),domProps={};return this.hasNormalizedSlot("default")?$content=this.normalizeSlot("default"):label||labelHtml?domProps=htmlOrText(labelHtml,label):this.computedShowProgress?$content=this.computedProgress:this.computedShowValue&&($content=toFixed(computedValue,computedPrecision)),h("div",{staticClass:"progress-bar",class:this.progressBarClasses,style:this.progressBarStyles,attrs:{role:"progressbar","aria-valuemin":"0","aria-valuemax":toString$1(this.computedMax),"aria-valuenow":toFixed(computedValue,computedPrecision)},domProps:domProps},[$content])}}),ProgressPlugin=pluginFactory({components:{BProgress:Vue.extend({name:"BProgress",mixins:[normalizeSlotMixin],provide:function(){return{bvProgress:this}},props:{variant:{type:String,default:function(){return getComponentConfig("BProgress","variant")}},striped:{type:Boolean,default:!1},animated:{type:Boolean,default:!1},height:{type:String},precision:{type:[Number,String],default:0},showProgress:{type:Boolean,default:!1},showValue:{type:Boolean,default:!1},max:{type:[Number,String],default:100},value:{type:[Number,String],default:0}},computed:{progressHeight:function(){return{height:this.height||null}}},render:function(h){var childNodes=this.normalizeSlot("default");return childNodes||(childNodes=h(BProgressBar,{props:{value:this.value,max:this.max,precision:this.precision,variant:this.variant,animated:this.animated,striped:this.striped,showProgress:this.showProgress,showValue:this.showValue}})),h("div",{class:["progress"],style:this.progressHeight},[childNodes])}}),BProgressBar:BProgressBar}}),NAME$J="BSidebar",renderHeader=function(h,ctx){if(ctx.noHeader)return h();var $title=function(h,ctx){var title=ctx.normalizeSlot("title",ctx.slotScope)||toString$1(ctx.title)||null;return title?h("strong",{attrs:{id:ctx.safeId("__title__")}},[title]):h("span")}(h,ctx),$close=function(h,ctx){if(ctx.noHeaderClose)return h();var closeLabel=ctx.closeLabel,textVariant=ctx.textVariant,hide=ctx.hide;return h(BButtonClose,{ref:"close-button",props:{ariaLabel:closeLabel,textVariant:textVariant},on:{click:hide}},[ctx.normalizeSlot("header-close")||h(BIconX)])}(h,ctx);return h("header",{key:"header",staticClass:"".concat("b-sidebar","-header"),class:ctx.headerClass},ctx.right?[$close,$title]:[$title,$close])},renderBody=function(h,ctx){return h("div",{key:"body",staticClass:"".concat("b-sidebar","-body"),class:ctx.bodyClass},[ctx.normalizeSlot("default",ctx.slotScope)])},renderFooter=function(h,ctx){var $footer=ctx.normalizeSlot("footer",ctx.slotScope);return $footer?h("footer",{key:"footer",staticClass:"".concat("b-sidebar","-footer"),class:ctx.footerClass},[$footer]):h()},renderContent=function(h,ctx){var $header=renderHeader(h,ctx);return ctx.lazy&&!ctx.isOpen?$header:[$header,renderBody(h,ctx),renderFooter(h,ctx)]},renderBackdrop=function(h,ctx){if(!ctx.backdrop)return h();var backdropVariant=ctx.backdropVariant;return h("div",{directives:[{name:"show",value:ctx.localShow}],staticClass:"b-sidebar-backdrop",class:_defineProperty({},"bg-".concat(backdropVariant),!!backdropVariant),on:{click:ctx.onBackdropClick}})},BSidebar=Vue.extend({name:NAME$J,mixins:[attrsMixin,idMixin,listenOnRootMixin,normalizeSlotMixin],inheritAttrs:!1,model:{prop:"visible",event:"change"},props:{title:{type:String},right:{type:Boolean,default:!1},bgVariant:{type:String,default:function(){return getComponentConfig(NAME$J,"bgVariant")}},textVariant:{type:String,default:function(){return getComponentConfig(NAME$J,"textVariant")}},shadow:{type:[Boolean,String],default:function(){return getComponentConfig(NAME$J,"shadow")}},width:{type:String,default:function(){return getComponentConfig(NAME$J,"width")}},zIndex:{type:[Number,String]},ariaLabel:{type:String},ariaLabelledby:{type:String},closeLabel:{type:String},tag:{type:String,default:function(){return getComponentConfig(NAME$J,"tag")}},sidebarClass:{type:[String,Array,Object]},headerClass:{type:[String,Array,Object]},bodyClass:{type:[String,Array,Object]},footerClass:{type:[String,Array,Object]},backdrop:{type:Boolean,default:!1},backdropVariant:{type:String,default:function(){return getComponentConfig(NAME$J,"backdropVariant")}},noSlide:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1},noHeaderClose:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnRouteChange:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},visible:{type:Boolean,default:!1}},data:function(){return{localShow:!!this.visible,isOpen:!!this.visible}},computed:{transitionProps:function(){return this.noSlide?{css:!0}:{css:!0,enterClass:"",enterActiveClass:"slide",enterToClass:"show",leaveClass:"show",leaveActiveClass:"slide",leaveToClass:""}},slotScope:function(){return{visible:this.localShow,right:this.right,hide:this.hide}},computedTile:function(){return this.normalizeSlot("title",this.slotScope)||toString$1(this.title)||null},titleId:function(){return this.computedTile?this.safeId("__title__"):null},computedAttrs:function(){return _objectSpread2(_objectSpread2({},this.bvAttrs),{},{id:this.safeId(),tabindex:"-1",role:"dialog","aria-modal":this.backdrop?"true":"false","aria-hidden":this.localShow?null:"true","aria-label":this.ariaLabel||null,"aria-labelledby":this.ariaLabelledby||this.titleId||null})}},watch:{visible:function(newVal,oldVal){newVal!==oldVal&&(this.localShow=newVal)},localShow:function(newVal,oldVal){newVal!==oldVal&&(this.emitState(newVal),this.$emit("change",newVal))},$route:function(){var newVal=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},oldVal=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.noCloseOnRouteChange||newVal.fullPath===oldVal.fullPath||this.hide()}},created:function(){this.$_returnFocusEl=null},mounted:function(){var _this=this;this.listenOnRoot("bv::toggle::collapse",this.handleToggle),this.listenOnRoot("bv::request::collapse::state",this.handleSync),this.$nextTick((function(){_this.emitState(_this.localShow)}))},activated:function(){this.emitSync()},beforeDestroy:function(){this.localShow=!1,this.$_returnFocusEl=null},methods:{hide:function(){this.localShow=!1},emitState:function(){var state=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.localShow;this.emitOnRoot(EVENT_STATE,this.safeId(),state)},emitSync:function(){var state=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.localShow;this.emitOnRoot(EVENT_STATE_SYNC,this.safeId(),state)},handleToggle:function(id){id&&id===this.safeId()&&(this.localShow=!this.localShow)},handleSync:function(id){var _this2=this;id&&id===this.safeId()&&this.$nextTick((function(){_this2.emitSync(_this2.localShow)}))},onKeydown:function(evt){var keyCode=evt.keyCode;!this.noCloseOnEsc&&keyCode===KEY_CODES.ESC&&this.localShow&&this.hide()},onBackdropClick:function(){this.localShow&&!this.noCloseOnBackdrop&&this.hide()},onTopTrapFocus:function(){var tabables=getTabables(this.$refs.content);attemptFocus(tabables.reverse()[0])},onBottomTrapFocus:function(){var tabables=getTabables(this.$refs.content);attemptFocus(tabables[0])},onBeforeEnter:function(){this.$_returnFocusEl=getActiveElement(isBrowser?[document.body]:[]),this.isOpen=!0},onAfterEnter:function(el){contains(el,getActiveElement())||attemptFocus(el),this.$emit("shown")},onAfterLeave:function(){attemptFocus(this.$_returnFocusEl),this.$_returnFocusEl=null,this.isOpen=!1,this.$emit("hidden")}},render:function(h){var _ref,localShow=this.localShow,shadow=""===this.shadow||this.shadow,$sidebar=h(this.tag,{ref:"content",directives:[{name:"show",value:localShow}],staticClass:"b-sidebar",class:[(_ref={shadow:!0===shadow},_defineProperty(_ref,"shadow-".concat(shadow),shadow&&!0!==shadow),_defineProperty(_ref,"".concat("b-sidebar","-right"),this.right),_defineProperty(_ref,"bg-".concat(this.bgVariant),!!this.bgVariant),_defineProperty(_ref,"text-".concat(this.textVariant),!!this.textVariant),_ref),this.sidebarClass],attrs:this.computedAttrs,style:{width:this.width}},[renderContent(h,this)]);$sidebar=h("transition",{props:this.transitionProps,on:{beforeEnter:this.onBeforeEnter,afterEnter:this.onAfterEnter,afterLeave:this.onAfterLeave}},[$sidebar]);var $backdrop=h(BVTransition,{props:{noFade:this.noSlide}},[renderBackdrop(h,this)]),$tabTrapTop=h(),$tabTrapBottom=h();return this.backdrop&&this.localShow&&($tabTrapTop=h("div",{attrs:{tabindex:"0"},on:{focus:this.onTopTrapFocus}}),$tabTrapBottom=h("div",{attrs:{tabindex:"0"},on:{focus:this.onBottomTrapFocus}})),h("div",{staticClass:"b-sidebar-outer",style:{zIndex:this.zIndex},attrs:{tabindex:"-1"},on:{keydown:this.onKeydown}},[$tabTrapTop,$sidebar,$tabTrapBottom,$backdrop])}}),SidebarPlugin=pluginFactory({components:{BSidebar:BSidebar},plugins:{VBTogglePlugin:VBTogglePlugin}}),SpinnerPlugin=pluginFactory({components:{BSpinner:BSpinner}}),hasListenerMixin={methods:{hasListener:function(name){var $listeners=this.$listeners||{},$events=this._events||{};return!isUndefined($listeners[name])||isArray($events[name])&&$events[name].length>0}}},RX_UNDERSCORE=/_/g,RX_LOWER_UPPER=/([a-z])([A-Z])/g,RX_START_SPACE_WORD=/(\s|^)(\w)/g,startCase=function(str){return str.replace(RX_UNDERSCORE," ").replace(RX_LOWER_UPPER,(function(str,$1,$2){return $1+" "+$2})).replace(RX_START_SPACE_WORD,(function(str,$1,$2){return $1+$2.toUpperCase()}))},IGNORED_FIELD_KEYS={_rowVariant:!0,_cellVariants:!0,_showDetails:!0},EVENT_FILTER=["a","a *","button","button *","input:not(.disabled):not([disabled])","select:not(.disabled):not([disabled])","textarea:not(.disabled):not([disabled])",'[role="link"]','[role="link"] *','[role="button"]','[role="button"] *',"[tabindex]:not(.disabled):not([disabled])"].join(","),normalizeFields=function(origFields,items){var fields=[];if(isArray(origFields)&&origFields.filter(identity).forEach((function(f){if(isString(f))fields.push({key:f,label:startCase(f)});else if(isObject(f)&&f.key&&isString(f.key))fields.push(clone(f));else if(isObject(f)&&1===keys(f).length){var key=keys(f)[0],field=function(key,value){var field=null;return isString(value)?field={key:key,label:value}:isFunction(value)?field={key:key,formatter:value}:isObject(value)?(field=clone(value)).key=field.key||key:!1!==value&&(field={key:key}),field}(key,f[key]);field&&fields.push(field)}})),0===fields.length&&isArray(items)&&items.length>0){var sample=items[0];keys(sample).forEach((function(k){IGNORED_FIELD_KEYS[k]||fields.push({key:k,label:startCase(k)})}))}var memo={};return fields.filter((function(f){return!memo[f.key]&&(memo[f.key]=!0,f.label=isString(f.label)?f.label:startCase(f.key),!0)}))},itemsMixin={props:{items:{type:Array,default:function(){return[]}},fields:{type:Array,default:null},primaryKey:{type:String},value:{type:Array,default:function(){return[]}}},data:function(){return{localItems:isArray(this.items)?this.items.slice():[]}},computed:{computedFields:function(){return normalizeFields(this.fields,this.localItems)},computedFieldsObj:function(){var parent=this.$parent;return this.computedFields.reduce((function(obj,f){if(obj[f.key]=clone(f),f.formatter){var formatter=f.formatter;isString(formatter)&&isFunction(parent[formatter])?formatter=parent[formatter]:isFunction(formatter)||(formatter=void 0),obj[f.key].formatter=formatter}return obj}),{})},computedItems:function(){return(this.paginatedItems||this.sortedItems||this.filteredItems||this.localItems||[]).slice()},context:function(){return{filter:this.localFilter,sortBy:this.localSortBy,sortDesc:this.localSortDesc,perPage:mathMax(toInteger(this.perPage,0),0),currentPage:mathMax(toInteger(this.currentPage,0),1),apiUrl:this.apiUrl}}},watch:{items:function(newItems){isArray(newItems)?this.localItems=newItems.slice():isUndefinedOrNull(newItems)&&(this.localItems=[])},computedItems:function(newVal,oldVal){looseEqual(newVal,oldVal)||this.$emit("input",newVal)},context:function(newVal,oldVal){looseEqual(newVal,oldVal)||this.$emit("context-changed",newVal)}},mounted:function(){this.$emit("input",this.computedItems)},methods:{getFieldFormatter:function(key){var field=this.computedFieldsObj[key];return field?field.formatter:void 0}}},stackedMixin={props:{stacked:{type:[Boolean,String],default:!1}},computed:{isStacked:function(){return""===this.stacked||this.stacked},isStackedAlways:function(){return!0===this.isStacked},stackedTableClasses:function(){return _defineProperty({"b-table-stacked":this.isStackedAlways},"b-table-stacked-".concat(this.stacked),!this.isStackedAlways&&this.isStacked)}}},sanitizeRow=function(row,ignoreFields,includeFields){var fieldsObj=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return keys(row).reduce((function(obj,key){if(!IGNORED_FIELD_KEYS[key]&&!(ignoreFields&&ignoreFields.length>0&&arrayIncludes(ignoreFields,key))&&(!(includeFields&&includeFields.length>0)||arrayIncludes(includeFields,key))){var f=fieldsObj[key]||{},val=row[key],filterByFormatted=f.filterByFormatted,formatter=isFunction(filterByFormatted)?filterByFormatted:filterByFormatted?f.formatter:null;obj[key]=isFunction(formatter)?formatter(val,key,row):val}return obj}),{})},stringifyObjectValues=function stringifyObjectValues(val){return isUndefinedOrNull(val)?"":isObject(val)&&!isDate(val)?keys(val).sort().filter((function(v){return!isUndefinedOrNull(v)})).map((function(k){return stringifyObjectValues(val[k])})).join(" "):toString$1(val)},DEBOUNCE_DEPRECATED_MSG='Prop "filter-debounce" is deprecated. Use the debounce feature of "" instead.',RX_SPACES$1=/[\s\uFEFF\xA0]+/g,filteringMixin={props:{filter:{type:[String,RegExp,Object,Array],default:null},filterFunction:{type:Function},filterIgnoredFields:{type:Array},filterIncludedFields:{type:Array},filterDebounce:{type:[Number,String],deprecated:DEBOUNCE_DEPRECATED_MSG,default:0,validator:function(val){return/^\d+/.test(String(val))}}},data:function(){return{isFiltered:!1,localFilter:this.filterSanitize(this.filter)}},computed:{computedFilterIgnored:function(){return this.filterIgnoredFields?concat(this.filterIgnoredFields).filter(identity):null},computedFilterIncluded:function(){return this.filterIncludedFields?concat(this.filterIncludedFields).filter(identity):null},computedFilterDebounce:function(){var ms=toInteger(this.filterDebounce,0);return ms>0&&warn(DEBOUNCE_DEPRECATED_MSG,"BTable"),ms},localFiltering:function(){return!this.hasProvider||!!this.noProviderFiltering},filteredCheck:function(){return{filteredItems:this.filteredItems,localItems:this.localItems,localFilter:this.localFilter}},localFilterFn:function(){return isFunction(this.filterFunction)?this.filterFunction:null},filteredItems:function(){var items=this.localItems||[],criteria=this.localFilter,filterFn=this.localFiltering?this.filterFnFactory(this.localFilterFn,criteria)||this.defaultFilterFnFactory(criteria):null;return filterFn&&items.length>0?items.filter(filterFn):items}},watch:{computedFilterDebounce:function(newVal){!newVal&&this.$_filterTimer&&(this.clearFilterTimer(),this.localFilter=this.filterSanitize(this.filter))},filter:{deep:!0,handler:function(newCriteria){var _this=this,timeout=this.computedFilterDebounce;this.clearFilterTimer(),timeout&&timeout>0?this.$_filterTimer=setTimeout((function(){_this.localFilter=_this.filterSanitize(newCriteria)}),timeout):this.localFilter=this.filterSanitize(newCriteria)}},filteredCheck:function(_ref){var filteredItems=_ref.filteredItems,localFilter=_ref.localFilter,isFiltered=!1;localFilter?looseEqual(localFilter,[])||looseEqual(localFilter,{})?isFiltered=!1:localFilter&&(isFiltered=!0):isFiltered=!1,isFiltered&&this.$emit("filtered",filteredItems,filteredItems.length),this.isFiltered=isFiltered},isFiltered:function(newVal,oldVal){!1===newVal&&!0===oldVal&&this.$emit("filtered",this.localItems,this.localItems.length)}},created:function(){var _this2=this;this.$_filterTimer=null,this.$nextTick((function(){_this2.isFiltered=Boolean(_this2.localFilter)}))},beforeDestroy:function(){this.clearFilterTimer()},methods:{clearFilterTimer:function(){clearTimeout(this.$_filterTimer),this.$_filterTimer=null},filterSanitize:function(criteria){return!this.localFiltering||this.localFilterFn||isString(criteria)||isRegExp(criteria)?cloneDeep(criteria):""},filterFnFactory:function(filterFn,criteria){if(!filterFn||!isFunction(filterFn)||!criteria||looseEqual(criteria,[])||looseEqual(criteria,{}))return null;return function(item){return filterFn(item,criteria)}},defaultFilterFnFactory:function(criteria){var _this3=this;if(!criteria||!isString(criteria)&&!isRegExp(criteria))return null;var regExp=criteria;if(isString(regExp)){var pattern=escapeRegExp(criteria).replace(RX_SPACES$1,"\\s+");regExp=new RegExp(".*".concat(pattern,".*"),"i")}return function(item){return regExp.lastIndex=0,regExp.test((row=item,ignoreFields=_this3.computedFilterIgnored,includeFields=_this3.computedFilterIncluded,fieldsObj=_this3.computedFieldsObj,isObject(row)?stringifyObjectValues(sanitizeRow(row,ignoreFields,includeFields,fieldsObj)):""));var row,ignoreFields,includeFields,fieldsObj}}}},stableSort=function(array,compareFn){return array.map((function(a,index){return[index,a]})).sort(function(a,b){return this(a[1],b[1])||a[0]-b[0]}.bind(compareFn)).map((function(e){return e[1]}))},sortingMixin={props:{sortBy:{type:String,default:""},sortDesc:{type:Boolean,default:!1},sortDirection:{type:String,default:"asc",validator:function(direction){return arrayIncludes(["asc","desc","last"],direction)}},sortCompare:{type:Function},sortCompareOptions:{type:Object,default:function(){return{numeric:!0}}},sortCompareLocale:{type:[String,Array]},sortNullLast:{type:Boolean,default:!1},noSortReset:{type:Boolean,default:!1},labelSortAsc:{type:String,default:"Click to sort Ascending"},labelSortDesc:{type:String,default:"Click to sort Descending"},labelSortClear:{type:String,default:"Click to clear sorting"},noLocalSorting:{type:Boolean,default:!1},noFooterSorting:{type:Boolean,default:!1},sortIconLeft:{type:Boolean,default:!1}},data:function(){return{localSortBy:this.sortBy||"",localSortDesc:this.sortDesc||!1}},computed:{localSorting:function(){return this.hasProvider?!!this.noProviderSorting:!this.noLocalSorting},isSortable:function(){return this.computedFields.some((function(f){return f.sortable}))},sortedItems:function(){var items=(this.filteredItems||this.localItems||[]).slice(),sortBy=this.localSortBy,sortDesc=this.localSortDesc,sortCompare=this.sortCompare,localSorting=this.localSorting,sortOptions=_objectSpread2(_objectSpread2({},this.sortCompareOptions),{},{usage:"sort"}),sortLocale=this.sortCompareLocale||void 0,nullLast=this.sortNullLast;if(sortBy&&localSorting){var sortByFormatted=(this.computedFieldsObj[sortBy]||{}).sortByFormatted,formatter=isFunction(sortByFormatted)?sortByFormatted:sortByFormatted?this.getFieldFormatter(sortBy):void 0;return stableSort(items,(function(a,b){var result=null;return isFunction(sortCompare)&&(result=sortCompare(a,b,sortBy,sortDesc,formatter,sortOptions,sortLocale)),(isUndefinedOrNull(result)||!1===result)&&(result=function(a,b,sortBy,sortDesc,formatter,localeOpts,locale,nullLast){var aa=get(a,sortBy,null),bb=get(b,sortBy,null);return isFunction(formatter)&&(aa=formatter(aa,sortBy,a),bb=formatter(bb,sortBy,b)),aa=isUndefinedOrNull(aa)?"":aa,bb=isUndefinedOrNull(bb)?"":bb,isDate(aa)&&isDate(bb)||isNumber(aa)&&isNumber(bb)?aabb?1:0:nullLast&&""===aa&&""!==bb?1:nullLast&&""!==aa&&""===bb?-1:stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb),locale,localeOpts)}(a,b,sortBy,0,formatter,sortOptions,sortLocale,nullLast)),(result||0)*(sortDesc?-1:1)}))}return items}},watch:{isSortable:function(newVal){newVal?this.isSortable&&this.$on("head-clicked",this.handleSort):this.$off("head-clicked",this.handleSort)},sortDesc:function(newVal){newVal!==this.localSortDesc&&(this.localSortDesc=newVal||!1)},sortBy:function(newVal){newVal!==this.localSortBy&&(this.localSortBy=newVal||"")},localSortDesc:function(newVal,oldVal){newVal!==oldVal&&this.$emit("update:sortDesc",newVal)},localSortBy:function(newVal,oldVal){newVal!==oldVal&&this.$emit("update:sortBy",newVal)}},created:function(){this.isSortable&&this.$on("head-clicked",this.handleSort)},methods:{handleSort:function(key,field,evt,isFoot){var _this=this;if(this.isSortable&&(!isFoot||!this.noFooterSorting)){var sortChanged=!1,toggleLocalSortDesc=function(){var sortDirection=field.sortDirection||_this.sortDirection;"asc"===sortDirection?_this.localSortDesc=!1:"desc"===sortDirection&&(_this.localSortDesc=!0)};field.sortable?(key===this.localSortBy?this.localSortDesc=!this.localSortDesc:(this.localSortBy=key,toggleLocalSortDesc()),sortChanged=!0):this.localSortBy&&!this.noSortReset&&(this.localSortBy="",toggleLocalSortDesc(),sortChanged=!0),sortChanged&&this.$emit("sort-changed",this.context)}},sortTheadThClasses:function(key,field,isFoot){return{"b-table-sort-icon-left":field.sortable&&this.sortIconLeft&&!(isFoot&&this.noFooterSorting)}},sortTheadThAttrs:function(key,field,isFoot){if(!this.isSortable||isFoot&&this.noFooterSorting)return{};var sortable=field.sortable;return{"aria-sort":sortable&&this.localSortBy===key?this.localSortDesc?"descending":"ascending":sortable?"none":null}},sortTheadThLabel:function(key,field,isFoot){if(!this.isSortable||isFoot&&this.noFooterSorting)return null;var labelSorting="";if(field.sortable)if(this.localSortBy===key)labelSorting=this.localSortDesc?this.labelSortAsc:this.labelSortDesc;else{labelSorting=this.localSortDesc?this.labelSortDesc:this.labelSortAsc;var sortDirection=this.sortDirection||field.sortDirection;"asc"===sortDirection?labelSorting=this.labelSortAsc:"desc"===sortDirection&&(labelSorting=this.labelSortDesc)}else this.noSortReset||(labelSorting=this.localSortBy?this.labelSortClear:"");return trim(labelSorting)||null}}},paginationMixin$1={props:{perPage:{type:[Number,String],default:0},currentPage:{type:[Number,String],default:1}},computed:{localPaging:function(){return!this.hasProvider||!!this.noProviderPaging},paginatedItems:function(){var items=this.sortedItems||this.filteredItems||this.localItems||[],currentPage=mathMax(toInteger(this.currentPage,1),1),perPage=mathMax(toInteger(this.perPage,0),0);return this.localPaging&&perPage&&(items=items.slice((currentPage-1)*perPage,currentPage*perPage)),items}}},captionMixin={props:{caption:{type:String},captionHtml:{type:String}},computed:{captionId:function(){return this.isStacked?this.safeId("_caption_"):null}},methods:{renderCaption:function(){var caption=this.caption,captionHtml=this.captionHtml,h=this.$createElement,$caption=h(),hasCaptionSlot=this.hasNormalizedSlot("table-caption");return(hasCaptionSlot||caption||captionHtml)&&($caption=h("caption",{key:"caption",attrs:{id:this.captionId},domProps:hasCaptionSlot?{}:htmlOrText(captionHtml,caption)},this.normalizeSlot("table-caption"))),$caption}}},colgroupMixin={methods:{renderColgroup:function(){var h=this.$createElement,fields=this.computedFields,$colgroup=h();return this.hasNormalizedSlot("table-colgroup")&&($colgroup=h("colgroup",{key:"colgroup"},[this.normalizeSlot("table-colgroup",{columns:fields.length,fields:fields})])),$colgroup}}},TABLE_TAG_NAMES=["TD","TH","TR"],filterEvent=function(evt){if(!evt||!evt.target)return!1;var el=evt.target;if(el.disabled||-1!==TABLE_TAG_NAMES.indexOf(el.tagName))return!1;if(closest(".dropdown-menu",el))return!0;var label="LABEL"===el.tagName?el:closest("label",el);if(label){var labelFor=getAttr(label,"for"),input=labelFor?getById(labelFor):select("input, select, textarea",label);if(input&&!input.disabled)return!0}return matches(el,EVENT_FILTER)},textSelectionActive=function(){var el=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,sel=hasWindowSupport&&w$1.getSelection?w$1.getSelection():null;return!!(sel&&""!==sel.toString().trim()&&sel.containsNode&&isElement(el))&&sel.containsNode(el,!0)},props$V={headVariant:{type:String,default:null}},BThead=Vue.extend({name:"BThead",mixins:[attrsMixin,listenersMixin,normalizeSlotMixin],inheritAttrs:!1,provide:function(){return{bvTableRowGroup:this}},inject:{bvTable:{default:function(){return{}}}},props:props$V,computed:{isThead:function(){return!0},isDark:function(){return this.bvTable.dark},isStacked:function(){return this.bvTable.isStacked},isResponsive:function(){return this.bvTable.isResponsive},isStickyHeader:function(){return!this.isStacked&&this.bvTable.stickyHeader},hasStickyHeader:function(){return!this.isStacked&&this.bvTable.stickyHeader},tableVariant:function(){return this.bvTable.tableVariant},theadClasses:function(){return[this.headVariant?"thead-".concat(this.headVariant):null]},theadAttrs:function(){return _objectSpread2({role:"rowgroup"},this.bvAttrs)}},render:function(h){return h("thead",{class:this.theadClasses,attrs:this.theadAttrs,on:this.bvListeners},this.normalizeSlot("default"))}}),props$W={footVariant:{type:String,default:null}},BTfoot=Vue.extend({name:"BTfoot",mixins:[attrsMixin,listenersMixin,normalizeSlotMixin],inheritAttrs:!1,provide:function(){return{bvTableRowGroup:this}},inject:{bvTable:{default:function(){return{}}}},props:props$W,computed:{isTfoot:function(){return!0},isDark:function(){return this.bvTable.dark},isStacked:function(){return this.bvTable.isStacked},isResponsive:function(){return this.bvTable.isResponsive},isStickyHeader:function(){return!1},hasStickyHeader:function(){return!this.isStacked&&this.bvTable.stickyHeader},tableVariant:function(){return this.bvTable.tableVariant},tfootClasses:function(){return[this.footVariant?"thead-".concat(this.footVariant):null]},tfootAttrs:function(){return _objectSpread2({role:"rowgroup"},this.bvAttrs)}},render:function(h){return h("tfoot",{class:this.tfootClasses,attrs:this.tfootAttrs,on:this.bvListeners},this.normalizeSlot("default"))}}),props$X={variant:{type:String,default:null}},BTr=Vue.extend({name:"BTr",mixins:[attrsMixin,listenersMixin,normalizeSlotMixin],inheritAttrs:!1,provide:function(){return{bvTableTr:this}},inject:{bvTableRowGroup:{default:function(){return{}}}},props:props$X,computed:{inTbody:function(){return this.bvTableRowGroup.isTbody},inThead:function(){return this.bvTableRowGroup.isThead},inTfoot:function(){return this.bvTableRowGroup.isTfoot},isDark:function(){return this.bvTableRowGroup.isDark},isStacked:function(){return this.bvTableRowGroup.isStacked},isResponsive:function(){return this.bvTableRowGroup.isResponsive},isStickyHeader:function(){return this.bvTableRowGroup.isStickyHeader},hasStickyHeader:function(){return!this.isStacked&&this.bvTableRowGroup.hasStickyHeader},tableVariant:function(){return this.bvTableRowGroup.tableVariant},headVariant:function(){return this.inThead?this.bvTableRowGroup.headVariant:null},footVariant:function(){return this.inTfoot?this.bvTableRowGroup.footVariant:null},isRowDark:function(){return"light"!==this.headVariant&&"light"!==this.footVariant&&("dark"===this.headVariant||"dark"===this.footVariant||this.isDark)},trClasses:function(){return[this.variant?"".concat(this.isRowDark?"bg":"table","-").concat(this.variant):null]},trAttrs:function(){return _objectSpread2({role:"row"},this.bvAttrs)}},render:function(h){return h("tr",{class:this.trClasses,attrs:this.trAttrs,on:this.bvListeners},this.normalizeSlot("default"))}}),parseSpan=function(value){return(value=toInteger(value,0))>0?value:null},spanValidator=function(val){return isUndefinedOrNull(val)||parseSpan(val)>0},props$Y={variant:{type:String,default:null},colspan:{type:[Number,String],default:null,validator:spanValidator},rowspan:{type:[Number,String],default:null,validator:spanValidator},stackedHeading:{type:String,default:null},stickyColumn:{type:Boolean,default:!1}},BTd=Vue.extend({name:"BTableCell",mixins:[attrsMixin,listenersMixin,normalizeSlotMixin],inheritAttrs:!1,inject:{bvTableTr:{default:function(){return{}}}},props:props$Y,computed:{tag:function(){return"td"},inTbody:function(){return this.bvTableTr.inTbody},inThead:function(){return this.bvTableTr.inThead},inTfoot:function(){return this.bvTableTr.inTfoot},isDark:function(){return this.bvTableTr.isDark},isStacked:function(){return this.bvTableTr.isStacked},isStackedCell:function(){return this.inTbody&&this.isStacked},isResponsive:function(){return this.bvTableTr.isResponsive},isStickyHeader:function(){return this.bvTableTr.isStickyHeader},hasStickyHeader:function(){return this.bvTableTr.hasStickyHeader},isStickyColumn:function(){return!this.isStacked&&(this.isResponsive||this.hasStickyHeader)&&this.stickyColumn},rowVariant:function(){return this.bvTableTr.variant},headVariant:function(){return this.bvTableTr.headVariant},footVariant:function(){return this.bvTableTr.footVariant},tableVariant:function(){return this.bvTableTr.tableVariant},computedColspan:function(){return parseSpan(this.colspan)},computedRowspan:function(){return parseSpan(this.rowspan)},cellClasses:function(){var variant=this.variant;return(!variant&&this.isStickyHeader&&!this.headVariant||!variant&&this.isStickyColumn&&this.inTfoot&&!this.footVariant||!variant&&this.isStickyColumn&&this.inThead&&!this.headVariant||!variant&&this.isStickyColumn&&this.inTbody)&&(variant=this.rowVariant||this.tableVariant||"b-table-default"),[variant?"".concat(this.isDark?"bg":"table","-").concat(variant):null,this.isStickyColumn?"b-table-sticky-column":null]},cellAttrs:function(){var headOrFoot=this.inThead||this.inTfoot,colspan=this.computedColspan,rowspan=this.computedRowspan,role="cell",scope=null;return headOrFoot?(role="columnheader",scope=colspan>0?"colspan":"col"):isTag(this.tag,"th")&&(role="rowheader",scope=rowspan>0?"rowgroup":"row"),_objectSpread2(_objectSpread2({colspan:colspan,rowspan:rowspan,role:role,scope:scope},this.bvAttrs),{},{"data-label":this.isStackedCell&&!isUndefinedOrNull(this.stackedHeading)?toString$1(this.stackedHeading):null})}},render:function(h){var content=[this.normalizeSlot("default")];return h(this.tag,{class:this.cellClasses,attrs:this.cellAttrs,on:this.bvListeners},[this.isStackedCell?h("div",[content]):content])}}),BTh=Vue.extend({name:"BTh",extends:BTd,computed:{tag:function(){return"th"}}}),theadMixin={props:{headVariant:{type:String,default:function(){return getComponentConfig("BTable","headVariant")}},headRowVariant:{type:String},theadClass:{type:[String,Array,Object]},theadTrClass:{type:[String,Array,Object]}},methods:{fieldClasses:function(field){return[field.class?field.class:"",field.thClass?field.thClass:""]},headClicked:function(evt,field,isFoot){this.stopIfBusy&&this.stopIfBusy(evt)||filterEvent(evt)||textSelectionActive(this.$el)||(evt.stopPropagation(),evt.preventDefault(),this.$emit("head-clicked",field.key,field,evt,isFoot))},renderThead:function(){var _this=this,isFoot=arguments.length>0&&void 0!==arguments[0]&&arguments[0],h=this.$createElement,fields=this.computedFields||[];if(this.isStackedAlways||0===fields.length)return h();var isSortable=this.isSortable,isSelectable=this.isSelectable,headVariant=this.headVariant,footVariant=this.footVariant,headRowVariant=this.headRowVariant,footRowVariant=this.footRowVariant,hasHeadClickListener=isSortable||this.hasListener("head-clicked"),selectAllRows=isSelectable?this.selectAllRows:noop,clearSelected=isSelectable?this.clearSelected:noop,$cells=fields.map((function(field,colIndex){var label=field.label,labelHtml=field.labelHtml,variant=field.variant,stickyColumn=field.stickyColumn,key=field.key,ariaLabel=null;field.label.trim()||field.headerTitle||(ariaLabel=startCase(field.key));var on={};hasHeadClickListener&&(on.click=function(evt){_this.headClicked(evt,field,isFoot)},on.keydown=function(evt){var keyCode=evt.keyCode;keyCode!==KEY_CODES.ENTER&&keyCode!==KEY_CODES.SPACE||_this.headClicked(evt,field,isFoot)});var sortAttrs=isSortable?_this.sortTheadThAttrs(key,field,isFoot):{},sortClass=isSortable?_this.sortTheadThClasses(key,field,isFoot):null,sortLabel=isSortable?_this.sortTheadThLabel(key,field,isFoot):null,data={class:[_this.fieldClasses(field),sortClass],props:{variant:variant,stickyColumn:stickyColumn},style:field.thStyle||{},attrs:_objectSpread2(_objectSpread2({tabindex:hasHeadClickListener?"0":null,abbr:field.headerAbbr||null,title:field.headerTitle||null,"aria-colindex":colIndex+1,"aria-label":ariaLabel},_this.getThValues(null,key,field.thAttr,isFoot?"foot":"head",{})),sortAttrs),on:on,key:key},slotNames=["head(".concat(key,")"),"head(".concat(key.toLowerCase(),")"),"head()"];isFoot&&(slotNames=["foot(".concat(key,")"),"foot(".concat(key.toLowerCase(),")"),"foot()"].concat(_toConsumableArray(slotNames)));var scope={label:label,column:key,field:field,isFoot:isFoot,selectAllRows:selectAllRows,clearSelected:clearSelected},$content=_this.normalizeSlot(slotNames,scope)||h("div",{domProps:htmlOrText(labelHtml,label)}),$srLabel=sortLabel?h("span",{staticClass:"sr-only"}," (".concat(sortLabel,")")):null;return h(BTh,data,[$content,$srLabel].filter(identity))})).filter(identity),$trs=[];if(isFoot)$trs.push(h(BTr,{class:this.tfootTrClass,props:{variant:isUndefinedOrNull(footRowVariant)?headRowVariant:footRowVariant}},$cells));else{var scope={columns:fields.length,fields:fields,selectAllRows:selectAllRows,clearSelected:clearSelected};$trs.push(this.normalizeSlot("thead-top",scope)||h()),$trs.push(h(BTr,{class:this.theadTrClass,props:{variant:headRowVariant}},$cells))}return h(isFoot?BTfoot:BThead,{key:isFoot?"bv-tfoot":"bv-thead",class:(isFoot?this.tfootClass:this.theadClass)||null,props:isFoot?{footVariant:footVariant||headVariant||null}:{headVariant:headVariant||null}},$trs)}}},tfootMixin={props:{footClone:{type:Boolean,default:!1},footVariant:{type:String,default:function(){return getComponentConfig("BTable","footVariant")}},footRowVariant:{type:String},tfootClass:{type:[String,Array,Object]},tfootTrClass:{type:[String,Array,Object]}},methods:{renderTFootCustom:function(){var h=this.$createElement;return this.hasNormalizedSlot("custom-foot")?h(BTfoot,{key:"bv-tfoot-custom",class:this.tfootClass||null,props:{footVariant:this.footVariant||this.headVariant||null}},this.normalizeSlot("custom-foot",{items:this.computedItems.slice(),fields:this.computedFields.slice(),columns:this.computedFields.length})):h()},renderTfoot:function(){return this.footClone?this.renderThead(!0):this.renderTFootCustom()}}},props$Z={tbodyTransitionProps:{type:Object},tbodyTransitionHandlers:{type:Object}},BTbody=Vue.extend({name:"BTbody",mixins:[attrsMixin,listenersMixin,normalizeSlotMixin],inheritAttrs:!1,provide:function(){return{bvTableRowGroup:this}},inject:{bvTable:{default:function(){return{}}}},props:props$Z,computed:{isTbody:function(){return!0},isDark:function(){return this.bvTable.dark},isStacked:function(){return this.bvTable.isStacked},isResponsive:function(){return this.bvTable.isResponsive},isStickyHeader:function(){return!1},hasStickyHeader:function(){return!this.isStacked&&this.bvTable.stickyHeader},tableVariant:function(){return this.bvTable.tableVariant},isTransitionGroup:function(){return this.tbodyTransitionProps||this.tbodyTransitionHandlers},tbodyAttrs:function(){return _objectSpread2({role:"rowgroup"},this.bvAttrs)},tbodyProps:function(){return this.tbodyTransitionProps?_objectSpread2(_objectSpread2({},this.tbodyTransitionProps),{},{tag:"tbody"}):{}}},render:function(h){var data={props:this.tbodyProps,attrs:this.tbodyAttrs};return this.isTransitionGroup?(data.on=this.tbodyTransitionHandlers||{},data.nativeOn=this.bvListeners):data.on=this.bvListeners,h(this.isTransitionGroup?"transition-group":"tbody",data,this.normalizeSlot("default"))}}),tbodyRowMixin={props:{tbodyTrClass:{type:[String,Array,Object,Function]},tbodyTrAttr:{type:[Object,Function]},detailsTdClass:{type:[String,Array,Object]}},methods:{getTdValues:function(item,key,tdValue,defValue){var parent=this.$parent;if(tdValue){var value=get(item,key,"");return isFunction(tdValue)?tdValue(value,key,item):isString(tdValue)&&isFunction(parent[tdValue])?parent[tdValue](value,key,item):tdValue}return defValue},getThValues:function(item,key,thValue,type,defValue){var parent=this.$parent;if(thValue){var value=get(item,key,"");return isFunction(thValue)?thValue(value,key,item,type):isString(thValue)&&isFunction(parent[thValue])?parent[thValue](value,key,item,type):thValue}return defValue},getFormattedValue:function(item,field){var key=field.key,formatter=this.getFieldFormatter(key),value=get(item,key,null);return isFunction(formatter)&&(value=formatter(value,key,item)),isUndefinedOrNull(value)?"":value},toggleDetailsFactory:function(hasDetailsSlot,item){var _this=this;return function(){hasDetailsSlot&&_this.$set(item,"_showDetails",!item._showDetails)}},rowHovered:function(evt){this.tbodyRowEvtStopped(evt)||this.emitTbodyRowEvent("row-hovered",evt)},rowUnhovered:function(evt){this.tbodyRowEvtStopped(evt)||this.emitTbodyRowEvent("row-unhovered",evt)},renderTbodyRowCell:function(field,colIndex,item,rowIndex){var _this2=this,h=this.$createElement,hasDetailsSlot=this.hasNormalizedSlot("row-details"),formatted=this.getFormattedValue(item,field),key=field.key,stickyColumn=!this.isStacked&&(this.isResponsive||this.stickyHeader)&&field.stickyColumn,cellTag=stickyColumn?field.isRowHeader?BTh:BTd:field.isRowHeader?"th":"td",cellVariant=item._cellVariants&&item._cellVariants[key]?item._cellVariants[key]:field.variant||null,data={key:"row-".concat(rowIndex,"-cell-").concat(colIndex,"-").concat(key),class:[field.class?field.class:"",this.getTdValues(item,key,field.tdClass,"")],props:{},attrs:_objectSpread2({"aria-colindex":String(colIndex+1)},field.isRowHeader?this.getThValues(item,key,field.thAttr,"row",{}):this.getTdValues(item,key,field.tdAttr,{}))};stickyColumn?data.props={stackedHeading:this.isStacked?field.label:null,stickyColumn:!0,variant:cellVariant}:(data.attrs["data-label"]=this.isStacked&&!isUndefinedOrNull(field.label)?toString$1(field.label):null,data.attrs.role=field.isRowHeader?"rowheader":"cell",data.attrs.scope=field.isRowHeader?"row":null,cellVariant&&data.class.push("".concat(this.dark?"bg":"table","-").concat(cellVariant)));var slotScope={item:item,index:rowIndex,field:field,unformatted:get(item,key,""),value:formatted,toggleDetails:this.toggleDetailsFactory(hasDetailsSlot,item),detailsShowing:Boolean(item._showDetails)};this.supportsSelectableRows&&(slotScope.rowSelected=this.isRowSelected(rowIndex),slotScope.selectRow=function(){return _this2.selectRow(rowIndex)},slotScope.unselectRow=function(){return _this2.unselectRow(rowIndex)});var slotName=this.$_bodyFieldSlotNameCache[key],$childNodes=slotName?this.normalizeSlot(slotName,slotScope):toString$1(formatted);return this.isStacked&&($childNodes=[h("div",[$childNodes])]),h(cellTag,data,[$childNodes])},renderTbodyRow:function(item,rowIndex){var _this3=this,h=this.$createElement,fields=this.computedFields,tableStriped=this.striped,hasDetailsSlot=this.hasNormalizedSlot("row-details"),rowShowDetails=item._showDetails&&hasDetailsSlot,hasRowClickHandler=this.$listeners["row-clicked"]||this.hasSelectableRowClick,$rows=[],detailsId=rowShowDetails?this.safeId("_details_".concat(rowIndex,"_")):null,$tds=fields.map((function(field,colIndex){return _this3.renderTbodyRowCell(field,colIndex,item,rowIndex)})),ariaRowIndex=null;this.currentPage&&this.perPage&&this.perPage>0&&(ariaRowIndex=String((this.currentPage-1)*this.perPage+rowIndex+1));var primaryKey=this.primaryKey,primaryKeyValue=toString$1(get(item,primaryKey))||null,rowKey=primaryKeyValue||toString$1(rowIndex),rowId=primaryKeyValue?this.safeId("_row_".concat(primaryKeyValue)):null,selectableClasses=this.selectableRowClasses?this.selectableRowClasses(rowIndex):{},selectableAttrs=this.selectableRowAttrs?this.selectableRowAttrs(rowIndex):{},userTrClasses=isFunction(this.tbodyTrClass)?this.tbodyTrClass(item,"row"):this.tbodyTrClass,userTrAttrs=isFunction(this.tbodyTrAttr)?this.tbodyTrAttr(item,"row"):this.tbodyTrAttr;if($rows.push(h(BTr,{key:"__b-table-row-".concat(rowKey,"__"),ref:"itemRows",refInFor:!0,class:[userTrClasses,selectableClasses,rowShowDetails?"b-table-has-details":""],props:{variant:item._rowVariant||null},attrs:_objectSpread2(_objectSpread2({id:rowId},userTrAttrs),{},{tabindex:hasRowClickHandler?"0":null,"data-pk":primaryKeyValue||null,"aria-details":detailsId,"aria-owns":detailsId,"aria-rowindex":ariaRowIndex},selectableAttrs),on:{mouseenter:this.rowHovered,mouseleave:this.rowUnhovered}},$tds)),rowShowDetails){var detailsScope={item:item,index:rowIndex,fields:fields,toggleDetails:this.toggleDetailsFactory(hasDetailsSlot,item)};this.supportsSelectableRows&&(detailsScope.rowSelected=this.isRowSelected(rowIndex),detailsScope.selectRow=function(){return _this3.selectRow(rowIndex)},detailsScope.unselectRow=function(){return _this3.unselectRow(rowIndex)});var $details=h(BTd,{props:{colspan:fields.length},class:this.detailsTdClass},[this.normalizeSlot("row-details",detailsScope)]);tableStriped&&$rows.push(h("tr",{key:"__b-table-details-stripe__".concat(rowKey),staticClass:"d-none",attrs:{"aria-hidden":"true",role:"presentation"}}));var userDetailsTrClasses=isFunction(this.tbodyTrClass)?this.tbodyTrClass(item,"row-details"):this.tbodyTrClass,userDetailsTrAttrs=isFunction(this.tbodyTrAttr)?this.tbodyTrAttr(item,"row-details"):this.tbodyTrAttr;$rows.push(h(BTr,{key:"__b-table-details__".concat(rowKey),staticClass:"b-table-details",class:[userDetailsTrClasses],props:{variant:item._rowVariant||null},attrs:_objectSpread2(_objectSpread2({},userDetailsTrAttrs),{},{id:detailsId,tabindex:"-1"})},[$details]))}else hasDetailsSlot&&($rows.push(h()),tableStriped&&$rows.push(h()));return $rows}}},tbodyMixin={mixins:[tbodyRowMixin],props:_objectSpread2(_objectSpread2({},props$Z),{},{tbodyClass:{type:[String,Array,Object]}}),beforeDestroy:function(){this.$_bodyFieldSlotNameCache=null},methods:{getTbodyTrs:function(){var refs=this.$refs||{},tbody=refs.tbody?refs.tbody.$el||refs.tbody:null,trs=(refs.itemRows||[]).map((function(tr){return tr.$el||tr}));return tbody&&tbody.children&&tbody.children.length>0&&trs&&trs.length>0?from(tbody.children).filter((function(tr){return arrayIncludes(trs,tr)})):[]},getTbodyTrIndex:function(el){if(!isElement(el))return-1;var tr="TR"===el.tagName?el:closest("tr",el,!0);return tr?this.getTbodyTrs().indexOf(tr):-1},emitTbodyRowEvent:function(type,evt){if(type&&this.hasListener(type)&&evt&&evt.target){var rowIndex=this.getTbodyTrIndex(evt.target);if(rowIndex>-1){var item=this.computedItems[rowIndex];this.$emit(type,item,rowIndex,evt)}}},tbodyRowEvtStopped:function(evt){return this.stopIfBusy&&this.stopIfBusy(evt)},onTbodyRowKeydown:function(evt){var target=evt.target;if(!this.tbodyRowEvtStopped(evt)&&"TR"===target.tagName&&isActiveElement(target)&&0===target.tabIndex){var keyCode=evt.keyCode;if(arrayIncludes([KEY_CODES.ENTER,KEY_CODES.SPACE],keyCode))evt.stopPropagation(),evt.preventDefault(),this.onTBodyRowClicked(evt);else if(arrayIncludes([KEY_CODES.UP,KEY_CODES.DOWN,KEY_CODES.HOME,KEY_CODES.END],keyCode)){var rowIndex=this.getTbodyTrIndex(target);if(rowIndex>-1){evt.stopPropagation(),evt.preventDefault();var trs=this.getTbodyTrs(),shift=evt.shiftKey;keyCode===KEY_CODES.HOME||shift&&keyCode===KEY_CODES.UP?attemptFocus(trs[0]):keyCode===KEY_CODES.END||shift&&keyCode===KEY_CODES.DOWN?attemptFocus(trs[trs.length-1]):keyCode===KEY_CODES.UP&&rowIndex>0?attemptFocus(trs[rowIndex-1]):keyCode===KEY_CODES.DOWN&&rowIndex0&&this.selectedRows.some(identity)},selectableIsMultiSelect:function(){return this.isSelectable&&arrayIncludes(["range","multi"],this.selectMode)},selectableTableClasses:function(){var _ref;return _defineProperty(_ref={"b-table-selectable":this.isSelectable},"b-table-select-".concat(this.selectMode),this.isSelectable),_defineProperty(_ref,"b-table-selecting",this.selectableHasSelection),_defineProperty(_ref,"b-table-selectable-no-click",this.isSelectable&&!this.hasSelectableRowClick),_ref},selectableTableAttrs:function(){return{"aria-multiselectable":this.isSelectable?this.selectableIsMultiSelect?"true":"false":null}}},watch:{computedItems:function(newVal,oldVal){var equal=!1;if(this.isSelectable&&this.selectedRows.length>0){equal=isArray(newVal)&&isArray(oldVal)&&newVal.length===oldVal.length;for(var i=0;equal&&i=0&&index0&&(this.selectedLastClicked=-1,this.selectedRows=this.selectableIsMultiSelect?range(length).map((function(){return!0})):[!0])},isRowSelected:function(index){return!(!isNumber(index)||!this.selectedRows[index])},clearSelected:function(){this.selectedLastClicked=-1,this.selectedRows=[]},selectableRowClasses:function(index){if(this.isSelectable&&this.isRowSelected(index)){var variant=this.selectedVariant;return _defineProperty({"b-table-row-selected":!0},"".concat(this.dark?"bg":"table","-").concat(variant),variant)}return{}},selectableRowAttrs:function(index){return{"aria-selected":this.isSelectable?this.isRowSelected(index)?"true":"false":null}},setSelectionHandlers:function(on){var method=on&&!this.noSelectOnClick?"$on":"$off";this[method]("row-clicked",this.selectionHandler),this[method]("filtered",this.clearSelected),this[method]("context-changed",this.clearSelected)},selectionHandler:function(item,index,evt){if(this.isSelectable&&!this.noSelectOnClick){var selectMode=this.selectMode,selectedRows=this.selectedRows.slice(),selected=!selectedRows[index];if("single"===selectMode)selectedRows=[];else if("range"===selectMode)if(this.selectedLastRow>-1&&evt.shiftKey){for(var idx=mathMin(this.selectedLastRow,index);idx<=mathMax(this.selectedLastRow,index);idx++)selectedRows[idx]=!0;selected=!0}else evt.ctrlKey||evt.metaKey||(selectedRows=[],selected=!0),this.selectedLastRow=selected?index:-1;selectedRows[index]=selected,this.selectedRows=selectedRows}else this.clearSelected()}}},providerMixin={mixins:[listenOnRootMixin],props:{items:{type:[Array,Function],default:function(){return[]}},noProviderPaging:{type:Boolean,default:!1},noProviderSorting:{type:Boolean,default:!1},noProviderFiltering:{type:Boolean,default:!1},apiUrl:{type:String,default:""}},computed:{hasProvider:function(){return isFunction(this.items)},providerTriggerContext:function(){var ctx={apiUrl:this.apiUrl,filter:null,sortBy:null,sortDesc:null,perPage:null,currentPage:null};return this.noProviderFiltering||(ctx.filter=this.localFilter),this.noProviderSorting||(ctx.sortBy=this.localSortBy,ctx.sortDesc=this.localSortDesc),this.noProviderPaging||(ctx.perPage=this.perPage,ctx.currentPage=this.currentPage),clone(ctx)}},watch:{items:function(newVal){(this.hasProvider||isFunction(newVal))&&this.$nextTick(this._providerUpdate)},providerTriggerContext:function(newVal,oldVal){looseEqual(newVal,oldVal)||this.$nextTick(this._providerUpdate)}},mounted:function(){var _this=this;!this.hasProvider||this.localItems&&0!==this.localItems.length||this._providerUpdate(),this.listenOnRoot("bv::refresh::table",(function(id){id!==_this.id&&id!==_this||_this.refresh()}))},methods:{refresh:function(){this.$off("refreshed",this.refresh),this.computedBusy?this.localBusy&&this.hasProvider&&this.$on("refreshed",this.refresh):(this.clearSelected(),this.hasProvider?this.$nextTick(this._providerUpdate):this.localItems=isArray(this.items)?this.items.slice():[])},_providerSetLocal:function(items){this.localItems=isArray(items)?items.slice():[],this.localBusy=!1,this.$emit("refreshed"),this.id&&this.emitOnRoot("bv::table::refreshed",this.id)},_providerUpdate:function(){var _this2=this;this.hasProvider&&(this.computedBusy?this.$nextTick(this.refresh):(this.localBusy=!0,this.$nextTick((function(){try{var data=_this2.items(_this2.context,_this2._providerSetLocal);!isUndefinedOrNull(val=data)&&isFunction(val.then)&&isFunction(val.catch)?data.then((function(items){_this2._providerSetLocal(items)})):isArray(data)?_this2._providerSetLocal(data):2!==_this2.items.length&&(warn("Provider function didn't request callback and did not return a promise or data.","BTable"),_this2.localBusy=!1)}catch(e){warn("Provider function error [".concat(e.name,"] ").concat(e.message,"."),"BTable"),_this2.localBusy=!1,_this2.$off("refreshed",_this2.refresh)}var val}))))}}},tableRendererMixin={inheritAttrs:!1,mixins:[attrsMixin],provide:function(){return{bvTable:this}},props:{striped:{type:Boolean,default:!1},bordered:{type:Boolean,default:!1},borderless:{type:Boolean,default:!1},outlined:{type:Boolean,default:!1},dark:{type:Boolean,default:!1},hover:{type:Boolean,default:!1},small:{type:Boolean,default:!1},fixed:{type:Boolean,default:!1},responsive:{type:[Boolean,String],default:!1},stickyHeader:{type:[Boolean,String],default:!1},noBorderCollapse:{type:Boolean,default:!1},captionTop:{type:Boolean,default:!1},tableVariant:{type:String},tableClass:{type:[String,Array,Object]}},computed:{isResponsive:function(){var responsive=""===this.responsive||this.responsive;return!this.isStacked&&responsive},isStickyHeader:function(){var stickyHeader=""===this.stickyHeader||this.stickyHeader;return!this.isStacked&&stickyHeader},wrapperClasses:function(){return[this.isStickyHeader?"b-table-sticky-header":"",!0===this.isResponsive?"table-responsive":this.isResponsive?"table-responsive-".concat(this.responsive):""].filter(identity)},wrapperStyles:function(){return this.isStickyHeader&&!isBoolean(this.isStickyHeader)?{maxHeight:this.isStickyHeader}:{}},tableClasses:function(){var hover=this.isTableSimple?this.hover:this.hover&&this.computedItems.length>0&&!this.computedBusy;return[this.tableClass,{"table-striped":this.striped,"table-hover":hover,"table-dark":this.dark,"table-bordered":this.bordered,"table-borderless":this.borderless,"table-sm":this.small,border:this.outlined,"b-table-fixed":this.fixed,"b-table-caption-top":this.captionTop,"b-table-no-border-collapse":this.noBorderCollapse},this.tableVariant?"".concat(this.dark?"bg":"table","-").concat(this.tableVariant):"",this.stackedTableClasses,this.selectableTableClasses]},tableAttrs:function(){var adb=[(this.bvAttrs||{})["aria-describedby"],this.captionId].filter(identity).join(" ")||null,items=this.computedItems,filteredItems=this.filteredItems,fields=this.computedFields,selectableAttrs=this.selectableTableAttrs||{},ariaAttrs=this.isTableSimple?{}:{"aria-busy":this.computedBusy?"true":"false","aria-colcount":toString$1(fields.length),"aria-describedby":adb};return _objectSpread2(_objectSpread2(_objectSpread2({"aria-rowcount":items&&filteredItems&&filteredItems.length>items.length?toString$1(filteredItems.length):null},this.bvAttrs),{},{id:this.safeId(),role:"table"},ariaAttrs),selectableAttrs)}},render:function(h){var $content=[];this.isTableSimple?$content.push(this.normalizeSlot("default")):($content.push(this.renderCaption?this.renderCaption():null),$content.push(this.renderColgroup?this.renderColgroup():null),$content.push(this.renderThead?this.renderThead():null),$content.push(this.renderTbody?this.renderTbody():null),$content.push(this.renderTfoot?this.renderTfoot():null));var $table=h("table",{key:"b-table",staticClass:"table b-table",class:this.tableClasses,attrs:this.tableAttrs},$content.filter(identity));return this.wrapperClasses.length>0?h("div",{key:"wrap",class:this.wrapperClasses,style:this.wrapperStyles},[$table]):$table}},BTable=Vue.extend({name:"BTable",mixins:[attrsMixin,hasListenerMixin,idMixin,normalizeSlotMixin,itemsMixin,tableRendererMixin,stackedMixin,theadMixin,tfootMixin,tbodyMixin,stackedMixin,filteringMixin,sortingMixin,paginationMixin$1,captionMixin,colgroupMixin,selectableMixin,emptyMixin,topRowMixin,bottomRowMixin,busyMixin,providerMixin]}),BTableLite=Vue.extend({name:"BTableLite",mixins:[hasListenerMixin,idMixin,normalizeSlotMixin,itemsMixin,tableRendererMixin,stackedMixin,theadMixin,tfootMixin,tbodyMixin,captionMixin,colgroupMixin]}),BTableSimple=Vue.extend({name:"BTableSimple",mixins:[idMixin,normalizeSlotMixin,tableRendererMixin,stackedMixin],computed:{isTableSimple:function(){return!0}}}),TableLitePlugin=pluginFactory({components:{BTableLite:BTableLite}}),TableSimplePlugin=pluginFactory({components:{BTableSimple:BTableSimple,BTbody:BTbody,BThead:BThead,BTfoot:BTfoot,BTr:BTr,BTd:BTd,BTh:BTh}}),TablePlugin=pluginFactory({components:{BTable:BTable},plugins:{TableLitePlugin:TableLitePlugin,TableSimplePlugin:TableSimplePlugin}}),navProps=omit(props$K,["tabs","isNavBar","cardHeader"]),notDisabled=function(tab){return!tab.disabled},BTabButtonHelper=Vue.extend({name:"BTabButtonHelper",inject:{bvTabs:{default:function(){return{}}}},props:{tab:{default:null},tabs:{type:Array,default:function(){return[]}},id:{type:String,default:null},controls:{type:String,default:null},tabIndex:{type:Number,default:null},posInSet:{type:Number,default:null},setSize:{type:Number,default:null},noKeyNav:{type:Boolean,default:!1}},methods:{focus:function(){attemptFocus(this.$refs.link)},handleEvt:function(evt){var stop=function(){evt.preventDefault(),evt.stopPropagation()};if(!this.tab.disabled){var type=evt.type,key=evt.keyCode,shift=evt.shiftKey;"click"===type||"keydown"===type&&key===KEY_CODES.SPACE?(stop(),this.$emit("click",evt)):"keydown"!==type||this.noKeyNav||(key===KEY_CODES.UP||key===KEY_CODES.LEFT||key===KEY_CODES.HOME?(stop(),shift||key===KEY_CODES.HOME?this.$emit("first",evt):this.$emit("prev",evt)):key!==KEY_CODES.DOWN&&key!==KEY_CODES.RIGHT&&key!==KEY_CODES.END||(stop(),shift||key===KEY_CODES.END?this.$emit("last",evt):this.$emit("next",evt)))}}},render:function(h){var link=h(BLink,{ref:"link",staticClass:"nav-link",class:[{active:this.tab.localActive&&!this.tab.disabled,disabled:this.tab.disabled},this.tab.titleLinkClass,this.tab.localActive?this.bvTabs.activeNavItemClass:null],props:{disabled:this.tab.disabled},attrs:_objectSpread2(_objectSpread2({},this.tab.titleLinkAttributes),{},{role:"tab",id:this.id,tabindex:this.tabIndex,"aria-selected":this.tab.localActive&&!this.tab.disabled?"true":"false","aria-setsize":this.setSize,"aria-posinset":this.posInSet,"aria-controls":this.controls}),on:{click:this.handleEvt,keydown:this.handleEvt}},[this.tab.normalizeSlot("title")||this.tab.title]);return h("li",{staticClass:"nav-item",class:[this.tab.titleItemClass],attrs:{role:"presentation"}},[link])}}),BTabs=Vue.extend({name:"BTabs",mixins:[idMixin,normalizeSlotMixin],provide:function(){return{bvTabs:this}},model:{prop:"value",event:"input"},props:_objectSpread2(_objectSpread2({},navProps),{},{tag:{type:String,default:"div"},card:{type:Boolean,default:!1},end:{type:Boolean,default:!1},noFade:{type:Boolean,default:!1},noNavStyle:{type:Boolean,default:!1},noKeyNav:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},contentClass:{type:[String,Array,Object]},navClass:{type:[String,Array,Object]},navWrapperClass:{type:[String,Array,Object]},activeNavItemClass:{type:[String,Array,Object]},activeTabClass:{type:[String,Array,Object]},value:{type:Number,default:null}}),data:function(){return{currentTab:toInteger(this.value,-1),tabs:[],registeredTabs:[],isMounted:!1}},computed:{fade:function(){return!this.noFade},localNavClass:function(){var classes=[];return this.card&&this.vertical&&classes.push("card-header","h-100","border-bottom-0","rounded-0"),[].concat(classes,[this.navClass])}},watch:{currentTab:function(newVal){var index=-1;this.tabs.forEach((function(tab,idx){newVal!==idx||tab.disabled?tab.localActive=!1:(tab.localActive=!0,index=idx)})),this.$emit("input",index)},value:function(newVal,oldVal){if(newVal!==oldVal){newVal=toInteger(newVal,-1),oldVal=toInteger(oldVal,0);var tabs=this.tabs;tabs[newVal]&&!tabs[newVal].disabled?this.activateTab(tabs[newVal]):newVal0){var selector=tabs.map((function(tab){return"#".concat(tab.safeId())})).join(", ");order=selectAll(selector,this.$el).map((function(el){return el.id})).filter(identity)}return stableSort(tabs,(function(a,b){return order.indexOf(a.safeId())-order.indexOf(b.safeId())}))},updateTabs:function(){var tabs=this.getTabs(),tabIndex=tabs.indexOf(tabs.slice().reverse().find((function(tab){return tab.localActive&&!tab.disabled})));if(tabIndex<0){var currentTab=this.currentTab;currentTab>=tabs.length?tabIndex=tabs.indexOf(tabs.slice().reverse().find(notDisabled)):tabs[currentTab]&&!tabs[currentTab].disabled&&(tabIndex=currentTab)}tabIndex<0&&(tabIndex=tabs.indexOf(tabs.find(notDisabled))),tabs.forEach((function(tab){tab.localActive=!1})),tabs[tabIndex]&&(tabs[tabIndex].localActive=!0),this.tabs=tabs,this.currentTab=tabIndex},getButtonForTab:function(tab){return(this.$refs.buttons||[]).find((function(btn){return btn.tab===tab}))},updateButton:function(tab){var button=this.getButtonForTab(tab);button&&button.$forceUpdate&&button.$forceUpdate()},activateTab:function(tab){var result=!1;if(tab){var index=this.tabs.indexOf(tab);if(!tab.disabled&&index>-1&&index!==this.currentTab){var tabEvt=new BvEvent("activate-tab",{cancelable:!0,vueTarget:this,componentId:this.safeId()});this.$emit(tabEvt.type,index,this.currentTab,tabEvt),tabEvt.defaultPrevented||(result=!0,this.currentTab=index)}}return result||this.currentTab===this.value||this.$emit("input",this.currentTab),result},deactivateTab:function(tab){return!!tab&&this.activateTab(this.tabs.filter((function(t){return t!==tab})).find(notDisabled))},focusButton:function(tab){var _this8=this;this.$nextTick((function(){attemptFocus(_this8.getButtonForTab(tab))}))},emitTabClick:function(tab,evt){isEvent(evt)&&tab&&tab.$emit&&!tab.disabled&&tab.$emit("click",evt)},clickTab:function(tab,evt){this.activateTab(tab),this.emitTabClick(tab,evt)},firstTab:function(focus){var tab=this.tabs.find(notDisabled);this.activateTab(tab)&&focus&&(this.focusButton(tab),this.emitTabClick(tab,focus))},previousTab:function(focus){var currentIndex=mathMax(this.currentTab,0),tab=this.tabs.slice(0,currentIndex).reverse().find(notDisabled);this.activateTab(tab)&&focus&&(this.focusButton(tab),this.emitTabClick(tab,focus))},nextTab:function(focus){var currentIndex=mathMax(this.currentTab,-1),tab=this.tabs.slice(currentIndex+1).find(notDisabled);this.activateTab(tab)&&focus&&(this.focusButton(tab),this.emitTabClick(tab,focus))},lastTab:function(focus){var tab=this.tabs.slice().reverse().find(notDisabled);this.activateTab(tab)&&focus&&(this.focusButton(tab),this.emitTabClick(tab,focus))}},render:function(h){var _this9=this,tabs=this.tabs,activeTab=tabs.find((function(tab){return tab.localActive&&!tab.disabled})),fallbackTab=tabs.find((function(tab){return!tab.disabled})),buttons=tabs.map((function(tab,index){var tabIndex=null;return _this9.noKeyNav||(tabIndex=-1,(activeTab===tab||!activeTab&&fallbackTab===tab)&&(tabIndex=null)),h(BTabButtonHelper,{key:tab._uid||index,ref:"buttons",refInFor:!0,props:{tab:tab,tabs:tabs,id:tab.controlledBy||(tab.safeId?tab.safeId("_BV_tab_button_"):null),controls:tab.safeId?tab.safeId():null,tabIndex:tabIndex,setSize:tabs.length,posInSet:index+1,noKeyNav:_this9.noKeyNav},on:{click:function(evt){_this9.clickTab(tab,evt)},first:_this9.firstTab,prev:_this9.previousTab,next:_this9.nextTab,last:_this9.lastTab}})})),nav=h(BNav,{ref:"nav",class:this.localNavClass,attrs:{role:"tablist",id:this.safeId("_BV_tab_controls_")},props:{fill:this.fill,justified:this.justified,align:this.align,tabs:!this.noNavStyle&&!this.pills,pills:!this.noNavStyle&&this.pills,vertical:this.vertical,small:this.small,cardHeader:this.card&&!this.vertical}},[this.normalizeSlot("tabs-start")||h(),buttons,this.normalizeSlot("tabs-end")||h()]);nav=h("div",{key:"bv-tabs-nav",class:[{"card-header":this.card&&!this.vertical&&!this.end,"card-footer":this.card&&!this.vertical&&this.end,"col-auto":this.vertical},this.navWrapperClass]},[nav]);var empty=h();tabs&&0!==tabs.length||(empty=h("div",{key:"bv-empty-tab",class:["tab-pane","active",{"card-body":this.card}]},this.normalizeSlot("empty")));var content=h("div",{ref:"tabsContainer",key:"bv-tabs-container",staticClass:"tab-content",class:[{col:this.vertical},this.contentClass],attrs:{id:this.safeId("_BV_tab_container_")}},concat(this.normalizeSlot("default"),empty));return h(this.tag,{staticClass:"tabs",class:{row:this.vertical,"no-gutters":this.vertical&&this.card},attrs:{id:this.safeId()}},[this.end?content:h(),[nav],this.end?h():content])}}),TabsPlugin=pluginFactory({components:{BTabs:BTabs,BTab:Vue.extend({name:"BTab",mixins:[idMixin,normalizeSlotMixin],inject:{bvTabs:{default:function(){return{}}}},props:{active:{type:Boolean,default:!1},tag:{type:String,default:"div"},buttonId:{type:String},title:{type:String,default:""},titleItemClass:{type:[String,Array,Object]},titleLinkClass:{type:[String,Array,Object]},titleLinkAttributes:{type:Object},disabled:{type:Boolean,default:!1},noBody:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1}},data:function(){return{localActive:this.active&&!this.disabled,show:!1}},computed:{tabClasses:function(){return[{active:this.localActive,disabled:this.disabled,"card-body":this.bvTabs.card&&!this.noBody},this.localActive?this.bvTabs.activeTabClass:null]},controlledBy:function(){return this.buttonId||this.safeId("__BV_tab_button__")},computedNoFade:function(){return!this.bvTabs.fade},computedLazy:function(){return this.bvTabs.lazy||this.lazy},_isTab:function(){return!0}},watch:{localActive:function(newVal){this.$emit("update:active",newVal)},active:function(newVal,oldVal){newVal!==oldVal&&(newVal?this.activate():this.deactivate()||this.$emit("update:active",this.localActive))},disabled:function(newVal,oldVal){newVal!==oldVal&&newVal&&this.localActive&&this.bvTabs.firstTab&&(this.localActive=!1,this.bvTabs.firstTab())}},mounted:function(){this.registerTab(),this.show=this.localActive},updated:function(){this.hasNormalizedSlot("title")&&this.bvTabs.updateButton&&this.bvTabs.updateButton(this)},destroyed:function(){this.unregisterTab()},methods:{registerTab:function(){this.bvTabs.registerTab&&this.bvTabs.registerTab(this)},unregisterTab:function(){this.bvTabs.unregisterTab&&this.bvTabs.unregisterTab(this)},activate:function(){return!(!this.bvTabs.activateTab||this.disabled)&&this.bvTabs.activateTab(this)},deactivate:function(){return!(!this.bvTabs.deactivateTab||!this.localActive)&&this.bvTabs.deactivateTab(this)}},render:function(h){var content=h(this.tag,{ref:"panel",staticClass:"tab-pane",class:this.tabClasses,directives:[{name:"show",rawName:"v-show",value:this.localActive,expression:"localActive"}],attrs:{role:"tabpanel",id:this.safeId(),"aria-hidden":this.localActive?"false":"true","aria-labelledby":this.controlledBy||null}},[this.localActive||!this.computedLazy?this.normalizeSlot("default"):h()]);return h(BVTransition,{props:{mode:"out-in",noFade:this.computedNoFade}},[content])}})}}),TimePlugin=pluginFactory({components:{BTime:BTime}});function _typeof$1(obj){return _typeof$1="function"==typeof Symbol&&"symbol"===_typeof2(Symbol.iterator)?function(obj){return _typeof2(obj)}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":_typeof2(obj)},_typeof$1(obj)}function _toConsumableArray$1(arr){return function(arr){if(Array.isArray(arr)){for(var i=0,arr2=new Array(arr.length);i1&&void 0!==arguments[1]&&arguments[1],to=transport.to,from=transport.from;if(to&&(from||!1!==force)&&this.transports[to])if(force)this.transports[to]=[];else{var index=this.$_getTransportIndex(transport);if(index>=0){var newTransports=this.transports[to].slice(0);newTransports.splice(index,1),this.transports[to]=newTransports}}},registerTarget:function(target,vm,force){inBrowser&&(this.trackInstances&&!force&&this.targets[target]&&console.warn("[portal-vue]: Target ".concat(target," already exists")),this.$set(this.targets,target,Object.freeze([vm])))},unregisterTarget:function(target){this.$delete(this.targets,target)},registerSource:function(source,vm,force){inBrowser&&(this.trackInstances&&!force&&this.sources[source]&&console.warn("[portal-vue]: source ".concat(source," already exists")),this.$set(this.sources,source,Object.freeze([vm])))},unregisterSource:function(source){this.$delete(this.sources,source)},hasTarget:function(to){return!(!this.targets[to]||!this.targets[to][0])},hasSource:function(to){return!(!this.sources[to]||!this.sources[to][0])},hasContentFor:function(to){return!!this.transports[to]&&!!this.transports[to].length},$_getTransportIndex:function(_ref){var to=_ref.to,from=_ref.from;for(var i in this.transports[to])if(this.transports[to][i].from===from)return+i;return-1}}}),wormhole=new Wormhole(transports),_id=1,Portal=Vue.extend({name:"portal",props:{disabled:{type:Boolean},name:{type:String,default:function(){return String(_id++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}}},created:function(){var _this=this;this.$nextTick((function(){wormhole.registerSource(_this.name,_this)}))},mounted:function(){this.disabled||this.sendUpdate()},updated:function(){this.disabled?this.clear():this.sendUpdate()},beforeDestroy:function(){wormhole.unregisterSource(this.name),this.clear()},watch:{to:function(newValue,oldValue){oldValue&&oldValue!==newValue&&this.clear(oldValue),this.sendUpdate()}},methods:{clear:function(target){var closer={from:this.name,to:target||this.to};wormhole.close(closer)},normalizeSlots:function(){return this.$scopedSlots.default?[this.$scopedSlots.default]:this.$slots.default},normalizeOwnChildren:function(children){return"function"==typeof children?children(this.slotProps):children},sendUpdate:function(){var slotContent=this.normalizeSlots();if(slotContent){var transport={from:this.name,to:this.to,passengers:_toConsumableArray$1(slotContent),order:this.order};wormhole.open(transport)}else this.clear()}},render:function(h){var children=this.$slots.default||this.$scopedSlots.default||[],Tag=this.tag;return children&&this.disabled?children.length<=1&&this.slim?this.normalizeOwnChildren(children)[0]:h(Tag,[this.normalizeOwnChildren(children)]):this.slim?h():h(Tag,{class:{"v-portal":!0},style:{display:"none"},key:"v-portal-placeholder"})}}),PortalTarget=Vue.extend({name:"portalTarget",props:{multiple:{type:Boolean,default:!1},name:{type:String,required:!0},slim:{type:Boolean,default:!1},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},data:function(){return{transports:wormhole.transports,firstRender:!0}},created:function(){var _this=this;this.$nextTick((function(){wormhole.registerTarget(_this.name,_this)}))},watch:{ownTransports:function(){this.$emit("change",this.children().length>0)},name:function(newVal,oldVal){wormhole.unregisterTarget(oldVal),wormhole.registerTarget(newVal,this)}},mounted:function(){var _this2=this;this.transition&&this.$nextTick((function(){_this2.firstRender=!1}))},beforeDestroy:function(){wormhole.unregisterTarget(this.name)},computed:{ownTransports:function(){var transports=this.transports[this.name]||[];return this.multiple?transports:0===transports.length?[]:[transports[transports.length-1]]},passengers:function(){return function(transports){var slotProps=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return transports.reduce((function(passengers,transport){var temp=transport.passengers[0],newPassengers="function"==typeof temp?temp(slotProps):transport.passengers;return passengers.concat(newPassengers)}),[])}(this.ownTransports,this.slotProps)}},methods:{children:function(){return 0!==this.passengers.length?this.passengers:this.$scopedSlots.default?this.$scopedSlots.default(this.slotProps):this.$slots.default||[]},noWrapper:function(){var noWrapper=this.slim&&!this.transition;return noWrapper&&this.children().length>1&&console.warn("[portal-vue]: PortalTarget with `slim` option received more than one child element."),noWrapper}},render:function(h){var noWrapper=this.noWrapper(),children=this.children(),Tag=this.transition||this.tag;return noWrapper?children[0]:this.slim&&!Tag?h():h(Tag,{props:{tag:this.transition&&this.tag?this.tag:void 0},class:{"vue-portal-target":!0}},children)}}),_id$1=0,portalProps=["disabled","name","order","slim","slotProps","tag","to"],targetProps=["multiple","transition"],props$$=(Vue.extend({name:"MountingPortal",inheritAttrs:!1,props:{append:{type:[Boolean,String]},bail:{type:Boolean},mountTo:{type:String,required:!0},disabled:{type:Boolean},name:{type:String,default:function(){return"mounted_"+String(_id$1++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}},multiple:{type:Boolean,default:!1},targetSlim:{type:Boolean},targetSlotProps:{type:Object,default:function(){return{}}},targetTag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},created:function(){if("undefined"!=typeof document){var el=document.querySelector(this.mountTo);if(el){var props=this.$props;if(wormhole.targets[props.name])props.bail?console.warn("[portal-vue]: Target ".concat(props.name," is already mounted.\n Aborting because 'bail: true' is set")):this.portalTarget=wormhole.targets[props.name];else{var append=props.append;if(append){var type="string"==typeof append?append:"DIV",mountEl=document.createElement(type);el.appendChild(mountEl),el=mountEl}var _props=pick$1(this.$props,targetProps);_props.slim=this.targetSlim,_props.tag=this.targetTag,_props.slotProps=this.targetSlotProps,_props.name=this.to,this.portalTarget=new PortalTarget({el:el,parent:this.$parent||this,propsData:_props})}}else console.error("[portal-vue]: Mount Point '".concat(this.mountTo,"' not found in document"))}},beforeDestroy:function(){var target=this.portalTarget;if(this.append){var el=target.$el;el.parentNode.removeChild(el)}target.$destroy()},render:function(h){if(!this.portalTarget)return console.warn("[portal-vue] Target wasn't mounted"),h();if(!this.$scopedSlots.manual){var props=pick$1(this.$props,portalProps);return h(Portal,{props:props,attrs:this.$attrs,on:this.$listeners,scopedSlots:this.$scopedSlots},this.$slots.default)}var content=this.$scopedSlots.manual({to:this.to});return Array.isArray(content)&&(content=content[0]),content||h()}}),{name:{type:String,required:!0},ariaLive:{type:String,default:function(){return getComponentConfig("BToaster","ariaLive")}},ariaAtomic:{type:String,default:function(){return getComponentConfig("BToaster","ariaAtomic")}},role:{type:String,default:function(){return getComponentConfig("BToaster","role")}}}),DefaultTransition=Vue.extend({data:function(){return{name:"b-toaster"}},methods:{onAfterEnter:function(el){var _this=this;requestAF((function(){removeClass(el,"".concat(_this.name,"-enter-to"))}))}},render:function(h){return h("transition-group",{props:{tag:"div",name:this.name},on:{afterEnter:this.onAfterEnter}},this.$slots.default)}}),BToaster=Vue.extend({name:"BToaster",props:props$$,data:function(){return{doRender:!1,dead:!1,staticName:this.name}},beforeMount:function(){var _this2=this;this.staticName=this.name,wormhole.hasTarget(this.staticName)?(warn('A "" with name "'.concat(this.name,'" already exists in the document.'),"BToaster"),this.dead=!0):(this.doRender=!0,this.$once("hook:beforeDestroy",(function(){_this2.$root.$emit("bv::toaster::destroyed",_this2.staticName)})))},destroyed:function(){this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)},render:function(h){var $toaster=h("div",{class:["d-none",{"b-dead-toaster":this.dead}]});if(this.doRender){var $target=h(PortalTarget,{staticClass:"b-toaster-slot",props:{name:this.staticName,multiple:!0,tag:"div",slim:!1,transition:DefaultTransition}});$toaster=h("div",{staticClass:"b-toaster",class:[this.staticName],attrs:{id:this.staticName,role:this.role||null,"aria-live":this.ariaLive,"aria-atomic":this.ariaAtomic}},[$target])}return $toaster}}),linkProps$5=pick(props$1,["href","to"]),props$10=_objectSpread2({id:{type:String},title:{type:String},toaster:{type:String,default:function(){return getComponentConfig("BToast","toaster")}},visible:{type:Boolean,default:!1},variant:{type:String,default:function(){return getComponentConfig("BToast","variant")}},isStatus:{type:Boolean,default:!1},appendToast:{type:Boolean,default:!1},noAutoHide:{type:Boolean,default:!1},autoHideDelay:{type:[Number,String],default:function(){return getComponentConfig("BToast","autoHideDelay")}},noCloseButton:{type:Boolean,default:!1},noFade:{type:Boolean,default:!1},noHoverPause:{type:Boolean,default:!1},solid:{type:Boolean,default:!1},toastClass:{type:[String,Object,Array],default:function(){return getComponentConfig("BToast","toastClass")}},headerClass:{type:[String,Object,Array],default:function(){return getComponentConfig("BToast","headerClass")}},bodyClass:{type:[String,Object,Array],default:function(){return getComponentConfig("BToast","bodyClass")}},static:{type:Boolean,default:!1}},linkProps$5),BToast=Vue.extend({name:"BToast",mixins:[attrsMixin,idMixin,listenOnRootMixin,normalizeSlotMixin,scopedStyleAttrsMixin],inheritAttrs:!1,model:{prop:"visible",event:"change"},props:props$10,data:function(){return{isMounted:!1,doRender:!1,localShow:!1,isTransitioning:!1,isHiding:!1,order:0,timer:null,dismissStarted:0,resumeDismiss:0}},computed:{bToastClasses:function(){return _defineProperty({"b-toast-solid":this.solid,"b-toast-append":this.appendToast,"b-toast-prepend":!this.appendToast},"b-toast-".concat(this.variant),this.variant)},slotScope:function(){return{hide:this.hide}},computedDuration:function(){return mathMax(toInteger(this.autoHideDelay,0),1e3)},computedToaster:function(){return String(this.toaster)},transitionHandlers:function(){return{beforeEnter:this.onBeforeEnter,afterEnter:this.onAfterEnter,beforeLeave:this.onBeforeLeave,afterLeave:this.onAfterLeave}},computedAttrs:function(){return _objectSpread2(_objectSpread2({},this.bvAttrs),{},{id:this.safeId(),tabindex:"0"})}},watch:{visible:function(newVal){newVal?this.show():this.hide()},localShow:function(newVal){newVal!==this.visible&&this.$emit("change",newVal)},toaster:function(){this.$nextTick(this.ensureToaster)},static:function(newVal){newVal&&this.localShow&&this.ensureToaster()}},mounted:function(){var _this=this;this.isMounted=!0,this.$nextTick((function(){_this.visible&&requestAF((function(){_this.show()}))})),this.listenOnRoot("bv::show::toast",(function(id){id===_this.safeId()&&_this.show()})),this.listenOnRoot("bv::hide::toast",(function(id){id&&id!==_this.safeId()||_this.hide()})),this.listenOnRoot("bv::toaster::destroyed",(function(toaster){toaster===_this.computedToaster&&_this.hide()}))},beforeDestroy:function(){this.clearDismissTimer()},methods:{show:function(){var _this2=this;if(!this.localShow){this.ensureToaster();var showEvt=this.buildEvent("show");this.emitEvent(showEvt),this.dismissStarted=this.resumeDismiss=0,this.order=Date.now()*(this.appendToast?1:-1),this.isHiding=!1,this.doRender=!0,this.$nextTick((function(){requestAF((function(){_this2.localShow=!0}))}))}},hide:function(){var _this3=this;if(this.localShow){var hideEvt=this.buildEvent("hide");this.emitEvent(hideEvt),this.setHoverHandler(!1),this.dismissStarted=this.resumeDismiss=0,this.clearDismissTimer(),this.isHiding=!0,requestAF((function(){_this3.localShow=!1}))}},buildEvent:function(type){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new BvEvent(type,_objectSpread2(_objectSpread2({cancelable:!1,target:this.$el||null,relatedTarget:null},options),{},{vueTarget:this,componentId:this.safeId()}))},emitEvent:function(bvEvt){var type=bvEvt.type;this.emitOnRoot("bv::toast:".concat(type),bvEvt),this.$emit(type,bvEvt)},ensureToaster:function(){if(!this.static&&!wormhole.hasTarget(this.computedToaster)){var div=document.createElement("div");document.body.appendChild(div),new BToaster({parent:this.$root,propsData:{name:this.computedToaster}}).$mount(div)}},startDismissTimer:function(){this.clearDismissTimer(),this.noAutoHide||(this.timer=setTimeout(this.hide,this.resumeDismiss||this.computedDuration),this.dismissStarted=Date.now(),this.resumeDismiss=0)},clearDismissTimer:function(){clearTimeout(this.timer),this.timer=null},setHoverHandler:function(on){var el=this.$refs["b-toast"];eventOnOff(on,el,"mouseenter",this.onPause,EVENT_OPTIONS_NO_CAPTURE),eventOnOff(on,el,"mouseleave",this.onUnPause,EVENT_OPTIONS_NO_CAPTURE)},onPause:function(){if(!this.noAutoHide&&!this.noHoverPause&&this.timer&&!this.resumeDismiss){var passed=Date.now()-this.dismissStarted;passed>0&&(this.clearDismissTimer(),this.resumeDismiss=mathMax(this.computedDuration-passed,1e3))}},onUnPause:function(){this.noAutoHide||this.noHoverPause||!this.resumeDismiss?this.resumeDismiss=this.dismissStarted=0:this.startDismissTimer()},onLinkClick:function(){var _this4=this;this.$nextTick((function(){requestAF((function(){_this4.hide()}))}))},onBeforeEnter:function(){this.isTransitioning=!0},onAfterEnter:function(){this.isTransitioning=!1;var hiddenEvt=this.buildEvent("shown");this.emitEvent(hiddenEvt),this.startDismissTimer(),this.setHoverHandler(!0)},onBeforeLeave:function(){this.isTransitioning=!0},onAfterLeave:function(){this.isTransitioning=!1,this.order=0,this.resumeDismiss=this.dismissStarted=0;var hiddenEvt=this.buildEvent("hidden");this.emitEvent(hiddenEvt),this.doRender=!1},makeToast:function(h){var _this5=this,$headerContent=[],$title=this.normalizeSlot("toast-title",this.slotScope);$title?$headerContent.push($title):this.title&&$headerContent.push(h("strong",{staticClass:"mr-2"},this.title)),this.noCloseButton||$headerContent.push(h(BButtonClose,{staticClass:"ml-auto mb-1",on:{click:function(){_this5.hide()}}}));var $header=h();$headerContent.length>0&&($header=h("header",{staticClass:"toast-header",class:this.headerClass},$headerContent));var link=isLink(this),$body=h(link?BLink:"div",{staticClass:"toast-body",class:this.bodyClass,props:link?pluckProps(linkProps$5,this):{},on:link?{click:this.onLinkClick}:{}},[this.normalizeSlot("default",this.slotScope)||h()]);return h("div",{key:"toast-".concat(this._uid),ref:"toast",staticClass:"toast",class:this.toastClass,attrs:this.computedAttrs},[$header,$body])}},render:function(h){if(!this.doRender||!this.isMounted)return h();var name="b-toast-".concat(this._uid),scopedStyleAttrs=this.static?{}:this.scopedStyleAttrs;return h(Portal,{props:{name:name,to:this.computedToaster,order:this.order,slim:!0,disabled:this.static}},[h("div",{key:name,ref:"b-toast",staticClass:"b-toast",class:this.bToastClasses,attrs:_objectSpread2(_objectSpread2({},scopedStyleAttrs),{},{id:this.safeId("_toast_outer"),role:this.isHiding?null:this.isStatus?"status":"alert","aria-live":this.isHiding?null:this.isStatus?"polite":"assertive","aria-atomic":this.isHiding?null:"true"})},[h(BVTransition,{props:{noFade:this.noFade},on:this.transitionHandlers},[this.localShow?this.makeToast(h):h()])])])}}),BASE_PROPS$1=["id"].concat(_toConsumableArray(keys(omit(props$10,["static","visible"])))),propsToSlots$1={toastContent:"default",title:"toast-title"},filterOptions$1=function(options){return BASE_PROPS$1.reduce((function(memo,key){return isUndefined(options[key])||(memo[key]=options[key]),memo}),{})},BVToastPlugin=pluginFactory({plugins:{plugin:function(Vue){var BToastPop=Vue.extend({name:"BToastPop",extends:BToast,destroyed:function(){this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)},mounted:function(){var self=this,handleDestroy=function(){self.localShow=!1,self.doRender=!1,self.$nextTick((function(){self.$nextTick((function(){requestAF((function(){self.$destroy()}))}))}))};this.$parent.$once("hook:destroyed",handleDestroy),this.$once("hidden",handleDestroy),this.listenOnRoot("bv::toaster::destroyed",(function(toaster){toaster===self.toaster&&handleDestroy()}))}}),BvToast=function(){function BvToast(vm){_classCallCheck(this,BvToast),assign(this,{_vm:vm,_root:vm.$root}),defineProperties(this,{_vm:{enumerable:!0,configurable:!1,writable:!1},_root:{enumerable:!0,configurable:!1,writable:!1}})}return _createClass(BvToast,[{key:"toast",value:function(content){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};content&&!warnNotClient("$bvToast")&&function(props,$parent){if(!warnNotClient("$bvToast")){var toast=new BToastPop({parent:$parent,propsData:_objectSpread2(_objectSpread2(_objectSpread2({},filterOptions$1(getComponentConfig("BToast")||{})),omit(props,keys(propsToSlots$1))),{},{static:!1,visible:!0})});keys(propsToSlots$1).forEach((function(prop){var value=props[prop];isUndefined(value)||("title"===prop&&isString(value)&&(value=[$parent.$createElement("strong",{class:"mr-2"},value)]),toast.$slots[propsToSlots$1[prop]]=concat(value))}));var div=document.createElement("div");document.body.appendChild(div),toast.$mount(div)}}(_objectSpread2(_objectSpread2({},filterOptions$1(options)),{},{toastContent:content}),this._vm)}},{key:"show",value:function(id){id&&this._root.$emit("bv::show::toast",id)}},{key:"hide",value:function(){var id=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._root.$emit("bv::hide::toast",id)}}]),BvToast}();Vue.mixin({beforeCreate:function(){this._bv__toast=new BvToast(this)}}),hasOwnProperty(Vue.prototype,"$bvToast")||defineProperty(Vue.prototype,"$bvToast",{get:function(){return this&&this._bv__toast||warn('"'.concat("$bvToast",'" must be accessed from a Vue instance "this" context.'),"BToast"),this._bv__toast}})}}}),ToastPlugin=pluginFactory({components:{BToast:BToast,BToaster:BToaster},plugins:{BVToastPlugin:BVToastPlugin}}),BV_TOOLTIP="__BV_Tooltip__",validTriggers$1={focus:!0,hover:!0,click:!0,blur:!0,manual:!0},htmlRE$1=/^html$/i,noninteractiveRE=/^noninteractive$/i,noFadeRE$1=/^nofade$/i,placementRE$1=/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i,boundaryRE$1=/^(window|viewport|scrollParent)$/i,delayRE$1=/^d\d+$/i,delayShowRE$1=/^ds\d+$/i,delayHideRE$1=/^dh\d+$/i,offsetRE$1=/^o-?\d+$/i,variantRE$1=/^v-.+$/i,spacesRE$1=/\s+/,applyTooltip=function(el,bindings,vnode){if(isBrowser){var config=function(bindings,vnode){var NAME="BTooltip",config={title:void 0,trigger:"",placement:"top",fallbackPlacement:"flip",container:!1,animation:!0,offset:0,id:null,html:!1,interactive:!0,disabled:!1,delay:getComponentConfig(NAME,"delay"),boundary:String(getComponentConfig(NAME,"boundary")),boundaryPadding:toInteger(getComponentConfig(NAME,"boundaryPadding"),0),variant:getComponentConfig(NAME,"variant"),customClass:getComponentConfig(NAME,"customClass")};if(isString(bindings.value)||isNumber(bindings.value)||isFunction(bindings.value)?config.title=bindings.value:isPlainObject(bindings.value)&&(config=_objectSpread2(_objectSpread2({},config),bindings.value)),isUndefined(config.title)){var data=vnode.data||{};config.title=data.attrs&&!isUndefinedOrNull(data.attrs.title)?data.attrs.title:void 0}isPlainObject(config.delay)||(config.delay={show:toInteger(config.delay,0),hide:toInteger(config.delay,0)}),bindings.arg&&(config.container="#".concat(bindings.arg)),keys(bindings.modifiers).forEach((function(mod){if(htmlRE$1.test(mod))config.html=!0;else if(noninteractiveRE.test(mod))config.interactive=!1;else if(noFadeRE$1.test(mod))config.animation=!1;else if(placementRE$1.test(mod))config.placement=mod;else if(boundaryRE$1.test(mod))mod="scrollparent"===mod?"scrollParent":mod,config.boundary=mod;else if(delayRE$1.test(mod)){var delay=toInteger(mod.slice(1),0);config.delay.show=delay,config.delay.hide=delay}else delayShowRE$1.test(mod)?config.delay.show=toInteger(mod.slice(2),0):delayHideRE$1.test(mod)?config.delay.hide=toInteger(mod.slice(2),0):offsetRE$1.test(mod)?config.offset=toInteger(mod.slice(1),0):variantRE$1.test(mod)&&(config.variant=mod.slice(2)||null)}));var selectedTriggers={};return concat(config.trigger||"").filter(identity).join(" ").trim().toLowerCase().split(spacesRE$1).forEach((function(trigger){validTriggers$1[trigger]&&(selectedTriggers[trigger]=!0)})),keys(bindings.modifiers).forEach((function(mod){mod=mod.toLowerCase(),validTriggers$1[mod]&&(selectedTriggers[mod]=!0)})),config.trigger=keys(selectedTriggers).join(" "),"blur"===config.trigger&&(config.trigger="focus"),config.trigger||(config.trigger="hover focus"),config}(bindings,vnode);if(!el[BV_TOOLTIP]){var $parent=vnode.context;el[BV_TOOLTIP]=new BVTooltip({parent:$parent,_scopeId:getScopeId($parent,void 0)}),el[BV_TOOLTIP].__bv_prev_data__={},el[BV_TOOLTIP].$on("show",(function(){isFunction(config.title)&&el[BV_TOOLTIP].updateData({title:config.title(el)})}))}var data={title:config.title,triggers:config.trigger,placement:config.placement,fallbackPlacement:config.fallbackPlacement,variant:config.variant,customClass:config.customClass,container:config.container,boundary:config.boundary,delay:config.delay,offset:config.offset,noFade:!config.animation,id:config.id,interactive:config.interactive,disabled:config.disabled,html:config.html},oldData=el[BV_TOOLTIP].__bv_prev_data__;if(el[BV_TOOLTIP].__bv_prev_data__=data,!looseEqual(data,oldData)){var newData={target:el};keys(data).forEach((function(prop){data[prop]!==oldData[prop]&&(newData[prop]="title"===prop&&isFunction(data[prop])?data[prop](el):data[prop])})),el[BV_TOOLTIP].updateData(newData)}}},VBTooltipPlugin=pluginFactory({directives:{VBTooltip:{bind:function(el,bindings,vnode){applyTooltip(el,bindings,vnode)},componentUpdated:function(el,bindings,vnode){vnode.context.$nextTick((function(){applyTooltip(el,bindings,vnode)}))},unbind:function(el){!function(el){el[BV_TOOLTIP]&&(el[BV_TOOLTIP].$destroy(),el[BV_TOOLTIP]=null),delete el[BV_TOOLTIP]}(el)}}}}),TooltipPlugin=pluginFactory({components:{BTooltip:BTooltip},plugins:{VBTooltipPlugin:VBTooltipPlugin}}),componentsPlugin=pluginFactory({plugins:{AlertPlugin:AlertPlugin,AspectPlugin:AspectPlugin,AvatarPlugin:AvatarPlugin,BadgePlugin:BadgePlugin,BreadcrumbPlugin:BreadcrumbPlugin,ButtonPlugin:ButtonPlugin,ButtonGroupPlugin:ButtonGroupPlugin,ButtonToolbarPlugin:ButtonToolbarPlugin,CalendarPlugin:CalendarPlugin,CardPlugin:CardPlugin,CarouselPlugin:CarouselPlugin,CollapsePlugin:CollapsePlugin,DropdownPlugin:DropdownPlugin,EmbedPlugin:EmbedPlugin,FormPlugin:FormPlugin,FormCheckboxPlugin:FormCheckboxPlugin,FormDatepickerPlugin:FormDatepickerPlugin,FormFilePlugin:FormFilePlugin,FormGroupPlugin:FormGroupPlugin,FormInputPlugin:FormInputPlugin,FormRadioPlugin:FormRadioPlugin,FormRatingPlugin:FormRatingPlugin,FormSelectPlugin:FormSelectPlugin,FormSpinbuttonPlugin:FormSpinbuttonPlugin,FormTagsPlugin:FormTagsPlugin,FormTextareaPlugin:FormTextareaPlugin,FormTimepickerPlugin:FormTimepickerPlugin,ImagePlugin:ImagePlugin,InputGroupPlugin:InputGroupPlugin,JumbotronPlugin:JumbotronPlugin,LayoutPlugin:LayoutPlugin,LinkPlugin:LinkPlugin,ListGroupPlugin:ListGroupPlugin,MediaPlugin:MediaPlugin,ModalPlugin:ModalPlugin,NavPlugin:NavPlugin,NavbarPlugin:NavbarPlugin,OverlayPlugin:OverlayPlugin,PaginationPlugin:PaginationPlugin,PaginationNavPlugin:PaginationNavPlugin,PopoverPlugin:PopoverPlugin,ProgressPlugin:ProgressPlugin,SidebarPlugin:SidebarPlugin,SpinnerPlugin:SpinnerPlugin,TablePlugin:TablePlugin,TabsPlugin:TabsPlugin,TimePlugin:TimePlugin,ToastPlugin:ToastPlugin,TooltipPlugin:TooltipPlugin}}),VBHoverPlugin=pluginFactory({directives:{VBHover:VBHover}}),VBModalPlugin=pluginFactory({directives:{VBModal:VBModal}}),Default={element:"body",offset:10,method:"auto",throttle:75},DefaultType={element:"(string|element|component)",offset:"number",method:"string",throttle:"number"},ClassName_DROPDOWN_ITEM="dropdown-item",ClassName_ACTIVE="active",Selector$2={ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown, .dropup",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},OffsetMethod_OFFSET="offset",OffsetMethod_POSITION="position",HREF_REGEX=/^.*(#[^#]+)$/,TransitionEndEvents$1=["webkitTransitionEnd","transitionend","otransitionend","oTransitionEnd"],toType$1=function(obj){return function(obj){return Object.prototype.toString.call(obj)}(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()},ScrollSpy=function(){function ScrollSpy(element,config,$root){_classCallCheck(this,ScrollSpy),this.$el=element,this.$scroller=null,this.$selector=[Selector$2.NAV_LINKS,Selector$2.LIST_ITEMS,Selector$2.DROPDOWN_ITEMS].join(","),this.$offsets=[],this.$targets=[],this.$activeTarget=null,this.$scrollHeight=0,this.$resizeTimeout=null,this.$scrollerObserver=null,this.$targetsObserver=null,this.$root=$root||null,this.$config=null,this.updateConfig(config)}return _createClass(ScrollSpy,[{key:"updateConfig",value:function(config,$root){this.$scroller&&(this.unlisten(),this.$scroller=null);var cfg=_objectSpread2(_objectSpread2({},this.constructor.Default),config);if($root&&(this.$root=$root),function(componentName,config,configTypes){for(var property in configTypes)if(hasOwnProperty(configTypes,property)){var expectedTypes=configTypes[property],value=config[property],valueType=value&&isElement(value)?"element":toType$1(value);valueType=value&&value._isVue?"component":valueType,new RegExp(expectedTypes).test(valueType)||warn("".concat(componentName,': Option "').concat(property,'" provided type "').concat(valueType,'" but expected type "').concat(expectedTypes,'"'))}}(this.constructor.Name,cfg,this.constructor.DefaultType),this.$config=cfg,this.$root){var self=this;this.$root.$nextTick((function(){self.listen()}))}else this.listen()}},{key:"dispose",value:function(){this.unlisten(),clearTimeout(this.$resizeTimeout),this.$resizeTimeout=null,this.$el=null,this.$config=null,this.$scroller=null,this.$selector=null,this.$offsets=null,this.$targets=null,this.$activeTarget=null,this.$scrollHeight=null}},{key:"listen",value:function(){var _this=this,scroller=this.getScroller();scroller&&"BODY"!==scroller.tagName&&eventOn(scroller,"scroll",this,EVENT_OPTIONS_NO_CAPTURE),eventOn(window,"scroll",this,EVENT_OPTIONS_NO_CAPTURE),eventOn(window,"resize",this,EVENT_OPTIONS_NO_CAPTURE),eventOn(window,"orientationchange",this,EVENT_OPTIONS_NO_CAPTURE),TransitionEndEvents$1.forEach((function(evtName){eventOn(window,evtName,_this,EVENT_OPTIONS_NO_CAPTURE)})),this.setObservers(!0),this.handleEvent("refresh")}},{key:"unlisten",value:function(){var _this2=this,scroller=this.getScroller();this.setObservers(!1),scroller&&"BODY"!==scroller.tagName&&eventOff(scroller,"scroll",this,EVENT_OPTIONS_NO_CAPTURE),eventOff(window,"scroll",this,EVENT_OPTIONS_NO_CAPTURE),eventOff(window,"resize",this,EVENT_OPTIONS_NO_CAPTURE),eventOff(window,"orientationchange",this,EVENT_OPTIONS_NO_CAPTURE),TransitionEndEvents$1.forEach((function(evtName){eventOff(window,evtName,_this2,EVENT_OPTIONS_NO_CAPTURE)}))}},{key:"setObservers",value:function(on){var _this3=this;this.$scrollerObserver&&this.$scrollerObserver.disconnect(),this.$targetsObserver&&this.$targetsObserver.disconnect(),this.$scrollerObserver=null,this.$targetsObserver=null,on&&(this.$targetsObserver=observeDom(this.$el,(function(){_this3.handleEvent("mutation")}),{subtree:!0,childList:!0,attributes:!0,attributeFilter:["href"]}),this.$scrollerObserver=observeDom(this.getScroller(),(function(){_this3.handleEvent("mutation")}),{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["id","style","class"]}))}},{key:"handleEvent",value:function(evt){var type=isString(evt)?evt:evt.type,self=this;"scroll"===type?(this.$scrollerObserver||this.listen(),this.process()):/(resize|orientationchange|mutation|refresh)/.test(type)&&(self.$resizeTimeout||(self.$resizeTimeout=setTimeout((function(){self.refresh(),self.process(),self.$resizeTimeout=null}),self.$config.throttle)))}},{key:"refresh",value:function(){var _this4=this,scroller=this.getScroller();if(scroller){var autoMethod=scroller!==scroller.window?OffsetMethod_POSITION:OffsetMethod_OFFSET,method="auto"===this.$config.method?autoMethod:this.$config.method,methodFn=method===OffsetMethod_POSITION?position:offset,offsetBase=method===OffsetMethod_POSITION?this.getScrollTop():0;return this.$offsets=[],this.$targets=[],this.$scrollHeight=this.getScrollHeight(),selectAll(this.$selector,this.$el).map((function(link){return getAttr(link,"href")})).filter((function(href){return href&&HREF_REGEX.test(href||"")})).map((function(href){var id=href.replace(HREF_REGEX,"$1").trim();if(!id)return null;var el=select(id,scroller);return el&&isVisible(el)?{offset:toInteger(methodFn(el).top,0)+offsetBase,target:id}:null})).filter(Boolean).sort((function(a,b){return a.offset-b.offset})).reduce((function(memo,item){return memo[item.target]||(_this4.$offsets.push(item.offset),_this4.$targets.push(item.target),memo[item.target]=!0),memo}),{}),this}}},{key:"process",value:function(){var scrollTop=this.getScrollTop()+this.$config.offset,scrollHeight=this.getScrollHeight(),maxScroll=this.$config.offset+scrollHeight-this.getOffsetHeight();if(this.$scrollHeight!==scrollHeight&&this.refresh(),scrollTop>=maxScroll){var target=this.$targets[this.$targets.length-1];this.$activeTarget!==target&&this.activate(target)}else{if(this.$activeTarget&&scrollTop0)return this.$activeTarget=null,void this.clear();for(var i=this.$offsets.length;i--;){this.$activeTarget!==this.$targets[i]&&scrollTop>=this.$offsets[i]&&(isUndefined(this.$offsets[i+1])||scrollTop0&&this.$root&&this.$root.$emit("bv::scrollspy::activate",target,links)}},{key:"clear",value:function(){var _this6=this;selectAll("".concat(this.$selector,", ").concat(Selector$2.NAV_ITEMS),this.$el).filter((function(el){return hasClass(el,ClassName_ACTIVE)})).forEach((function(el){return _this6.setActiveState(el,!1)}))}},{key:"setActiveState",value:function(el,active){el&&(active?addClass(el,ClassName_ACTIVE):removeClass(el,ClassName_ACTIVE))}}],[{key:"Name",get:function(){return"v-b-scrollspy"}},{key:"Default",get:function(){return Default}},{key:"DefaultType",get:function(){return DefaultType}}]),ScrollSpy}(),BV_SCROLLSPY="__BV_ScrollSpy__",onlyDigitsRE=/^\d+$/,offsetRE$2=/^(auto|position|offset)$/,applyScrollspy=function(el,bindings,vnode){if(isBrowser){var config=function(bindings){var config={};return bindings.arg&&(config.element="#".concat(bindings.arg)),keys(bindings.modifiers).forEach((function(mod){onlyDigitsRE.test(mod)?config.offset=toInteger(mod,0):offsetRE$2.test(mod)&&(config.method=mod)})),isString(bindings.value)?config.element=bindings.value:isNumber(bindings.value)?config.offset=mathRound(bindings.value):isObject(bindings.value)&&keys(bindings.value).filter((function(k){return!!ScrollSpy.DefaultType[k]})).forEach((function(k){config[k]=bindings.value[k]})),config}(bindings);el[BV_SCROLLSPY]?el[BV_SCROLLSPY].updateConfig(config,vnode.context.$root):el[BV_SCROLLSPY]=new ScrollSpy(el,config,vnode.context.$root)}},VBScrollspyPlugin=pluginFactory({directives:{VBScrollspy:{bind:function(el,bindings,vnode){applyScrollspy(el,bindings,vnode)},inserted:function(el,bindings,vnode){applyScrollspy(el,bindings,vnode)},update:function(el,bindings,vnode){bindings.value!==bindings.oldValue&&applyScrollspy(el,bindings,vnode)},componentUpdated:function(el,bindings,vnode){bindings.value!==bindings.oldValue&&applyScrollspy(el,bindings,vnode)},unbind:function(el){!function(el){el[BV_SCROLLSPY]&&(el[BV_SCROLLSPY].dispose(),el[BV_SCROLLSPY]=null,delete el[BV_SCROLLSPY])}(el)}}}}),VBVisiblePlugin=pluginFactory({directives:{VBVisible:VBVisible}}),directivesPlugin=pluginFactory({plugins:{VBHoverPlugin:VBHoverPlugin,VBModalPlugin:VBModalPlugin,VBPopoverPlugin:VBPopoverPlugin,VBScrollspyPlugin:VBScrollspyPlugin,VBTogglePlugin:VBTogglePlugin,VBTooltipPlugin:VBTooltipPlugin,VBVisiblePlugin:VBVisiblePlugin}}),BootstrapVue=(Vue.extend({name:"BIconstack",functional:!0,props:_objectSpread2({},commonIconProps),render:function(h,_ref){var data=_ref.data,props=_ref.props,children=_ref.children;return h(BVIconBase,a(data,{staticClass:"b-iconstack",props:_objectSpread2(_objectSpread2({},props),{},{stacked:!1})}),children)}}),{install:installFactory({plugins:{componentsPlugin:componentsPlugin,directivesPlugin:directivesPlugin}}),NAME:"BootstrapVue"});return VuePlugin=BootstrapVue,hasWindowSupport&&window.Vue&&window.Vue.use(VuePlugin),hasWindowSupport&&VuePlugin.NAME&&(window[VuePlugin.NAME]=VuePlugin),BootstrapVue})); + +//# sourceMappingURL=bootstrap-vue.min.js.map \ No newline at end of file diff --git a/amd/build/bootstrap-vue.min.js.map b/amd/build/bootstrap-vue.min.js.map new file mode 100644 index 0000000..f3b2955 --- /dev/null +++ b/amd/build/bootstrap-vue.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bootstrap-vue.min.js","sources":["../src/bootstrap-vue.js"],"sourcesContent":["/* eslint-disable */\n/*!\n * BootstrapVue 2.16.0\n *\n * @link https://bootstrap-vue.org\n * @source https://github.com/bootstrap-vue/bootstrap-vue\n * @copyright (c) 2016-2020 BootstrapVue\n * @license MIT\n * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./vue')) :\n typeof define === 'function' && define.amd ? define(['./vue'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrapVue = factory(global.Vue));\n }(this, (function (Vue) { 'use strict';\n \n Vue = Vue && Object.prototype.hasOwnProperty.call(Vue, 'default') ? Vue['default'] : Vue;\n \n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n \n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n \n return _typeof(obj);\n }\n \n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n \n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n \n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n \n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n \n return obj;\n }\n \n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n \n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n \n return keys;\n }\n \n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n \n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n \n return target;\n }\n \n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n \n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n \n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n \n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n \n return _setPrototypeOf(o, p);\n }\n \n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n \n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n \n function _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n \n return _construct.apply(null, arguments);\n }\n \n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n }\n \n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n \n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n \n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n \n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n \n _cache.set(Class, Wrapper);\n }\n \n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n \n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n \n return _wrapNativeSuper(Class);\n }\n \n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n \n return self;\n }\n \n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n \n return _assertThisInitialized(self);\n }\n \n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n \n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n \n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n \n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n \n return _possibleConstructorReturn(this, result);\n };\n }\n \n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n \n return object;\n }\n \n function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n \n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n \n if (desc.get) {\n return desc.get.call(receiver);\n }\n \n return desc.value;\n };\n }\n \n return _get(target, property, receiver || target);\n }\n \n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n \n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n \n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n \n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n \n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n }\n \n function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n \n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n \n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n \n return _arr;\n }\n \n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n \n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n \n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n \n return arr2;\n }\n \n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n \n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n \n // --- Static ---\n var from = function from() {\n return Array.from.apply(Array, arguments);\n };\n var isArray = function isArray(val) {\n return Array.isArray(val);\n }; // --- Instance ---\n \n var arrayIncludes = function arrayIncludes(array, value) {\n return array.indexOf(value) !== -1;\n };\n var concat = function concat() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n \n return Array.prototype.concat.apply([], args);\n };\n \n var assign = function assign() {\n return Object.assign.apply(Object, arguments);\n };\n var create = function create(proto, optionalProps) {\n return Object.create(proto, optionalProps);\n };\n var defineProperties = function defineProperties(obj, props) {\n return Object.defineProperties(obj, props);\n };\n var defineProperty = function defineProperty(obj, prop, descriptor) {\n return Object.defineProperty(obj, prop, descriptor);\n };\n var freeze = function freeze(obj) {\n return Object.freeze(obj);\n };\n var getOwnPropertyNames = function getOwnPropertyNames(obj) {\n return Object.getOwnPropertyNames(obj);\n };\n var keys = function keys(obj) {\n return Object.keys(obj);\n }; // --- \"Instance\" ---\n \n var hasOwnProperty = function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n };\n var toString = function toString(obj) {\n return Object.prototype.toString.call(obj);\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 */\n \n var isObject = function isObject(obj) {\n return obj !== null && _typeof(obj) === 'object';\n };\n /**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\n \n var isPlainObject = function isPlainObject(obj) {\n return 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 */\n \n var clone = function clone(obj) {\n return _objectSpread2({}, obj);\n };\n /**\n * Return a shallow copy of object with the specified properties only\n * @link https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc\n */\n \n var pick = function pick(obj, props) {\n return keys(obj).filter(function (key) {\n return props.indexOf(key) !== -1;\n }).reduce(function (result, key) {\n return _objectSpread2(_objectSpread2({}, result), {}, _defineProperty({}, key, obj[key]));\n }, {});\n };\n /**\n * Return a shallow copy of object with the specified properties omitted\n * @link https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc\n */\n \n var omit = function omit(obj, props) {\n return keys(obj).filter(function (key) {\n return props.indexOf(key) === -1;\n }).reduce(function (result, key) {\n return _objectSpread2(_objectSpread2({}, result), {}, _defineProperty({}, key, obj[key]));\n }, {});\n };\n /**\n * Convenience method to create a read-only descriptor\n */\n \n var readonlyDescriptor = function readonlyDescriptor() {\n return {\n enumerable: true,\n configurable: false,\n writable: false\n };\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 */\n \n var deepFreeze = function deepFreeze(obj) {\n // Retrieve the property names defined on object/array\n // Note: `keys` will ignore properties that are keyed by a `Symbol()`\n var props = keys(obj); // Iterate over each prop and recursively freeze it\n \n props.forEach(function (prop) {\n var value = obj[prop]; // If value is a plain object or array, we deepFreeze it\n \n obj[prop] = value && (isPlainObject(value) || isArray(value)) ? deepFreeze(value) : value;\n });\n return freeze(obj);\n };\n \n /**\n * Utilities to get information about the current environment\n */\n // --- Constants ---\n var hasWindowSupport = typeof window !== 'undefined';\n var hasDocumentSupport = typeof document !== 'undefined';\n var hasNavigatorSupport = typeof navigator !== 'undefined';\n var hasPromiseSupport = typeof Promise !== 'undefined';\n /* istanbul ignore next: JSDOM always returns false */\n \n var hasMutationObserverSupport = typeof MutationObserver !== 'undefined' || typeof WebKitMutationObserver !== 'undefined' || typeof MozMutationObserver !== 'undefined';\n var isBrowser = hasWindowSupport && hasDocumentSupport && hasNavigatorSupport; // Browser type sniffing\n \n var userAgent = isBrowser ? window.navigator.userAgent.toLowerCase() : '';\n var isJSDOM = userAgent.indexOf('jsdom') > 0;\n var isIE = /msie|trident/.test(userAgent); // Determine if the browser supports the option passive for events\n \n var hasPassiveEventSupport = function () {\n var passiveEventSupported = false;\n \n if (isBrowser) {\n try {\n var options = {\n get passive() {\n // This function will be called when the browser\n // attempts to access the passive property.\n \n /* istanbul ignore next: will never be called in JSDOM */\n passiveEventSupported = true;\n }\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 \n return passiveEventSupported;\n }();\n var hasTouchSupport = isBrowser && ('ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0);\n var hasPointerEventSupport = isBrowser && Boolean(window.PointerEvent || window.MSPointerEvent);\n /* istanbul ignore next: JSDOM only checks for 'IntersectionObserver' */\n \n var hasIntersectionObserverSupport = isBrowser && 'IntersectionObserver' in window && 'IntersectionObserverEntry' in window && // 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; // --- Getters ---\n \n var getEnv = function getEnv(key) {\n var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var env = typeof process !== 'undefined' && process ? process.env || {} : {};\n \n if (!key) {\n /* istanbul ignore next */\n return env;\n }\n \n return env[key] || fallback;\n };\n var getNoWarn = function getNoWarn() {\n return getEnv('BOOTSTRAP_VUE_NO_WARN');\n };\n \n var w = hasWindowSupport ? window : {};\n var Element$1 = hasWindowSupport ? w.Element : /*#__PURE__*/function (_Object) {\n _inherits(Element, _Object);\n \n var _super = _createSuper(Element);\n \n function Element() {\n _classCallCheck(this, Element);\n \n return _super.apply(this, arguments);\n }\n \n return Element;\n }( /*#__PURE__*/_wrapNativeSuper(Object));\n var HTMLElement = hasWindowSupport ? w.HTMLElement : /*#__PURE__*/function (_Element) {\n _inherits(HTMLElement, _Element);\n \n var _super2 = _createSuper(HTMLElement);\n \n function HTMLElement() {\n _classCallCheck(this, HTMLElement);\n \n return _super2.apply(this, arguments);\n }\n \n return HTMLElement;\n }(Element$1);\n var SVGElement = hasWindowSupport ? w.SVGElement : /*#__PURE__*/function (_Element2) {\n _inherits(SVGElement, _Element2);\n \n var _super3 = _createSuper(SVGElement);\n \n function SVGElement() {\n _classCallCheck(this, SVGElement);\n \n return _super3.apply(this, arguments);\n }\n \n return SVGElement;\n }(Element$1);\n var File = hasWindowSupport ? w.File : /*#__PURE__*/function (_Object2) {\n _inherits(File, _Object2);\n \n var _super4 = _createSuper(File);\n \n function File() {\n _classCallCheck(this, File);\n \n return _super4.apply(this, arguments);\n }\n \n return File;\n }( /*#__PURE__*/_wrapNativeSuper(Object));\n \n var toType = function toType(val) {\n return _typeof(val);\n };\n var toRawType = function toRawType(val) {\n return Object.prototype.toString.call(val).slice(8, -1);\n };\n var isUndefined = function isUndefined(val) {\n return val === undefined;\n };\n var isNull = function isNull(val) {\n return val === null;\n };\n var isUndefinedOrNull = function isUndefinedOrNull(val) {\n return isUndefined(val) || isNull(val);\n };\n var isFunction = function isFunction(val) {\n return toType(val) === 'function';\n };\n var isBoolean = function isBoolean(val) {\n return toType(val) === 'boolean';\n };\n var isString = function isString(val) {\n return toType(val) === 'string';\n };\n var isNumber = function isNumber(val) {\n return toType(val) === 'number';\n };\n var isDate = function isDate(val) {\n return val instanceof Date;\n };\n var isEvent = function isEvent(val) {\n return val instanceof Event;\n };\n var isFile = function isFile(val) {\n return val instanceof File;\n };\n var isRegExp = function isRegExp(val) {\n return toRawType(val) === 'RegExp';\n };\n var isPromise = function isPromise(val) {\n return !isUndefinedOrNull(val) && isFunction(val.then) && isFunction(val.catch);\n }; // Extra convenience named re-exports\n \n var cloneDeep = function cloneDeep(obj) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : obj;\n \n if (isArray(obj)) {\n return obj.reduce(function (result, val) {\n return [].concat(_toConsumableArray(result), [cloneDeep(val, val)]);\n }, []);\n }\n \n if (isPlainObject(obj)) {\n return keys(obj).reduce(function (result, key) {\n return _objectSpread2(_objectSpread2({}, result), {}, _defineProperty({}, key, cloneDeep(obj[key], obj[key])));\n }, {});\n }\n \n return defaultValue;\n };\n \n var identity = function identity(x) {\n return x;\n };\n \n var RX_ARRAY_NOTATION = /\\[(\\d+)]/g;\n /**\n * Get property defined by dot/array notation in string, returns undefined if not found\n *\n * @link https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf#gistcomment-1935901\n *\n * @param {Object} obj\n * @param {string|Array} path\n * @return {*}\n */\n \n var getRaw = function getRaw(obj, path) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n // Handle array of path values\n path = isArray(path) ? path.join('.') : path; // If no path or no object passed\n \n if (!path || !isObject(obj)) {\n return defaultValue;\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 \n \n if (path in obj) {\n return obj[path];\n } // Handle string array notation (numeric indices only)\n \n \n path = String(path).replace(RX_ARRAY_NOTATION, '.$1');\n var steps = path.split('.').filter(identity); // Handle case where someone passes a string of only dots\n \n if (steps.length === 0) {\n return defaultValue;\n } // Traverse path in object to find result\n // Switched to `in` operator vs `hasOwnProperty` to handle obj.prototype getters\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3463\n \n \n return steps.every(function (step) {\n return isObject(obj) && step in obj && !isUndefinedOrNull(obj = obj[step]);\n }) ? obj : isNull(obj) ? null : defaultValue;\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 */\n \n var get = function get(obj, path) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var val = getRaw(obj, path);\n return isUndefinedOrNull(val) ? defaultValue : val;\n };\n \n /**\n * Log a warning message to the console with BootstrapVue formatting\n * @param {string} message\n */\n \n var warn = function warn(message)\n /* istanbul ignore next */\n {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n \n if (!getNoWarn()) {\n console.warn(\"[BootstrapVue warn]: \".concat(source ? \"\".concat(source, \" - \") : '').concat(message));\n }\n };\n /**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n \n var warnNotClient = function warnNotClient(source) {\n /* istanbul ignore else */\n if (isBrowser) {\n return false;\n } else {\n warn(\"\".concat(source, \": Can not be called during SSR.\"));\n return true;\n }\n };\n /**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n \n var warnNoPromiseSupport = function warnNoPromiseSupport(source) {\n /* istanbul ignore else */\n if (hasPromiseSupport) {\n return false;\n } else {\n warn(\"\".concat(source, \": Requires Promise support.\"));\n return true;\n }\n };\n /**\n * Warn when no MutationObserver support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n \n var warnNoMutationObserverSupport = function warnNoMutationObserverSupport(source) {\n /* istanbul ignore else */\n if (hasMutationObserverSupport) {\n return false;\n } else {\n warn(\"\".concat(source, \": Requires MutationObserver support.\"));\n return true;\n }\n };\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 // explicitly 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 // BREAKPOINT DEFINITIONS\n //\n // Some components (`` and ``) 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 // 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 // prettier-ignore\n \n var DEFAULTS = deepFreeze({\n // Breakpoints\n breakpoints: ['xs', 'sm', 'md', 'lg', 'xl'],\n // Form controls\n formControls: {\n size: undefined\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 BAvatar: {\n variant: 'secondary',\n badgeVariant: 'primary'\n },\n BBadge: {\n variant: 'secondary'\n },\n BButton: {\n size: undefined,\n variant: 'secondary'\n },\n BButtonClose: {\n content: '×',\n // `textVariant` is `null` to inherit the current text color\n textVariant: undefined,\n ariaLabel: 'Close'\n },\n BCalendar: {\n // BFormDate will choose these first if not provided in BFormDate section\n labelPrevDecade: 'Previous decade',\n labelPrevYear: 'Previous year',\n labelPrevMonth: 'Previous month',\n labelCurrentMonth: 'Current month',\n labelNextMonth: 'Next month',\n labelNextYear: 'Next year',\n labelNextDecade: 'Next decade',\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 // `` and `` 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: undefined,\n variant: 'secondary',\n splitVariant: undefined\n },\n BFormDatepicker: {\n // BFormDatepicker will choose from BCalendar first if not provided here\n labelPrevDecade: undefined,\n labelPrevYear: undefined,\n labelPrevMonth: undefined,\n labelCurrentMonth: undefined,\n labelNextMonth: undefined,\n labelNextYear: undefined,\n labelNextDecade: undefined,\n labelToday: undefined,\n labelSelected: undefined,\n labelNoDateSelected: undefined,\n labelCalendar: undefined,\n labelNav: undefined,\n labelHelp: undefined,\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 BFormRating: {\n variant: null,\n color: null\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 BFormTimepicker: {\n // Fallback to BTime\n labelNoTimeSelected: undefined,\n labelSelected: undefined,\n labelHours: undefined,\n labelMinutes: undefined,\n labelSeconds: undefined,\n labelAmpm: undefined,\n labelAm: undefined,\n labelPm: undefined,\n // Fallback to BTime then BFormSpinbutton\n labelDecrement: undefined,\n labelIncrement: undefined,\n // These props are specific to BFormTimepicker\n labelNowButton: 'Select now',\n labelResetButton: 'Reset',\n labelCloseButton: 'Close'\n },\n BFormSpinbutton: {\n labelDecrement: 'Decrement',\n labelIncrement: 'Increment'\n },\n BImg: {\n blankColor: 'transparent'\n },\n BImgLazy: {\n blankColor: 'transparent'\n },\n BInputGroup: {\n size: undefined\n },\n BJumbotron: {\n bgVariant: undefined,\n borderVariant: undefined,\n textVariant: undefined\n },\n BLink: {\n routerComponentName: undefined\n },\n BListGroupItem: {\n variant: undefined\n },\n BModal: {\n titleTag: 'h5',\n size: 'md',\n headerBgVariant: undefined,\n headerBorderVariant: undefined,\n headerTextVariant: undefined,\n headerCloseVariant: undefined,\n bodyBgVariant: undefined,\n bodyTextVariant: undefined,\n footerBgVariant: undefined,\n footerBorderVariant: undefined,\n footerTextVariant: undefined,\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: undefined\n },\n BPaginationNav: {\n size: undefined\n },\n BPopover: {\n boundary: 'scrollParent',\n boundaryPadding: 5,\n customClass: undefined,\n delay: 50,\n variant: undefined\n },\n BProgress: {\n variant: undefined\n },\n BProgressBar: {\n variant: undefined\n },\n BSpinner: {\n variant: undefined\n },\n BSidebar: {\n bgVariant: 'light',\n textVariant: 'dark',\n shadow: false,\n width: undefined,\n tag: 'div',\n backdropVariant: 'dark'\n },\n BTable: {\n selectedVariant: 'active',\n headVariant: undefined,\n footVariant: undefined\n },\n BTime: {\n labelNoTimeSelected: 'No time selected',\n labelSelected: 'Selected time',\n labelHours: 'Hours',\n labelMinutes: 'Minutes',\n labelSeconds: 'Seconds',\n labelAmpm: 'AM/PM',\n // It would be nice to be able to get these from Intl.DateTimeFormat somehow\n labelAm: 'AM',\n labelPm: 'PM',\n // The following inherit from BFormSpinbutton if not provided\n labelIncrement: undefined,\n labelDecrement: undefined\n },\n BToast: {\n toaster: 'b-toaster-top-right',\n autoHideDelay: 5000,\n variant: undefined,\n toastClass: undefined,\n headerClass: undefined,\n bodyClass: undefined\n },\n BToaster: {\n ariaLive: undefined,\n ariaAtomic: undefined,\n role: undefined\n },\n BTooltip: {\n boundary: 'scrollParent',\n boundaryPadding: 5,\n customClass: undefined,\n delay: 50,\n variant: undefined\n }\n });\n \n var NAME = 'BvConfig';\n var PROP_NAME = '$bvConfig'; // Config manager class\n \n var BvConfig = /*#__PURE__*/function () {\n function BvConfig() {\n _classCallCheck(this, BvConfig);\n \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 /* istanbul ignore next */\n \n \n _createClass(BvConfig, [{\n key: \"getDefaults\",\n // Returns the defaults\n \n /* istanbul ignore next */\n value: function getDefaults()\n /* istanbul ignore next */\n {\n return this.defaults;\n } // Method to merge in user config parameters\n \n }, {\n key: \"setConfig\",\n value: function setConfig() {\n var _this = this;\n \n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n \n if (!isPlainObject(config)) {\n /* istanbul ignore next */\n return;\n }\n \n var configKeys = getOwnPropertyNames(config);\n configKeys.forEach(function (cmpName) {\n /* istanbul ignore next */\n if (!hasOwnProperty(DEFAULTS, cmpName)) {\n warn(\"Unknown config property \\\"\".concat(cmpName, \"\\\"\"), NAME);\n return;\n }\n \n var cmpConfig = config[cmpName];\n \n if (cmpName === 'breakpoints') {\n // Special case for breakpoints\n var breakpoints = config.breakpoints;\n /* istanbul ignore if */\n \n if (!isArray(breakpoints) || breakpoints.length < 2 || breakpoints.some(function (b) {\n return !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 var props = getOwnPropertyNames(cmpConfig);\n props.forEach(function (prop) {\n /* istanbul ignore if */\n if (!hasOwnProperty(DEFAULTS[cmpName], prop)) {\n warn(\"Unknown config property \\\"\".concat(cmpName, \".\").concat(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 \n if (!isUndefined(cmpConfig[prop])) {\n _this.$_config[cmpName][prop] = cloneDeep(cmpConfig[prop]);\n }\n }\n });\n }\n });\n } // Clear the config. For testing purposes only\n \n }, {\n key: \"resetConfig\",\n value: function resetConfig() {\n this.$_config = {};\n } // Returns a deep copy of the user config\n \n }, {\n key: \"getConfig\",\n value: function getConfig() {\n return cloneDeep(this.$_config);\n }\n }, {\n key: \"getConfigValue\",\n value: function 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(getRaw(this.$_config, key, getRaw(DEFAULTS, key)));\n }\n }, {\n key: \"defaults\",\n \n /* istanbul ignore next */\n get: function get()\n /* istanbul ignore next */\n {\n return DEFAULTS;\n }\n }], [{\n key: \"Defaults\",\n get: function get()\n /* istanbul ignore next */\n {\n return DEFAULTS;\n }\n }]);\n \n return BvConfig;\n }(); // Method for applying a global config\n \n \n var setConfig = function setConfig() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var Vue$1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Vue;\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$1.prototype[PROP_NAME] = Vue.prototype[PROP_NAME] = Vue$1.prototype[PROP_NAME] || Vue.prototype[PROP_NAME] || new BvConfig(); // Apply the config values\n \n Vue$1.prototype[PROP_NAME].setConfig(config);\n }; // Method for resetting the user config. Exported for testing purposes only.\n \n /**\n * Checks if there are multiple instances of Vue, and warns (once) about possible issues.\n * @param {object} Vue\n */\n \n var checkMultipleVue = function () {\n var checkMultipleVueWarned = false;\n var MULTIPLE_VUE_WARNING = ['Multiple instances of Vue detected!', 'You may need to set up an alias for Vue in your bundler config.', 'See: https://bootstrap-vue.org/docs#using-module-bundlers'].join('\\n');\n return function (Vue$1) {\n /* istanbul ignore next */\n if (!checkMultipleVueWarned && Vue !== Vue$1 && !isJSDOM) {\n warn(MULTIPLE_VUE_WARNING);\n }\n \n checkMultipleVueWarned = true;\n };\n }();\n /**\n * Plugin install factory function.\n * @param {object} { components, directives }\n * @returns {function} plugin install function\n */\n \n var installFactory = function installFactory() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n components = _ref.components,\n directives = _ref.directives,\n plugins = _ref.plugins;\n \n var install = function install(Vue) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n \n if (install.installed) {\n /* istanbul ignore next */\n return;\n }\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 return install;\n };\n /**\n * Plugin object factory function.\n * @param {object} { components, directives, plugins }\n * @returns {object} plugin install object\n */\n \n var pluginFactory = function pluginFactory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var extend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _objectSpread2(_objectSpread2({}, extend), {}, {\n install: installFactory(options)\n });\n };\n /**\n * Load a group of plugins.\n * @param {object} Vue\n * @param {object} Plugin definitions\n */\n \n var registerPlugins = function registerPlugins(Vue) {\n var plugins = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n \n for (var plugin in plugins) {\n if (plugin && plugins[plugin]) {\n Vue.use(plugins[plugin]);\n }\n }\n };\n /**\n * Load a component.\n * @param {object} Vue\n * @param {string} Component name\n * @param {object} Component definition\n */\n \n var registerComponent = function registerComponent(Vue, name, def) {\n if (Vue && name && def) {\n Vue.component(name, def);\n }\n };\n /**\n * Load a group of components.\n * @param {object} Vue\n * @param {object} Object of component definitions\n */\n \n var registerComponents = function registerComponents(Vue) {\n var components = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n \n for (var component in components) {\n registerComponent(Vue, component, components[component]);\n }\n };\n /**\n * Load a directive.\n * @param {object} Vue\n * @param {string} Directive name\n * @param {object} Directive definition\n */\n \n var registerDirective = function 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 * Load a group of directives.\n * @param {object} Vue\n * @param {object} Object of directive definitions\n */\n \n var registerDirectives = function registerDirectives(Vue) {\n var directives = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n \n for (var directive in directives) {\n registerDirective(Vue, directive, directives[directive]);\n }\n };\n /**\n * Install plugin if window.Vue available\n * @param {object} Plugin definition\n */\n \n var vueUse = function vueUse(VuePlugin) {\n /* istanbul ignore next */\n if (hasWindowSupport && window.Vue) {\n window.Vue.use(VuePlugin);\n }\n /* istanbul ignore next */\n \n \n if (hasWindowSupport && VuePlugin.NAME) {\n window[VuePlugin.NAME] = VuePlugin;\n }\n };\n \n var memoize = function memoize(fn) {\n var cache = create(null);\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n \n var argsKey = JSON.stringify(args);\n return cache[argsKey] = cache[argsKey] || fn.apply(null, args);\n };\n };\n \n var PROP_NAME$1 = '$bvConfig';\n var VueProto = Vue.prototype; // --- Getter methods ---\n \n var getConfigValue = function getConfigValue(key) {\n return VueProto[PROP_NAME$1] ? VueProto[PROP_NAME$1].getConfigValue(key) : cloneDeep(getRaw(DEFAULTS, key));\n }; // Method to grab a config value for a particular component\n \n var getComponentConfig = function getComponentConfig(cmpName) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 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(\"\".concat(cmpName, \".\").concat(key)) : getConfigValue(cmpName) || {};\n }; // Convenience method for getting all breakpoint names\n \n var getBreakpoints = function getBreakpoints() {\n return getConfigValue('breakpoints');\n }; // Private function for caching / locking-in breakpoint names\n \n var _getBreakpointsCached = memoize(function () {\n return getBreakpoints();\n }); // Convenience method for getting all breakpoint names.\n // Caches the results after first access.\n \n \n var getBreakpointsCached = function getBreakpointsCached() {\n return cloneDeep(_getBreakpointsCached());\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.\n \n var getBreakpointsUpCached = memoize(function () {\n var breakpoints = getBreakpointsCached();\n breakpoints[0] = '';\n return breakpoints;\n }); // Convenience method for getting breakpoints with\n \n // Number utilities\n // Converts a value (string, number, etc) to an integer number\n // Assumes radix base 10\n var toInteger = function toInteger(value) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n var integer = parseInt(value, 10);\n return isNaN(integer) ? defaultValue : integer;\n }; // Converts a value (string, number, etc) to a number\n \n var toFloat = function toFloat(value) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n var float = parseFloat(value);\n return isNaN(float) ? defaultValue : float;\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\n \n var toFixed = function toFixed(val, precision) {\n return toFloat(val).toFixed(toInteger(precision, 0));\n };\n \n // String utilities\n \n var RX_TRIM_LEFT = /^\\s+/;\n var RX_REGEXP_REPLACE = /[-/\\\\^$*+?.()|[\\]{}]/g;\n var RX_UN_KEBAB = /-(\\w)/g;\n var RX_HYPHENATE = /\\B([A-Z])/g; // --- Utilities ---\n // Converts PascalCase or camelCase to kebab-case\n \n var kebabCase = function kebabCase(str) {\n return str.replace(RX_HYPHENATE, '-$1').toLowerCase();\n }; // Converts a kebab-case or camelCase string to PascalCase\n \n var pascalCase = function pascalCase(str) {\n str = kebabCase(str).replace(RX_UN_KEBAB, function (_, c) {\n return c ? c.toUpperCase() : '';\n });\n return str.charAt(0).toUpperCase() + str.slice(1);\n }; // Lowercases the first letter of a string and returns a new string\n \n var lowerFirst = function lowerFirst(str) {\n str = isString(str) ? str.trim() : String(str);\n return str.charAt(0).toLowerCase() + str.slice(1);\n }; // Uppercases the first letter of a string and returns a new string\n \n var upperFirst = function upperFirst(str) {\n str = isString(str) ? str.trim() : String(str);\n return str.charAt(0).toUpperCase() + str.slice(1);\n }; // Escape characters to be used in building a regular expression\n \n var escapeRegExp = function escapeRegExp(str) {\n return str.replace(RX_REGEXP_REPLACE, '\\\\$&');\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\n \n var toString$1 = function toString(val) {\n var spaces = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n return isUndefinedOrNull(val) ? '' : isArray(val) || isPlainObject(val) && val.toString === Object.prototype.toString ? JSON.stringify(val, null, spaces) : String(val);\n }; // Remove leading white space from a string\n \n var trimLeft = function trimLeft(str) {\n return toString$1(str).replace(RX_TRIM_LEFT, '');\n }; // Remove Trailing white space from a string\n \n var trim = function trim(str) {\n return toString$1(str).trim();\n }; // Lower case a string\n \n var lowerCase = function lowerCase(str) {\n return toString$1(str).toLowerCase();\n }; // Upper case a string\n \n var TABABLE_SELECTOR = ['button', '[href]:not(.disabled)', 'input', 'select', 'textarea', '[tabindex]', '[contenteditable]'].map(function (s) {\n return \"\".concat(s, \":not(:disabled):not([disabled])\");\n }).join(', ');\n var w$1 = hasWindowSupport ? window : {};\n var d = hasDocumentSupport ? document : {};\n var elProto = typeof Element !== 'undefined' ? Element.prototype : {}; // --- Normalization utils ---\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n \n /* istanbul ignore next */\n \n var matchesEl = elProto.matches || elProto.msMatchesSelector || elProto.webkitMatchesSelector; // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n \n /* istanbul ignore next */\n \n var closestEl = elProto.closest || function (sel)\n /* istanbul ignore next */\n {\n var el = this;\n \n do {\n // Use our \"patched\" matches function\n if (matches(el, sel)) {\n return el;\n }\n \n el = el.parentElement || el.parentNode;\n } while (!isNull(el) && el.nodeType === Node.ELEMENT_NODE);\n \n return null;\n }; // `requestAnimationFrame()` convenience method\n \n /* istanbul ignore next: JSDOM always returns the first option */\n \n var requestAF = w$1.requestAnimationFrame || w$1.webkitRequestAnimationFrame || w$1.mozRequestAnimationFrame || w$1.msRequestAnimationFrame || w$1.oRequestAnimationFrame || // Fallback, but not a true polyfill\n // Only needed for Opera Mini\n \n /* istanbul ignore next */\n function (cb) {\n return setTimeout(cb, 16);\n };\n var MutationObs = w$1.MutationObserver || w$1.WebKitMutationObserver || w$1.MozMutationObserver || null; // --- Utils ---\n // Remove a node from DOM\n \n var removeNode = function removeNode(el) {\n return el && el.parentNode && el.parentNode.removeChild(el);\n }; // Determine if an element is an HTML element\n \n var isElement = function isElement(el) {\n return !!(el && el.nodeType === Node.ELEMENT_NODE);\n }; // Get the currently active HTML element\n \n var getActiveElement = function getActiveElement() {\n var excludes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var activeElement = d.activeElement;\n return activeElement && !excludes.some(function (el) {\n return el === activeElement;\n }) ? activeElement : null;\n }; // Returns `true` if a tag's name equals `name`\n \n var isTag = function isTag(tag, name) {\n return toString$1(tag).toLowerCase() === toString$1(name).toLowerCase();\n }; // Determine if an HTML element is the currently active element\n \n var isActiveElement = function isActiveElement(el) {\n return isElement(el) && el === getActiveElement();\n }; // Determine if an HTML element is visible - Faster than CSS check\n \n var isVisible = function 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 \n if (el.style.display === 'none') {\n // We do this check to help with vue-test-utils when using v-show\n \n /* istanbul ignore next */\n return false;\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 \n \n var bcr = getBCR(el);\n return !!(bcr && bcr.height > 0 && bcr.width > 0);\n }; // Determine if an element is disabled\n \n var isDisabled = function isDisabled(el) {\n return !isElement(el) || el.disabled || hasAttr(el, 'disabled') || hasClass(el, 'disabled');\n }; // Cause/wait-for an element to reflow its content (adjusting its height/width)\n \n var reflow = function reflow(el) {\n // Requesting an elements offsetHight will trigger a reflow of the element content\n \n /* istanbul ignore next: reflow doesn't happen in JSDOM */\n return isElement(el) && el.offsetHeight;\n }; // Select all elements matching selector. Returns `[]` if none found\n \n var selectAll = function selectAll(selector, root) {\n return from((isElement(root) ? root : d).querySelectorAll(selector));\n }; // Select a single element, returns `null` if not found\n \n var select = function select(selector, root) {\n return (isElement(root) ? root : d).querySelector(selector) || null;\n }; // Determine if an element matches a selector\n \n var matches = function matches(el, selector) {\n return isElement(el) ? matchesEl.call(el, selector) : false;\n }; // Finds closest element matching selector. Returns `null` if not found\n \n var closest = function closest(selector, root) {\n var includeRoot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n \n if (!isElement(root)) {\n return null;\n }\n \n var el = closestEl.call(root, selector); // 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 \n return includeRoot ? el : el === root ? null : el;\n }; // Returns true if the parent element contains the child element\n \n var contains = function contains(parent, child) {\n return parent && isFunction(parent.contains) ? parent.contains(child) : false;\n }; // Get an element given an ID\n \n var getById = function getById(id) {\n return d.getElementById(/^#/.test(id) ? id.slice(1) : id) || null;\n }; // Add a class to an element\n \n var addClass = function 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 }; // Remove a class from an element\n \n var removeClass = function 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 }; // Test if an element has a class\n \n var hasClass = function 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 \n return false;\n }; // Set an attribute on an element\n \n var setAttr = function setAttr(el, attr, val) {\n if (attr && isElement(el)) {\n el.setAttribute(attr, val);\n }\n }; // Remove an attribute from an element\n \n var removeAttr = function removeAttr(el, attr) {\n if (attr && isElement(el)) {\n el.removeAttribute(attr);\n }\n }; // Get an attribute value from an element\n // Returns `null` if not found\n \n var getAttr = function getAttr(el, attr) {\n return attr && isElement(el) ? el.getAttribute(attr) : null;\n }; // Determine if an attribute exists on an element\n // Returns `true` or `false`, or `null` if element not found\n \n var hasAttr = function hasAttr(el, attr) {\n return attr && isElement(el) ? el.hasAttribute(attr) : null;\n }; // Return the Bounding Client Rect of an element\n // Returns `null` if not an element\n \n /* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */\n \n var getBCR = function getBCR(el) {\n return isElement(el) ? el.getBoundingClientRect() : null;\n }; // Get computed style object for an element\n \n /* istanbul ignore next: getComputedStyle() doesn't work in JSDOM */\n \n var getCS = function getCS(el) {\n return hasWindowSupport && isElement(el) ? w$1.getComputedStyle(el) : {};\n }; // Returns a `Selection` object representing the range of text selected\n // Returns `null` if no window support is given\n \n /* istanbul ignore next: getSelection() doesn't work in JSDOM */\n \n var getSel = function getSel() {\n return hasWindowSupport && w$1.getSelection ? w$1.getSelection() : null;\n }; // Return an element's offset with respect to document element\n // https://j11y.io/jquery/#v=git&fn=jQuery.fn.offset\n \n var offset = function offset(el)\n /* istanbul ignore next: getBoundingClientRect(), getClientRects() doesn't work in JSDOM */\n {\n var _offset = {\n top: 0,\n left: 0\n };\n \n if (!isElement(el) || el.getClientRects().length === 0) {\n return _offset;\n }\n \n var bcr = getBCR(el);\n \n if (bcr) {\n var win = el.ownerDocument.defaultView;\n _offset.top = bcr.top + win.pageYOffset;\n _offset.left = bcr.left + win.pageXOffset;\n }\n \n return _offset;\n }; // Return an element's offset with respect to to its offsetParent\n // https://j11y.io/jquery/#v=git&fn=jQuery.fn.position\n \n var position = function position(el)\n /* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */\n {\n var _offset = {\n top: 0,\n left: 0\n };\n \n if (!isElement(el)) {\n return _offset;\n }\n \n var parentOffset = {\n top: 0,\n left: 0\n };\n var elStyles = getCS(el);\n \n if (elStyles.position === 'fixed') {\n _offset = getBCR(el) || _offset;\n } else {\n _offset = offset(el);\n var doc = el.ownerDocument;\n var offsetParent = el.offsetParent || doc.documentElement;\n \n while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && getCS(offsetParent).position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n \n if (offsetParent && offsetParent !== el && offsetParent.nodeType === Node.ELEMENT_NODE) {\n parentOffset = offset(offsetParent);\n var offsetParentStyles = getCS(offsetParent);\n parentOffset.top += toFloat(offsetParentStyles.borderTopWidth, 0);\n parentOffset.left += toFloat(offsetParentStyles.borderLeftWidth, 0);\n }\n }\n \n return {\n top: _offset.top - parentOffset.top - toFloat(elStyles.marginTop, 0),\n left: _offset.left - parentOffset.left - toFloat(elStyles.marginLeft, 0)\n };\n }; // Find all tabable elements in the given element\n // Assumes users have not used `tabindex` > `0` on elements\n \n var getTabables = function getTabables() {\n var rootEl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n return selectAll(TABABLE_SELECTOR, rootEl).filter(isVisible).filter(function (el) {\n return el.tabIndex > -1 && !el.disabled;\n });\n }; // Attempt to focus an element, and return `true` if successful\n \n var attemptFocus = function attemptFocus(el) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n \n try {\n el.focus(options);\n } catch (_unused) {}\n \n return isActiveElement(el);\n }; // Attempt to blur an element, and return `true` if successful\n \n var attemptBlur = function attemptBlur(el) {\n try {\n el.blur();\n } catch (_unused2) {}\n \n return !isActiveElement(el);\n };\n \n var e=function(){return (e=Object.assign||function(e){for(var t,r=1,s=arguments.length;r 1 && arguments[1] !== undefined ? arguments[1] : {};\n var $slots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n // Ensure names is an array\n names = concat(names).filter(identity); // Returns true if the either a $scopedSlot or $slot exists with the specified name\n \n return names.some(function (name) {\n return $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 */\n \n \n var normalizeSlot = function normalizeSlot(names) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var $scopedSlots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var $slots = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // Ensure names is an array\n names = concat(names).filter(identity);\n var slot;\n \n for (var i = 0; i < names.length && !slot; i++) {\n var name = names[i];\n slot = $scopedSlots[name] || $slots[name];\n } // Note: in Vue 2.6.x, all named slots are also scoped slots\n \n \n return isFunction(slot) ? slot(scope) : slot;\n }; // Named exports\n \n var normalizeSlotMixin = {\n methods: {\n hasNormalizedSlot: function hasNormalizedSlot$1(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: function normalizeSlot$1(names) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n \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 var vNodes = normalizeSlot(names, scope, this.$scopedSlots, this.$slots);\n \n return vNodes ? concat(vNodes) : vNodes;\n }\n }\n };\n \n var NAME$1 = 'BButtonClose';\n var props = {\n content: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$1, 'content');\n }\n },\n disabled: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$1, 'ariaLabel');\n }\n },\n textVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$1, 'textVariant');\n }\n }\n }; // @vue/component\n \n var BButtonClose = /*#__PURE__*/Vue.extend({\n name: NAME$1,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var componentData = {\n staticClass: 'close',\n class: _defineProperty({}, \"text-\".concat(props.textVariant), props.textVariant),\n attrs: {\n type: 'button',\n disabled: props.disabled,\n 'aria-label': props.ariaLabel ? String(props.ariaLabel) : null\n },\n on: {\n click: function click(evt) {\n // Ensure click on button HTML content is also disabled\n \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 }; // Careful not to override the default slot with innerHTML\n \n if (!hasNormalizedSlot('default', $scopedSlots, $slots)) {\n componentData.domProps = {\n innerHTML: props.content\n };\n }\n \n return h('button', a(data, componentData), normalizeSlot('default', {}, $scopedSlots, $slots));\n }\n });\n \n var NAME$2 = 'BAlert'; // Convert `show` value to a number\n \n var parseCountDown = function parseCountDown(show) {\n if (show === '' || isBoolean(show)) {\n return 0;\n }\n \n show = toInteger(show, 0);\n return show > 0 ? show : 0;\n }; // Convert `show` value to a boolean\n \n \n var parseShow = function parseShow(show) {\n if (show === '' || show === true) {\n return true;\n }\n \n if (toInteger(show, 0) < 1) {\n // Boolean will always return false for the above comparison\n return false;\n }\n \n return !!show;\n }; // Is a value number like (i.e. a number or a number as string)\n \n \n var isNumericLike = function isNumericLike(value) {\n return !isNaN(toInteger(value));\n }; // @vue/component\n \n \n var BAlert = /*#__PURE__*/Vue.extend({\n name: NAME$2,\n mixins: [normalizeSlotMixin],\n model: {\n prop: 'show',\n event: 'input'\n },\n props: {\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$2, 'variant');\n }\n },\n dismissible: {\n type: Boolean,\n default: false\n },\n dismissLabel: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$2, 'dismissLabel');\n }\n },\n show: {\n type: [Boolean, Number, String],\n default: false\n },\n fade: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n countDown: 0,\n countDownTimeout: null,\n // If initially shown, we need to set these for SSR\n localShow: parseShow(this.show)\n };\n },\n watch: {\n show: function show(newVal) {\n this.countDown = parseCountDown(newVal);\n this.localShow = parseShow(newVal);\n },\n countDown: function countDown(newVal) {\n var _this = this;\n \n this.clearCountDownInterval();\n \n if (isNumericLike(this.show)) {\n // Ignore if this.show transitions to a boolean value.\n this.$emit('dismiss-count-down', newVal);\n \n if (this.show !== newVal) {\n // Update the v-model if needed\n this.$emit('input', newVal);\n }\n \n if (newVal > 0) {\n this.localShow = true;\n this.countDownTimeout = setTimeout(function () {\n _this.countDown--;\n }, 1000);\n } else {\n // Slightly delay the hide to allow any UI updates\n this.$nextTick(function () {\n requestAF(function () {\n _this.localShow = false;\n });\n });\n }\n }\n },\n localShow: function localShow(newVal) {\n if (!newVal && (this.dismissible || isNumericLike(this.show))) {\n // Only emit dismissed events for dismissible or auto dismissing alerts\n this.$emit('dismissed');\n }\n \n if (!isNumericLike(this.show) && this.show !== newVal) {\n // Only emit booleans if we weren't passed a number via `this.show`\n this.$emit('input', newVal);\n }\n }\n },\n created: function created() {\n this.countDown = parseCountDown(this.show);\n this.localShow = parseShow(this.show);\n },\n mounted: function mounted() {\n this.countDown = parseCountDown(this.show);\n this.localShow = parseShow(this.show);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearCountDownInterval();\n },\n methods: {\n dismiss: function dismiss() {\n this.clearCountDownInterval();\n this.countDown = 0;\n this.localShow = false;\n },\n clearCountDownInterval: function clearCountDownInterval() {\n if (this.countDownTimeout) {\n clearTimeout(this.countDownTimeout);\n this.countDownTimeout = null;\n }\n }\n },\n render: function render(h) {\n var $alert; // undefined\n \n if (this.localShow) {\n var $dismissBtn = h();\n \n if (this.dismissible) {\n // Add dismiss button\n $dismissBtn = h(BButtonClose, {\n attrs: {\n 'aria-label': this.dismissLabel\n },\n on: {\n click: this.dismiss\n }\n }, [this.normalizeSlot('dismiss')]);\n }\n \n $alert = h('div', {\n key: this._uid,\n staticClass: 'alert',\n class: _defineProperty({\n 'alert-dismissible': this.dismissible\n }, \"alert-\".concat(this.variant), this.variant),\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-atomic': true\n }\n }, [$dismissBtn, this.normalizeSlot('default')]);\n $alert = [$alert];\n }\n \n return h(BVTransition, {\n props: {\n noFade: !this.fade\n }\n }, $alert);\n }\n });\n \n var AlertPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BAlert: BAlert\n }\n });\n \n // Math utilty functions\n var mathMin = Math.min;\n var mathMax = Math.max;\n var mathAbs = Math.abs;\n var mathCeil = Math.ceil;\n var mathFloor = Math.floor;\n var mathPow = Math.pow;\n var mathRound = Math.round;\n \n var NAME$3 = 'BAspect';\n var CLASS_NAME = 'b-aspect';\n var RX_ASPECT = /^\\d+(\\.\\d*)?[/:]\\d+(\\.\\d*)?$/;\n var RX_SEPARATOR = /[/:]/; // --- Main Component ---\n \n var BAspect = /*#__PURE__*/Vue.extend({\n name: NAME$3,\n mixins: [normalizeSlotMixin],\n props: {\n aspect: {\n // Accepts a number (i.e. `16 / 9`, `1`, `4 / 3`)\n // Or a string (i.e. '16/9', '16:9', '4:3' '1:1')\n type: [Number, String],\n default: '1:1'\n },\n tag: {\n type: String,\n default: 'div'\n }\n },\n computed: {\n padding: function padding() {\n var aspect = this.aspect;\n var ratio = 1;\n \n if (RX_ASPECT.test(aspect)) {\n // Width and/or Height can be a decimal value below `1`, so\n // we only fallback to `1` if the value is `0` or `NaN`\n var _aspect$split$map = aspect.split(RX_SEPARATOR).map(function (v) {\n return toFloat(v) || 1;\n }),\n _aspect$split$map2 = _slicedToArray(_aspect$split$map, 2),\n width = _aspect$split$map2[0],\n height = _aspect$split$map2[1];\n \n ratio = width / height;\n } else {\n ratio = toFloat(aspect) || 1;\n }\n \n return \"\".concat(100 / mathAbs(ratio), \"%\");\n }\n },\n render: function render(h) {\n var $sizer = h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-sizer flex-grow-1\"),\n style: {\n paddingBottom: this.padding,\n height: 0\n }\n });\n var $content = h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-content flex-grow-1 w-100 mw-100\"),\n style: {\n marginLeft: '-100%'\n }\n }, [this.normalizeSlot('default')]);\n return h(this.tag, {\n staticClass: \"\".concat(CLASS_NAME, \" d-flex\")\n }, [$sizer, $content]);\n }\n });\n \n var AspectPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BAspect: BAspect\n }\n });\n \n var prefixPropName = function prefixPropName(prefix, value) {\n return prefix + upperFirst(value);\n }; // Remove a prefix from a property\n \n var unprefixPropName = function unprefixPropName(prefix, value) {\n return lowerFirst(value.replace(prefix, ''));\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 \n var suffixPropName = function suffixPropName(suffix, str) {\n return str + (suffix ? upperFirst(suffix) : '');\n }; // Copies props from one array/object to a new array/object\n // Prop values are also cloned as new references to prevent possible\n // mutation of original prop object values\n // Optionally accepts a function to transform the prop name\n \n var copyProps = function copyProps(props) {\n var transformFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identity;\n \n if (isArray(props)) {\n return props.map(transformFn);\n }\n \n var copied = {};\n \n for (var prop in props) {\n /* istanbul ignore else */\n if (hasOwnProperty(props, prop)) {\n // If the prop value is an object, do a shallow clone\n // to prevent 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 }; // 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 var pluckProps = function pluckProps(keysToPluck, objToPluck) {\n var transformFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity;\n return (isArray(keysToPluck) ? keysToPluck.slice() : keys(keysToPluck)).reduce(function (memo, prop) {\n memo[transformFn(prop)] = objToPluck[prop];\n return memo;\n }, {});\n };\n \n var ANCHOR_TAG = 'a'; // Precompile RegExp\n \n var commaRE = /%2C/g;\n var encodeReserveRE = /[!'()*]/g;\n var plusRE = /\\+/g;\n var queryStartRE = /^(\\?|#|&)/; // Method to replace reserved chars\n \n var encodeReserveReplacer = function encodeReserveReplacer(c) {\n return '%' + c.charCodeAt(0).toString(16);\n }; // Fixed encodeURIComponent which is more conformant to RFC3986:\n // - escapes [!'()*]\n // - preserve commas\n \n \n var encode = function encode(str) {\n return encodeURIComponent(toString$1(str)).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');\n };\n \n var decode = decodeURIComponent; // Stringifies an object of query parameters\n // See: https://github.com/vuejs/vue-router/blob/dev/src/util/query.js\n \n var stringifyQueryObj = function stringifyQueryObj(obj) {\n if (!isPlainObject(obj)) {\n return '';\n }\n \n var query = keys(obj).map(function (key) {\n var val = obj[key];\n \n if (isUndefined(val)) {\n return '';\n } else if (isNull(val)) {\n return encode(key);\n } else if (isArray(val)) {\n return val.reduce(function (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 \n return results;\n }, []).join('&');\n } // Faster than string interpolation\n \n \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(function (x) {\n return x.length > 0;\n }).join('&');\n return query ? \"?\".concat(query) : '';\n };\n var parseQuery = function parseQuery(query) {\n var parsed = {};\n query = toString$1(query).trim().replace(queryStartRE, '');\n \n if (!query) {\n return parsed;\n }\n \n query.split('&').forEach(function (param) {\n var parts = param.replace(plusRE, ' ').split('=');\n var key = decode(parts.shift());\n var 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 return parsed;\n };\n var isLink = function isLink(props) {\n return !!(props.href || props.to);\n };\n var isRouterLink = function isRouterLink(tag) {\n return !isTag(tag, ANCHOR_TAG);\n };\n var computeTag = function computeTag() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n to = _ref.to,\n disabled = _ref.disabled,\n routerComponentName = _ref.routerComponentName;\n \n var thisOrParent = arguments.length > 1 ? arguments[1] : undefined;\n var hasRouter = thisOrParent.$router;\n \n if (!hasRouter || hasRouter && disabled || hasRouter && !to) {\n return ANCHOR_TAG;\n } // TODO:\n // Check registered components for existence of user supplied router link component name\n // We would need to check PascalCase, kebab-case, and camelCase versions of name:\n // const name = routerComponentName\n // const names = [name, PascalCase(name), KebabCase(name), CamelCase(name)]\n // exists = names.some(name => !!thisOrParent.$options.components[name])\n // And may want to cache the result for performance or we just let the render fail\n // if the component is not registered\n \n \n return routerComponentName || (thisOrParent.$nuxt ? 'nuxt-link' : 'router-link');\n };\n var computeRel = function computeRel() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref2.target,\n rel = _ref2.rel;\n \n if (target === '_blank' && isNull(rel)) {\n return 'noopener';\n }\n \n return rel || null;\n };\n var computeHref = function computeHref() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n href = _ref3.href,\n to = _ref3.to;\n \n var tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANCHOR_TAG;\n var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#';\n var toFallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '/';\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 } // Return `href` when explicitly provided\n \n \n if (href) {\n return href;\n } // Reconstruct `href` when `to` used, but no router\n \n \n if (to) {\n // Fallback to `to` prop (if `to` is a string)\n if (isString(to)) {\n return to || toFallback;\n } // Fallback to `to.path + to.query + to.hash` prop (if `to` is an object)\n \n \n if (isPlainObject(to) && (to.path || to.query || to.hash)) {\n var path = toString$1(to.path);\n var query = stringifyQueryObj(to.query);\n var hash = toString$1(to.hash);\n hash = !hash || hash.charAt(0) === '#' ? hash : \"#\".concat(hash);\n return \"\".concat(path).concat(query).concat(hash) || toFallback;\n }\n } // If nothing is provided return the fallback\n \n \n return fallback;\n };\n \n /*\n * Key Codes (events)\n */\n var 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 \n var makePropWatcher = function makePropWatcher(propName) {\n return {\n handler: function handler(newVal, oldVal) {\n for (var key in oldVal) {\n if (!hasOwnProperty(newVal, key)) {\n this.$delete(this.$data[propName], key);\n }\n }\n \n for (var _key in newVal) {\n this.$set(this.$data[propName], _key, newVal[_key]);\n }\n }\n };\n };\n var makePropCacheMixin = function makePropCacheMixin(propName, proxyPropName) {\n return {\n data: function data() {\n return _defineProperty({}, proxyPropName, {});\n },\n watch: _defineProperty({}, propName, makePropWatcher(proxyPropName)),\n created: function created() {\n this[proxyPropName] = _objectSpread2({}, this[propName]);\n }\n };\n };\n \n var attrsMixin = makePropCacheMixin('$attrs', 'bvAttrs');\n \n var listenersMixin = makePropCacheMixin('$listeners', 'bvListeners');\n \n var NAME$4 = 'BLink'; // --- Props ---\n // specific props\n \n var routerLinkProps = {\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 // default: undefined\n \n },\n exact: {\n type: Boolean,\n default: false\n },\n exactActiveClass: {\n type: String // default: undefined\n \n },\n routerTag: {\n type: String,\n default: 'a'\n }\n }; // specific props\n \n var nuxtLinkProps = {\n prefetch: {\n type: Boolean,\n // Must be `null` to fall back to the value defined in the\n // `nuxt.config.js` configuration file for `router.prefetchLinks`\n // We convert `null` to `undefined`, so that Nuxt.js will use the\n // compiled default. Vue treats `undefined` as default of `false`\n // for Boolean props, so we must set it as `null` here to be a\n // true tri-state prop\n default: null\n },\n noPrefetch: {\n type: Boolean,\n default: false\n }\n };\n var props$1 = _objectSpread2(_objectSpread2(_objectSpread2({\n href: {\n type: String,\n default: null\n },\n rel: {\n type: String,\n // Must be `null` if no value provided\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 }, routerLinkProps), nuxtLinkProps), {}, {\n // To support 3rd party router links based on `` (i.e. `g-link` for Gridsome)\n // Default is to auto choose between `` and ``\n // Gridsome doesn't provide a mechanism to auto detect and has caveats\n // such as not supporting FQDN URLs or hash only URLs\n routerComponentName: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$4, 'routerComponentName');\n }\n }\n }); // --- Main component ---\n // @vue/component\n \n var BLink = /*#__PURE__*/Vue.extend({\n name: 'BLink',\n // Mixin order is important!\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props$1,\n computed: {\n computedTag: function computedTag() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n var to = this.to,\n disabled = this.disabled,\n routerComponentName = this.routerComponentName;\n return computeTag({\n to: to,\n disabled: disabled,\n routerComponentName: routerComponentName\n }, this);\n },\n isRouterLink: function isRouterLink$1() {\n return isRouterLink(this.computedTag);\n },\n computedRel: function computedRel() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return computeRel({\n target: this.target,\n rel: this.rel\n });\n },\n computedHref: function computedHref() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return computeHref({\n to: this.to,\n href: this.href\n }, this.computedTag);\n },\n computedProps: function computedProps() {\n var prefetch = this.prefetch;\n return this.isRouterLink ? _objectSpread2(_objectSpread2({}, pluckProps(_objectSpread2(_objectSpread2({}, routerLinkProps), nuxtLinkProps), this)), {}, {\n // Coerce `prefetch` value `null` to be `undefined`\n prefetch: isBoolean(prefetch) ? prefetch : undefined,\n // Pass `router-tag` as `tag` prop\n tag: this.routerTag\n }) : {};\n },\n computedAttrs: function computedAttrs() {\n var bvAttrs = this.bvAttrs,\n href = this.computedHref,\n rel = this.computedRel,\n disabled = this.disabled,\n target = this.target,\n routerTag = this.routerTag,\n isRouterLink = this.isRouterLink;\n return _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, bvAttrs), href ? {\n href: href\n } : {}), isRouterLink && routerTag !== 'a' && routerTag !== 'area' ? {} : {\n rel: rel,\n target: target\n }), {}, {\n tabindex: disabled ? '-1' : isUndefined(bvAttrs.tabindex) ? null : bvAttrs.tabindex,\n 'aria-disabled': disabled ? 'true' : null\n });\n },\n computedListeners: function computedListeners() {\n return _objectSpread2(_objectSpread2({}, this.bvListeners), {}, {\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 },\n methods: {\n onClick: function onClick(evt) {\n var _arguments = arguments;\n var evtIsEvent = isEvent(evt);\n var isRouterLink = this.isRouterLink;\n var suppliedHandler = this.bvListeners.click;\n \n if (evtIsEvent && this.disabled) {\n // Stop event from bubbling up\n evt.stopPropagation(); // Kill the event loop attached to this specific `EventTarget`\n // Needed to prevent `vue-router` for doing its thing\n \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 } // Call the suppliedHandler(s), if any provided\n \n \n concat(suppliedHandler).filter(function (h) {\n return isFunction(h);\n }).forEach(function (handler) {\n handler.apply(void 0, _toConsumableArray(_arguments));\n }); // Emit the global `$root` click event\n \n this.$root.$emit('clicked::link', evt);\n } // Stop scroll-to-top behavior or navigation on\n // regular links when href is just '#'\n \n \n if (evtIsEvent && (this.disabled || !isRouterLink && this.computedHref === '#')) {\n evt.preventDefault();\n }\n },\n focus: function focus() {\n attemptFocus(this.$el);\n },\n blur: function blur() {\n attemptBlur(this.$el);\n }\n },\n render: function render(h) {\n var active = this.active,\n disabled = this.disabled;\n return h(this.computedTag, _defineProperty({\n class: {\n active: active,\n disabled: disabled\n },\n attrs: this.computedAttrs,\n props: this.computedProps\n }, this.isRouterLink ? 'nativeOn' : 'on', this.computedListeners), this.normalizeSlot('default'));\n }\n });\n \n var NAME$5 = 'BButton'; // --- Props ---\n \n var linkProps = omit(props$1, ['event', 'routerTag']);\n delete linkProps.href.default;\n delete linkProps.to.default;\n var 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: function _default() {\n return getComponentConfig(NAME$5, 'size');\n }\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$5, 'variant');\n }\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 var props$2 = _objectSpread2(_objectSpread2({}, btnProps), linkProps); // --- Helper methods ---\n // Focus handler for toggle buttons\n // Needs class of 'focus' when focused\n \n var handleFocus = function 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 }; // Is the requested button a link?\n // If tag prop is set to `a`, we use a to get proper disabled handling\n \n \n var isLink$1 = function isLink$1(props) {\n return isLink(props) || isTag(props.tag, 'a');\n }; // Is the button to be a toggle button?\n \n \n var isToggle = function isToggle(props) {\n return isBoolean(props.pressed);\n }; // Is the button \"really\" a button?\n \n \n var isButton = function isButton(props) {\n return !(isLink$1(props) || props.tag && !isTag(props.tag, 'button'));\n }; // Is the requested tag not a button or link?\n \n \n var isNonStandardTag = function isNonStandardTag(props) {\n return !isLink$1(props) && !isButton(props);\n }; // Compute required classes (non static classes)\n \n \n var computeClass = function computeClass(props) {\n var _ref;\n \n return [\"btn-\".concat(props.variant || getComponentConfig(NAME$5, 'variant')), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(props.size), props.size), _defineProperty(_ref, 'btn-block', props.block), _defineProperty(_ref, 'rounded-pill', props.pill), _defineProperty(_ref, 'rounded-0', props.squared && !props.pill), _defineProperty(_ref, \"disabled\", props.disabled), _defineProperty(_ref, \"active\", props.pressed), _ref)];\n }; // Compute the link props to pass to b-link (if required)\n \n \n var computeLinkProps = function computeLinkProps(props) {\n return isLink$1(props) ? pluckProps(linkProps, props) : {};\n }; // Compute the attributes for a button\n \n \n var computeAttrs = function computeAttrs(props, data) {\n var button = isButton(props);\n var link = isLink$1(props);\n var toggle = isToggle(props);\n var nonStandardTag = isNonStandardTag(props);\n var hashLink = link && props.href === '#';\n var role = data.attrs && data.attrs.role ? data.attrs.role : null;\n var tabindex = data.attrs ? data.attrs.tabindex : null;\n \n if (nonStandardTag || hashLink) {\n tabindex = '0';\n }\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 }; // --- Main component ---\n // @vue/component\n \n \n var BButton = /*#__PURE__*/Vue.extend({\n name: NAME$5,\n functional: true,\n props: props$2,\n render: function render(h, _ref2) {\n var props = _ref2.props,\n data = _ref2.data,\n listeners = _ref2.listeners,\n children = _ref2.children;\n var toggle = isToggle(props);\n var link = isLink$1(props);\n var nonStandardTag = isNonStandardTag(props);\n var hashLink = link && props.href === '#';\n var on = {\n keydown: function 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 \n /* istanbul ignore next */\n if (props.disabled || !(nonStandardTag || hashLink)) {\n return;\n }\n \n var keyCode = evt.keyCode; // Add SPACE handler for `href=\"#\"` and ENTER handler for non-standard tags\n \n if (keyCode === KEY_CODES.SPACE || keyCode === KEY_CODES.ENTER && nonStandardTag) {\n var target = evt.currentTarget || evt.target;\n evt.preventDefault();\n target.click();\n }\n },\n click: function 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(function (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 var componentData = {\n staticClass: 'btn',\n class: computeClass(props),\n props: computeLinkProps(props),\n attrs: computeAttrs(props, data),\n on: on\n };\n return h(link ? BLink : props.tag, a(data, componentData), children);\n }\n });\n \n var 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 animation: {\n type: String,\n default: null\n }\n }; // Base attributes needed on all icons\n \n var baseAttrs = {\n viewBox: '0 0 16 16',\n width: '1em',\n height: '1em',\n focusable: 'false',\n role: 'img',\n 'aria-label': 'icon'\n }; // Attributes that are nulled out when stacked\n \n var stackedAttrs = {\n width: null,\n height: null,\n focusable: null,\n role: null,\n 'aria-label': null\n }; // Shared private base component to reduce bundle/runtime size\n // @vue/component\n \n var BVIconBase = /*#__PURE__*/Vue.extend({\n name: 'BVIconBase',\n functional: true,\n props: _objectSpread2({\n content: {\n type: String\n },\n stacked: {\n type: Boolean,\n default: false\n }\n }, commonIconProps),\n render: function render(h, _ref) {\n var _class;\n \n var data = _ref.data,\n props = _ref.props,\n children = _ref.children;\n var fontScale = mathMax(toFloat(props.fontScale, 1), 0) || 1;\n var scale = mathMax(toFloat(props.scale, 1), 0) || 1;\n var rotate = toFloat(props.rotate, 0);\n var shiftH = toFloat(props.shiftH, 0);\n var shiftV = toFloat(props.shiftV, 0);\n var flipH = props.flipH;\n var flipV = props.flipV;\n var animation = props.animation; // 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 16 16` (`8 8` is the center)\n \n var hasScale = flipH || flipV || scale !== 1;\n var hasTransforms = hasScale || rotate;\n var hasShift = shiftH || shiftV;\n var transforms = [hasTransforms ? 'translate(8 8)' : null, hasScale ? \"scale(\".concat((flipH ? -1 : 1) * scale, \" \").concat((flipV ? -1 : 1) * scale, \")\") : null, rotate ? \"rotate(\".concat(rotate, \")\") : null, hasTransforms ? 'translate(-8 -8)' : null].filter(identity); // Handling stacked icons\n \n var isStacked = props.stacked;\n var hasContent = !isUndefinedOrNull(props.content); // We wrap the content in a `` for handling the transforms (except shift)\n \n var $inner = h('g', {\n attrs: {\n transform: transforms.join(' ') || null\n },\n domProps: hasContent ? {\n innerHTML: props.content || ''\n } : {}\n }, children); // If needed, we wrap in an additional `` in order to handle the shifting\n \n if (hasShift) {\n $inner = h('g', {\n attrs: {\n transform: \"translate(\".concat(16 * shiftH / 16, \" \").concat(-16 * shiftV / 16, \")\")\n }\n }, [$inner]);\n }\n \n if (isStacked) {\n // Wrap in an additional `` for proper\n // animation handling if stacked\n $inner = h('g', {}, [$inner]);\n }\n \n return h('svg', a({\n staticClass: 'b-icon bi',\n class: (_class = {}, _defineProperty(_class, \"text-\".concat(props.variant), !!props.variant), _defineProperty(_class, \"b-icon-animation-\".concat(animation), !!animation), _class),\n attrs: baseAttrs,\n style: isStacked ? {} : {\n fontSize: fontScale === 1 ? null : \"\".concat(fontScale * 100, \"%\")\n }\n }, // Merge in user supplied data\n data, // If icon is stacked, null out some attrs\n isStacked ? {\n attrs: stackedAttrs\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 }), [$inner]);\n }\n });\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 */\n \n var makeIcon = function 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 var kebabName = kebabCase(name);\n var iconName = \"BIcon\".concat(pascalCase(name));\n var iconNameClass = \"bi-\".concat(kebabName);\n var svgContent = trim(content || ''); // Return the icon component definition\n \n return /*#__PURE__*/Vue.extend({\n name: iconName,\n functional: true,\n props: _objectSpread2(_objectSpread2({}, commonIconProps), {}, {\n stacked: {\n type: Boolean,\n default: false\n }\n }),\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props;\n return h(BVIconBase, a(data, {\n staticClass: iconNameClass,\n props: _objectSpread2(_objectSpread2({}, props), {}, {\n content: svgContent\n }),\n attrs: {\n 'aria-label': kebabName.replace(/-/g, ' ')\n }\n }));\n }\n });\n };\n \n // --- BEGIN AUTO-GENERATED FILE ---\n var BIconBlank=/*#__PURE__*/makeIcon('Blank','');// --- Bootstrap Icons ---\n var BIconCalendar=/*#__PURE__*/makeIcon('Calendar','');// eslint-disable-next-line\n var BIconCalendarFill=/*#__PURE__*/makeIcon('CalendarFill','');// eslint-disable-next-line\n var BIconChevronBarLeft=/*#__PURE__*/makeIcon('ChevronBarLeft','');// eslint-disable-next-line\n var BIconChevronDoubleLeft=/*#__PURE__*/makeIcon('ChevronDoubleLeft','');// eslint-disable-next-line\n var BIconChevronDown=/*#__PURE__*/makeIcon('ChevronDown','');// eslint-disable-next-line\n var BIconChevronLeft=/*#__PURE__*/makeIcon('ChevronLeft','');// eslint-disable-next-line\n var BIconChevronUp=/*#__PURE__*/makeIcon('ChevronUp','');// eslint-disable-next-line\n var BIconCircleFill=/*#__PURE__*/makeIcon('CircleFill','');// eslint-disable-next-line\n var BIconClock=/*#__PURE__*/makeIcon('Clock','');// eslint-disable-next-line\n var BIconClockFill=/*#__PURE__*/makeIcon('ClockFill','');// eslint-disable-next-line\n var BIconDash=/*#__PURE__*/makeIcon('Dash','');// eslint-disable-next-line\n var BIconPersonFill=/*#__PURE__*/makeIcon('PersonFill','');// eslint-disable-next-line\n var BIconPlus=/*#__PURE__*/makeIcon('Plus','');// eslint-disable-next-line\n var BIconStar=/*#__PURE__*/makeIcon('Star','');// eslint-disable-next-line\n var BIconStarFill=/*#__PURE__*/makeIcon('StarFill','');// eslint-disable-next-line\n var BIconStarHalf=/*#__PURE__*/makeIcon('StarHalf','');// eslint-disable-next-line\n var BIconX=/*#__PURE__*/makeIcon('X','');// eslint-disable-next-line\n // --- END AUTO-GENERATED FILE ---\n \n var RX_ICON_PREFIX = /^BIcon/; // Helper BIcon component\n // Requires the requested icon component to be installed\n \n var BIcon = /*#__PURE__*/Vue.extend({\n name: 'BIcon',\n functional: true,\n props: _objectSpread2(_objectSpread2({\n icon: {\n type: String,\n default: null\n }\n }, commonIconProps), {}, {\n stacked: {\n type: Boolean,\n default: false\n }\n }),\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props,\n parent = _ref.parent;\n var icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, '');\n var iconName = \"BIcon\".concat(icon); // If parent context exists, we check to see if the icon has been registered\n // Either locally in the parent component, or globally at the `$root` level\n // If not registered, we render a blank icon\n \n var components = ((parent || {}).$options || {}).components;\n var componentRefOrName = icon && components ? components[iconName] || BIconBlank : icon ? iconName : BIconBlank;\n return h(componentRefOrName, a(data, {\n props: _objectSpread2(_objectSpread2({}, props), {}, {\n icon: null\n })\n }));\n }\n });\n \n var NAME$6 = 'BAvatar';\n var CLASS_NAME$1 = 'b-avatar';\n var RX_NUMBER = /^[0-9]*\\.?[0-9]+$/;\n var FONT_SIZE_SCALE = 0.4;\n var BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7;\n var DEFAULT_SIZES = {\n sm: '1.5em',\n md: '2.5em',\n lg: '3.5em'\n }; // --- Props ---\n \n var linkProps$1 = omit(props$1, ['active', 'event', 'routerTag']);\n \n var props$3 = _objectSpread2(_objectSpread2({\n src: {\n type: String // default: null\n \n },\n text: {\n type: String // default: null\n \n },\n icon: {\n type: String // default: null\n \n },\n alt: {\n type: String,\n default: 'avatar'\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$6, 'variant');\n }\n },\n size: {\n type: [Number, String],\n default: null\n },\n square: {\n type: Boolean,\n default: false\n },\n rounded: {\n type: [Boolean, String],\n default: false\n },\n button: {\n type: Boolean,\n default: false\n },\n buttonType: {\n type: String,\n default: 'button'\n },\n badge: {\n type: [Boolean, String],\n default: false\n },\n badgeVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$6, 'badgeVariant');\n }\n },\n badgeTop: {\n type: Boolean,\n default: false\n },\n badgeLeft: {\n type: Boolean,\n default: false\n },\n badgeOffset: {\n type: String,\n default: '0px'\n }\n }, linkProps$1), {}, {\n ariaLabel: {\n type: String // default: null\n \n }\n }); // --- Utility methods ---\n \n \n var computeSize = function computeSize(value) {\n // Default to `md` size when `null`, or parse to\n // number when value is a float-like string\n value = isUndefinedOrNull(value) || value === '' ? 'md' : isString(value) && RX_NUMBER.test(value) ? toFloat(value, 0) : value; // Convert all numbers to pixel values\n // Handle default sizes when `sm`, `md` or `lg`\n // Or use value as is\n \n return isNumber(value) ? \"\".concat(value, \"px\") : DEFAULT_SIZES[value] || value;\n }; // --- Main component ---\n // @vue/component\n \n var BAvatar = /*#__PURE__*/Vue.extend({\n name: NAME$6,\n mixins: [normalizeSlotMixin],\n inject: {\n bvAvatarGroup: {\n default: null\n }\n },\n props: props$3,\n data: function data() {\n return {\n localSrc: this.src || null\n };\n },\n computed: {\n computedSize: function computedSize() {\n // Always use the avatar group size\n return computeSize(this.bvAvatarGroup ? this.bvAvatarGroup.size : this.size);\n },\n computedVariant: function computedVariant() {\n // Prefer avatar-group variant if provided\n var avatarGroup = this.bvAvatarGroup;\n return avatarGroup && avatarGroup.variant ? avatarGroup.variant : this.variant;\n },\n computedRounded: function computedRounded() {\n var avatarGroup = this.bvAvatarGroup;\n var square = avatarGroup && avatarGroup.square ? true : this.square;\n var rounded = avatarGroup && avatarGroup.rounded ? avatarGroup.rounded : this.rounded;\n return square ? '0' : rounded === '' ? true : rounded || 'circle';\n },\n fontStyle: function fontStyle() {\n var fontSize = this.computedSize;\n fontSize = fontSize ? \"calc(\".concat(fontSize, \" * \").concat(FONT_SIZE_SCALE, \")\") : null;\n return fontSize ? {\n fontSize: fontSize\n } : {};\n },\n marginStyle: function marginStyle() {\n var avatarGroup = this.bvAvatarGroup;\n var overlapScale = avatarGroup ? avatarGroup.overlapScale : 0;\n var size = this.computedSize;\n var value = size && overlapScale ? \"calc(\".concat(size, \" * -\").concat(overlapScale, \")\") : null;\n return value ? {\n marginLeft: value,\n marginRight: value\n } : {};\n },\n badgeStyle: function badgeStyle() {\n var size = this.computedSize,\n badgeTop = this.badgeTop,\n badgeLeft = this.badgeLeft,\n badgeOffset = this.badgeOffset;\n var offset = badgeOffset || '0px';\n return {\n fontSize: size ? \"calc(\".concat(size, \" * \").concat(BADGE_FONT_SIZE_SCALE, \" )\") : null,\n top: badgeTop ? offset : null,\n bottom: badgeTop ? null : offset,\n left: badgeLeft ? offset : null,\n right: badgeLeft ? null : offset\n };\n }\n },\n watch: {\n src: function src(newSrc, oldSrc) {\n if (newSrc !== oldSrc) {\n this.localSrc = newSrc || null;\n }\n }\n },\n methods: {\n onImgError: function onImgError(evt) {\n this.localSrc = null;\n this.$emit('img-error', evt);\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n }\n },\n render: function render(h) {\n var _class2;\n \n var variant = this.computedVariant,\n disabled = this.disabled,\n rounded = this.computedRounded,\n icon = this.icon,\n src = this.localSrc,\n text = this.text,\n fontStyle = this.fontStyle,\n marginStyle = this.marginStyle,\n size = this.computedSize,\n button = this.button,\n type = this.buttonType,\n badge = this.badge,\n badgeVariant = this.badgeVariant,\n badgeStyle = this.badgeStyle;\n var link = !button && isLink(this);\n var tag = button ? BButton : link ? BLink : 'span';\n var alt = this.alt;\n var ariaLabel = this.ariaLabel || null;\n var $content = null;\n \n if (this.hasNormalizedSlot('default')) {\n // Default slot overrides props\n $content = h('span', {\n staticClass: 'b-avatar-custom'\n }, [this.normalizeSlot('default')]);\n } else if (src) {\n $content = h('img', {\n style: variant ? {} : {\n width: '100%',\n height: '100%'\n },\n attrs: {\n src: src,\n alt: alt\n },\n on: {\n error: this.onImgError\n }\n });\n $content = h('span', {\n staticClass: 'b-avatar-img'\n }, [$content]);\n } else if (icon) {\n $content = h(BIcon, {\n props: {\n icon: icon\n },\n attrs: {\n 'aria-hidden': 'true',\n alt: alt\n }\n });\n } else if (text) {\n $content = h('span', {\n staticClass: 'b-avatar-text',\n style: fontStyle\n }, [h('span', text)]);\n } else {\n // Fallback default avatar content\n $content = h(BIconPersonFill, {\n attrs: {\n 'aria-hidden': 'true',\n alt: alt\n }\n });\n }\n \n var $badge = h();\n var hasBadgeSlot = this.hasNormalizedSlot('badge');\n \n if (badge || badge === '' || hasBadgeSlot) {\n var badgeText = badge === true ? '' : badge;\n $badge = h('span', {\n staticClass: 'b-avatar-badge',\n class: _defineProperty({}, \"badge-\".concat(badgeVariant), !!badgeVariant),\n style: badgeStyle\n }, [hasBadgeSlot ? this.normalizeSlot('badge') : badgeText]);\n }\n \n var componentData = {\n staticClass: CLASS_NAME$1,\n class: (_class2 = {}, _defineProperty(_class2, \"badge-\".concat(variant), !button && variant), _defineProperty(_class2, \"rounded\", rounded === true), _defineProperty(_class2, \"rounded-\".concat(rounded), rounded && rounded !== true), _defineProperty(_class2, \"disabled\", disabled), _class2),\n style: _objectSpread2({\n width: size,\n height: size\n }, marginStyle),\n attrs: {\n 'aria-label': ariaLabel || null\n },\n props: button ? {\n variant: variant,\n disabled: disabled,\n type: type\n } : link ? pluckProps(linkProps$1, this) : {},\n on: button || link ? {\n click: this.onClick\n } : {}\n };\n return h(tag, componentData, [$content, $badge]);\n }\n });\n \n var NAME$7 = 'BAvatarGroup'; // --- Main component ---\n // @vue/component\n \n var BAvatarGroup = /*#__PURE__*/Vue.extend({\n name: NAME$7,\n mixins: [normalizeSlotMixin],\n provide: function provide() {\n return {\n bvAvatarGroup: this\n };\n },\n props: {\n variant: {\n // Child avatars will prefer this variant over their own\n type: String,\n default: null\n },\n size: {\n // Child avatars will always use this over their own size\n type: String,\n default: null\n },\n overlap: {\n type: [Number, String],\n default: 0.3\n },\n square: {\n // Child avatars will prefer this prop (if set) over their own\n type: Boolean,\n default: false\n },\n rounded: {\n // Child avatars will prefer this prop (if set) over their own\n type: [Boolean, String],\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n }\n },\n computed: {\n computedSize: function computedSize() {\n return computeSize(this.size);\n },\n overlapScale: function overlapScale() {\n return mathMin(mathMax(toFloat(this.overlap, 0), 0), 1) / 2;\n },\n paddingStyle: function paddingStyle() {\n var value = this.computedSize;\n value = value ? \"calc(\".concat(value, \" * \").concat(this.overlapScale, \")\") : null;\n return value ? {\n paddingLeft: value,\n paddingRight: value\n } : {};\n }\n },\n render: function render(h) {\n var $inner = h('div', {\n staticClass: 'b-avatar-group-inner',\n style: this.paddingStyle\n }, [this.normalizeSlot('default')]);\n return h(this.tag, {\n staticClass: 'b-avatar-group',\n attrs: {\n role: 'group'\n }\n }, [$inner]);\n }\n });\n \n var AvatarPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BAvatar: BAvatar,\n BAvatarGroup: BAvatarGroup\n }\n });\n \n var NAME$8 = 'BBadge'; // --- Props ---\n \n var linkProps$2 = omit(props$1, ['event', 'routerTag']);\n delete linkProps$2.href.default;\n delete linkProps$2.to.default;\n var props$4 = _objectSpread2({\n tag: {\n type: String,\n default: 'span'\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$8, 'variant');\n }\n },\n pill: {\n type: Boolean,\n default: false\n }\n }, linkProps$2); // --- Main component ---\n // @vue/component\n \n var BBadge = /*#__PURE__*/Vue.extend({\n name: NAME$8,\n functional: true,\n props: props$4,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var link = isLink(props);\n var tag = link ? BLink : props.tag;\n var componentData = {\n staticClass: 'badge',\n class: [props.variant ? \"badge-\".concat(props.variant) : 'badge-secondary', {\n 'badge-pill': props.pill,\n active: props.active,\n disabled: props.disabled\n }],\n props: link ? pluckProps(linkProps$2, props) : {}\n };\n return h(tag, a(data, componentData), children);\n }\n });\n \n var BadgePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BBadge: BBadge\n }\n });\n \n var RX_HTML_TAGS = /(<([^>]+)>)/gi; // Removes anything that looks like an HTML tag from the supplied string\n \n var stripTags = function stripTags() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return String(text).replace(RX_HTML_TAGS, '');\n }; // Generate a `domProps` object for either `innerHTML`, `textContent` or an empty object\n \n var htmlOrText = function htmlOrText(innerHTML, textContent) {\n return innerHTML ? {\n innerHTML: innerHTML\n } : textContent ? {\n textContent: textContent\n } : {};\n };\n \n var props$5 = _objectSpread2({\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 }, omit(props$1, ['event', 'routerTag'])); // --- Main component ---\n // @vue/component\n \n var BBreadcrumbLink = /*#__PURE__*/Vue.extend({\n name: 'BBreadcrumbLink',\n functional: true,\n props: props$5,\n render: function render(h, _ref) {\n var suppliedProps = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var active = suppliedProps.active;\n var tag = active ? 'span' : BLink;\n var componentData = {\n attrs: {\n 'aria-current': active ? suppliedProps.ariaCurrent : null\n },\n props: pluckProps(props$5, suppliedProps)\n };\n \n if (!children) {\n componentData.domProps = htmlOrText(suppliedProps.html, suppliedProps.text);\n }\n \n return h(tag, a(data, componentData), children);\n }\n });\n \n var BBreadcrumbItem = /*#__PURE__*/Vue.extend({\n name: 'BBreadcrumbItem',\n functional: true,\n props: props$5,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('li', a(data, {\n staticClass: 'breadcrumb-item',\n class: {\n active: props.active\n }\n }), [h(BBreadcrumbLink, {\n props: props\n }, children)]);\n }\n });\n \n var props$6 = {\n items: {\n type: Array,\n default: null\n }\n }; // @vue/component\n \n var BBreadcrumb = /*#__PURE__*/Vue.extend({\n name: 'BBreadcrumb',\n functional: true,\n props: props$6,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var childNodes = children; // Build child nodes from items if given.\n \n if (isArray(props.items)) {\n var activeDefined = false;\n childNodes = props.items.map(function (item, idx) {\n if (!isObject(item)) {\n item = {\n text: toString$1(item)\n };\n } // Copy the value here so we can normalize it.\n \n \n var active = item.active;\n \n if (active) {\n activeDefined = true;\n }\n \n if (!active && !activeDefined) {\n // Auto-detect active by position in list.\n active = idx + 1 === props.items.length;\n }\n \n return h(BBreadcrumbItem, {\n props: _objectSpread2(_objectSpread2({}, item), {}, {\n active: active\n })\n });\n });\n }\n \n return h('ol', a(data, {\n staticClass: 'breadcrumb'\n }), childNodes);\n }\n });\n \n var BreadcrumbPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BBreadcrumb: BBreadcrumb,\n BBreadcrumbItem: BBreadcrumbItem,\n BBreadcrumbLink: BBreadcrumbLink\n }\n });\n \n var ButtonPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BButton: BButton,\n BBtn: BButton,\n BButtonClose: BButtonClose,\n BBtnClose: BButtonClose\n }\n });\n \n var NAME$9 = 'BButtonGroup';\n var props$7 = {\n vertical: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: function _default() {\n return getComponentConfig('BButton', 'size');\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n ariaRole: {\n type: String,\n default: 'group'\n }\n }; // @vue/component\n \n var BButtonGroup = /*#__PURE__*/Vue.extend({\n name: NAME$9,\n functional: true,\n props: props$7,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, a(data, {\n class: _defineProperty({\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical\n }, \"btn-group-\".concat(props.size), props.size),\n attrs: {\n role: props.ariaRole\n }\n }), children);\n }\n });\n \n var ButtonGroupPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BButtonGroup: BButtonGroup,\n BBtnGroup: BButtonGroup\n }\n });\n \n var ITEM_SELECTOR = ['.btn:not(.disabled):not([disabled]):not(.dropdown-item)', '.form-control:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'input[type=\"checkbox\"]:not(.disabled)', 'input[type=\"radio\"]:not(.disabled)'].join(','); // @vue/component\n \n var BButtonToolbar = /*#__PURE__*/Vue.extend({\n name: 'BButtonToolbar',\n mixins: [normalizeSlotMixin],\n props: {\n justify: {\n type: Boolean,\n default: false\n },\n keyNav: {\n type: Boolean,\n default: false\n }\n },\n mounted: function mounted() {\n if (this.keyNav) {\n // Pre-set the tabindexes if the markup does not include tabindex=\"-1\" on the toolbar items\n this.getItems();\n }\n },\n methods: {\n onFocusin: function onFocusin(evt) {\n if (evt.target === this.$el) {\n evt.preventDefault();\n evt.stopPropagation();\n this.focusFirst(evt);\n }\n },\n stop: function stop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n },\n onKeydown: function onKeydown(evt) {\n if (!this.keyNav) {\n /* istanbul ignore next: should never happen */\n return;\n }\n \n var key = evt.keyCode;\n var shift = evt.shiftKey;\n \n if (key === KEY_CODES.UP || key === KEY_CODES.LEFT) {\n this.stop(evt);\n shift ? this.focusFirst(evt) : this.focusPrev(evt);\n } else if (key === KEY_CODES.DOWN || key === KEY_CODES.RIGHT) {\n this.stop(evt);\n shift ? this.focusLast(evt) : this.focusNext(evt);\n }\n },\n focusFirst: function focusFirst() {\n var items = this.getItems();\n attemptFocus(items[0]);\n },\n focusPrev: function focusPrev(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n \n if (index > -1) {\n items = items.slice(0, index).reverse();\n attemptFocus(items[0]);\n }\n },\n focusNext: function focusNext(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n \n if (index > -1) {\n items = items.slice(index + 1);\n attemptFocus(items[0]);\n }\n },\n focusLast: function focusLast() {\n var items = this.getItems().reverse();\n attemptFocus(items[0]);\n },\n getItems: function getItems() {\n var items = selectAll(ITEM_SELECTOR, this.$el);\n items.forEach(function (item) {\n // Ensure tabfocus is -1 on any new elements\n item.tabIndex = -1;\n });\n return items.filter(function (el) {\n return isVisible(el);\n });\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'btn-toolbar',\n class: {\n 'justify-content-between': this.justify\n },\n attrs: {\n role: 'toolbar',\n tabindex: this.keyNav ? '0' : null\n },\n on: this.keyNav ? {\n focusin: this.onFocusin,\n keydown: this.onKeydown\n } : {}\n }, [this.normalizeSlot('default')]);\n }\n });\n \n var ButtonToolbarPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BButtonToolbar: BButtonToolbar,\n BBtnToolbar: BButtonToolbar\n }\n });\n \n // Handles when arrays are \"sparse\" (array.every(...) doesn't handle sparse)\n \n var compareArrays = function compareArrays(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n \n var equal = true;\n \n for (var i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n \n return equal;\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 */\n \n \n var looseEqual = function looseEqual(a, b) {\n if (a === b) {\n return true;\n }\n \n var aValidType = isDate(a);\n var bValidType = isDate(b);\n \n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n \n aValidType = isArray(a);\n bValidType = isArray(b);\n \n if (aValidType || bValidType) {\n return aValidType && bValidType ? compareArrays(a, b) : false;\n }\n \n aValidType = isObject(a);\n bValidType = isObject(b);\n \n if (aValidType || bValidType) {\n /* istanbul ignore if: this if will probably never be called */\n if (!aValidType || !bValidType) {\n return false;\n }\n \n var aKeysCount = keys(a).length;\n var bKeysCount = keys(b).length;\n \n if (aKeysCount !== bKeysCount) {\n return false;\n }\n \n for (var key in a) {\n var aHasKey = hasOwnProperty(a, key);\n var bHasKey = hasOwnProperty(b, key);\n \n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n \n return String(a) === String(b);\n };\n \n // Loose YYYY-MM-DD matching, ignores any appended time inforation\n // Matches '1999-12-20', '1999-1-1', '1999-01-20T22:51:49.118Z', '1999-01-02 13:00:00'\n \n var RX_DATE = /^\\d+-\\d\\d?-\\d\\d?(?:\\s|T|$)/; // Used to split off the date parts of the YYYY-MM-DD string\n \n var RX_DATE_SPLIT = /-|\\s|T/; // --- Date utility methods ---\n // Create or clone a date (`new Date(...)` shortcut)\n \n var createDate = function createDate() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n \n return _construct(Date, args);\n }; // Parse a date sting, or Date object, into a Date object (with no time information)\n \n var parseYMD = function parseYMD(date) {\n if (isString(date) && RX_DATE.test(date.trim())) {\n var _date$split$map = date.split(RX_DATE_SPLIT).map(function (v) {\n return toInteger(v, 1);\n }),\n _date$split$map2 = _slicedToArray(_date$split$map, 3),\n year = _date$split$map2[0],\n month = _date$split$map2[1],\n day = _date$split$map2[2];\n \n return createDate(year, month - 1, day);\n } else if (isDate(date)) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate());\n }\n \n return null;\n }; // Format a date object as `YYYY-MM-DD` format\n \n var formatYMD = function formatYMD(date) {\n date = parseYMD(date);\n \n if (!date) {\n return null;\n }\n \n var year = date.getFullYear();\n var month = \"0\".concat(date.getMonth() + 1).slice(-2);\n var day = \"0\".concat(date.getDate()).slice(-2);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n }; // Given a locale (or locales), resolve the browser available locale\n \n var resolveLocale = function resolveLocale(locales)\n /* istanbul ignore next */\n {\n var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gregory';\n locales = concat(locales).filter(identity);\n var fmt = new Intl.DateTimeFormat(locales, {\n calendar: calendar\n });\n return fmt.resolvedOptions().locale;\n }; // Create a `Intl.DateTimeFormat` formatter function\n \n var createDateFormatter = function createDateFormatter(locale, options)\n /* istanbul ignore next */\n {\n var dtf = new Intl.DateTimeFormat(locale, options);\n return dtf.format;\n }; // Determine if two dates are the same date (ignoring time portion)\n \n var datesEqual = function 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 }; // --- Date \"math\" utility methods (for BCalendar component mainly) ---\n \n var firstDateOfMonth = function firstDateOfMonth(date) {\n date = createDate(date);\n date.setDate(1);\n return date;\n };\n var lastDateOfMonth = function lastDateOfMonth(date) {\n date = createDate(date);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date;\n };\n var addYears = function addYears(date, numberOfYears) {\n date = createDate(date);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear() + numberOfYears); // Handle Feb 29th for leap years\n \n if (date.getMonth() !== month) {\n date.setDate(0);\n }\n \n return date;\n };\n var oneMonthAgo = function oneMonthAgo(date) {\n date = createDate(date);\n var month = date.getMonth();\n date.setMonth(month - 1); // Handle when days in month are different\n \n if (date.getMonth() === month) {\n date.setDate(0);\n }\n \n return date;\n };\n var oneMonthAhead = function oneMonthAhead(date) {\n date = createDate(date);\n var month = date.getMonth();\n date.setMonth(month + 1); // Handle when days in month are different\n \n if (date.getMonth() === (month + 2) % 12) {\n date.setDate(0);\n }\n \n return date;\n };\n var oneYearAgo = function oneYearAgo(date) {\n return addYears(date, -1);\n };\n var oneYearAhead = function oneYearAhead(date) {\n return addYears(date, 1);\n };\n var oneDecadeAgo = function oneDecadeAgo(date) {\n return addYears(date, -10);\n };\n var oneDecadeAhead = function oneDecadeAhead(date) {\n return addYears(date, 10);\n }; // Helper function to constrain a date between two values\n // Always returns a `Date` object or `null` if no date passed\n \n var constrainDate = function constrainDate(date) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // Ensure values are `Date` objects (or `null`)\n date = parseYMD(date);\n min = parseYMD(min) || date;\n max = parseYMD(max) || date; // Return a new `Date` object (or `null`)\n \n return date ? date < min ? min : date > max ? max : date : null;\n };\n \n // Localization utilities\n \n var RTL_LANGS = ['ar', 'az', 'ckb', 'fa', 'he', 'ks', 'lrc', 'mzn', 'ps', 'sd', 'te', 'ug', 'ur', 'yi'].map(function (locale) {\n return locale.toLowerCase();\n }); // Precompile RegExpr\n \n var RX_STRIP_MODS = /-u-.+/; // Returns true if the locale is RTL\n \n var isLocaleRTL = function isLocaleRTL(locale) {\n // Determines if the locale is RTL (only single locale supported)\n var parts = toString$1(locale).toLowerCase().replace(RX_STRIP_MODS, '').split('-');\n var locale1 = parts.slice(0, 2).join('-');\n var locale2 = parts[0];\n return arrayIncludes(RTL_LANGS, locale1) || arrayIncludes(RTL_LANGS, locale2);\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 // @vue/component\n var idMixin = {\n props: {\n id: {\n type: String // default: null\n \n }\n },\n data: function data() {\n return {\n localId_: null\n };\n },\n computed: {\n safeId: function safeId() {\n // Computed property that returns a dynamic function for creating the ID\n // Reacts to changes in both `.id` and `.localId_` and regenerates a new function\n var id = this.id || this.localId_; // 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 \n var fn = function fn(suffix) {\n if (!id) {\n return null;\n }\n \n suffix = String(suffix || '').replace(/\\s+/g, '_');\n return suffix ? id + '_' + suffix : id;\n };\n \n return fn;\n }\n },\n mounted: function mounted() {\n var _this = this;\n \n // `mounted()` only occurs client-side\n this.$nextTick(function () {\n // Update DOM with auto-generated ID after mount\n // to prevent SSR hydration errors\n _this.localId_ = \"__BVID__\".concat(_this._uid);\n });\n }\n };\n \n var NAME$a = 'BCalendar'; // Key Codes\n \n var UP = KEY_CODES.UP,\n DOWN = KEY_CODES.DOWN,\n LEFT = KEY_CODES.LEFT,\n RIGHT = KEY_CODES.RIGHT,\n PAGEUP = KEY_CODES.PAGEUP,\n PAGEDOWN = KEY_CODES.PAGEDOWN,\n HOME = KEY_CODES.HOME,\n END = KEY_CODES.END,\n ENTER = KEY_CODES.ENTER,\n SPACE = KEY_CODES.SPACE; // Common calendar option value strings\n \n var STR_GREGORY = 'gregory';\n var STR_NUMERIC = 'numeric';\n var STR_2_DIGIT = '2-digit';\n var STR_LONG = 'long';\n var STR_SHORT = 'short';\n var STR_NARROW = 'narrow'; // --- BCalendar component ---\n // @vue/component\n \n var BCalendar = Vue.extend({\n name: NAME$a,\n // Mixin order is important!\n mixins: [attrsMixin, 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] // default: null\n \n },\n valueAsDate: {\n // Always return the `v-model` value as a date object\n type: Boolean,\n default: false\n },\n initialDate: {\n // This specifies the calendar year/month/day that will be shown when\n // first opening the datepicker if no v-model value is provided\n // Default is the current date (or `min`/`max`)\n type: [String, Date] // default: null\n \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] // default: null\n \n },\n max: {\n type: [String, Date] // default: null\n \n },\n dateDisabledFn: {\n type: Function // default: null\n \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] // default: null\n \n },\n direction: {\n // 'ltr', 'rtl', or `null` (for auto detect)\n type: String // default: null\n \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 // default: null\n \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 // default: null\n \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 showDecadeNav: {\n // When `true` enables the decade navigation buttons\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 , 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 // default: null\n \n },\n roleDescription: {\n type: String // default: null\n \n },\n // Labels for buttons and keyboard shortcuts\n labelPrevDecade: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelPrevDecade');\n }\n },\n labelPrevYear: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelPrevYear');\n }\n },\n labelPrevMonth: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelPrevMonth');\n }\n },\n labelCurrentMonth: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelCurrentMonth');\n }\n },\n labelNextMonth: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelNextMonth');\n }\n },\n labelNextYear: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelNextYear');\n }\n },\n labelNextDecade: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelNextDecade');\n }\n },\n labelToday: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelToday');\n }\n },\n labelSelected: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelSelected');\n }\n },\n labelNoDateSelected: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelNoDateSelected');\n }\n },\n labelCalendar: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelCalendar');\n }\n },\n labelNav: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelNav');\n }\n },\n labelHelp: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$a, 'labelHelp');\n }\n },\n dateFormatOptions: {\n // `Intl.DateTimeFormat` object\n // Note: This value is *not* to be placed in the global config\n type: Object,\n default: function _default() {\n return {\n year: STR_NUMERIC,\n month: STR_LONG,\n day: STR_NUMERIC,\n weekday: STR_LONG\n };\n }\n },\n weekdayHeaderFormat: {\n // Format of the weekday names at the top of the calendar\n // Note: This value is *not* to be placed in the global config\n type: String,\n // `short` is typically a 3 letter abbreviation,\n // `narrow` is typically a single letter\n // `long` is the full week day name\n // Although some locales may override this (i.e `ar`, etc)\n default: STR_SHORT,\n validator: function validator(value) {\n return arrayIncludes([STR_LONG, STR_SHORT, STR_NARROW], value);\n }\n }\n },\n data: function data() {\n var 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(constrainDate(this.initialDate || this.getToday()), this.min, this.max),\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 valueId: function valueId() {\n return this.safeId();\n },\n widgetId: function widgetId() {\n return this.safeId('_calendar-wrapper_');\n },\n navId: function navId() {\n return this.safeId('_calendar-nav_');\n },\n gridId: function gridId() {\n return this.safeId('_calendar-grid_');\n },\n gridCaptionId: function gridCaptionId() {\n return this.safeId('_calendar-grid-caption_');\n },\n gridHelpId: function gridHelpId() {\n return this.safeId('_calendar-grid-help_');\n },\n activeId: function activeId() {\n return this.activeYMD ? this.safeId(\"_cell-\".concat(this.activeYMD, \"_\")) : null;\n },\n // TODO: Use computed props to convert `YYYY-MM-DD` to `Date` object\n selectedDate: function selectedDate() {\n // Selected as a `Date` object\n return parseYMD(this.selectedYMD);\n },\n activeDate: function activeDate() {\n // Active as a `Date` object\n return parseYMD(this.activeYMD);\n },\n computedMin: function computedMin() {\n return parseYMD(this.min);\n },\n computedMax: function computedMax() {\n return parseYMD(this.max);\n },\n computedWeekStarts: function computedWeekStarts() {\n // `startWeekday` is a prop (constrained to `0` through `6`)\n return mathMax(toInteger(this.startWeekday, 0), 0) % 7;\n },\n computedLocale: function computedLocale() {\n // Returns the resolved locale used by the calendar\n return resolveLocale(concat(this.locale).filter(identity), STR_GREGORY);\n },\n calendarLocale: function 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 var fmt = new Intl.DateTimeFormat(this.computedLocale, {\n calendar: STR_GREGORY\n });\n var calendar = fmt.resolvedOptions().calendar;\n var locale = fmt.resolvedOptions().locale;\n /* istanbul ignore if: mainly for IE 11 and a few other browsers, hard to test in JSDOM */\n \n if (calendar !== STR_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 \n return locale;\n },\n calendarYear: function calendarYear() {\n return this.activeDate.getFullYear();\n },\n calendarMonth: function calendarMonth() {\n return this.activeDate.getMonth();\n },\n calendarFirstDay: function calendarFirstDay() {\n return createDate(this.calendarYear, this.calendarMonth, 1);\n },\n calendarDaysInMonth: function calendarDaysInMonth() {\n // We create a new date as to not mutate the original\n var date = createDate(this.calendarFirstDay);\n date.setMonth(date.getMonth() + 1, 0);\n return date.getDate();\n },\n computedVariant: function computedVariant() {\n return \"btn-\".concat(this.selectedVariant || 'primary');\n },\n computedTodayVariant: function computedTodayVariant() {\n return \"btn-outline-\".concat(this.todayVariant || this.selectedVariant || 'primary');\n },\n isRTL: function isRTL() {\n // `true` if the language requested is RTL\n var dir = toString$1(this.direction).toLowerCase();\n \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 \n return isLocaleRTL(this.computedLocale);\n },\n context: function context() {\n var selectedYMD = this.selectedYMD;\n var selectedDate = parseYMD(selectedYMD);\n var activeYMD = this.activeYMD;\n var activeDate = parseYMD(activeYMD);\n return {\n // The current value of the `v-model`\n selectedYMD: selectedYMD,\n selectedDate: selectedDate,\n selectedFormatted: selectedDate ? this.formatDateString(selectedDate) : 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: function dateOutOfRange() {\n // Check whether 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 var min = this.computedMin;\n var max = this.computedMax;\n return function (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: function 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 var rangeFn = this.dateOutOfRange;\n var disabledFn = isFunction(this.dateDisabledFn) ? this.dateDisabledFn : function () {\n return false;\n }; // Return the function ref\n \n return function (date) {\n // Handle both `YYYY-MM-DD` and `Date` objects\n date = parseYMD(date);\n var ymd = formatYMD(date);\n return !!(rangeFn(date) || disabledFn(ymd, date));\n };\n },\n // Computed props that return date formatter functions\n formatDateString: function formatDateString() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, _objectSpread2(_objectSpread2({\n // Ensure we have year, month, day shown for screen readers/ARIA\n // If users really want to leave one of these out, they can\n // pass `undefined` for the property value\n year: STR_NUMERIC,\n month: STR_2_DIGIT,\n day: STR_2_DIGIT\n }, this.dateFormatOptions), {}, {\n // Ensure hours/minutes/seconds are not shown\n // As we do not support the time portion (yet)\n hour: undefined,\n minute: undefined,\n second: undefined,\n // Ensure calendar is gregorian\n calendar: STR_GREGORY\n }));\n },\n formatYearMonth: function formatYearMonth() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, {\n year: STR_NUMERIC,\n month: STR_LONG,\n calendar: STR_GREGORY\n });\n },\n formatWeekdayName: function formatWeekdayName() {\n // Long weekday name for weekday header aria-label\n return createDateFormatter(this.calendarLocale, {\n weekday: STR_LONG,\n calendar: STR_GREGORY\n });\n },\n formatWeekdayNameShort: function formatWeekdayNameShort() {\n // Weekday header cell format\n // defaults to 'short' 3 letter days, where possible\n return createDateFormatter(this.calendarLocale, {\n weekday: this.weekdayHeaderFormat || STR_SHORT,\n calendar: STR_GREGORY\n });\n },\n formatDay: function formatDay() {\n // Calendar grid day number formatter\n // We don't use DateTimeFormatter here as it can place extra\n // character(s) after the number (i.e the `zh` locale)\n var nf = new Intl.NumberFormat([this.computedLocale], {\n style: 'decimal',\n minimumIntegerDigits: 1,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n notation: 'standard'\n }); // Return a formatter function instance\n \n return function (date) {\n return nf.format(date.getDate());\n };\n },\n // Disabled states for the nav buttons\n prevDecadeDisabled: function prevDecadeDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneDecadeAgo(this.activeDate)) < min;\n },\n prevYearDisabled: function prevYearDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneYearAgo(this.activeDate)) < min;\n },\n prevMonthDisabled: function prevMonthDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneMonthAgo(this.activeDate)) < min;\n },\n thisMonthDisabled: function thisMonthDisabled() {\n // TODO: We could/should check if today is out of range\n return this.disabled;\n },\n nextMonthDisabled: function nextMonthDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneMonthAhead(this.activeDate)) > max;\n },\n nextYearDisabled: function nextYearDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneYearAhead(this.activeDate)) > max;\n },\n nextDecadeDisabled: function nextDecadeDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneDecadeAhead(this.activeDate)) > max;\n },\n // Calendar dates generation\n calendar: function calendar() {\n var matrix = [];\n var firstDay = this.calendarFirstDay;\n var calendarYear = firstDay.getFullYear();\n var calendarMonth = firstDay.getMonth();\n var daysInMonth = this.calendarDaysInMonth;\n var startIndex = firstDay.getDay(); // `0`..`6`\n \n var weekOffset = (this.computedWeekStarts > startIndex ? 7 : 0) - this.computedWeekStarts; // TODO: Change `dateInfoFn` to handle events and notes as well as classes\n \n var dateInfoFn = isFunction(this.dateInfoFn) ? this.dateInfoFn : function () {\n return {};\n }; // Build the calendar matrix\n \n var currentDay = 0 - weekOffset - startIndex;\n \n for (var week = 0; week < 6 && currentDay < daysInMonth; week++) {\n // For each week\n matrix[week] = []; // The following could be a map function\n \n for (var j = 0; j < 7; j++) {\n // For each day in week\n currentDay++;\n var date = createDate(calendarYear, calendarMonth, currentDay);\n var month = date.getMonth();\n var dayYMD = formatYMD(date);\n var dayDisabled = this.dateDisabled(date); // TODO: This could be a normalizer method\n \n var dateInfo = dateInfoFn(dayYMD, parseYMD(dayYMD));\n dateInfo = isString(dateInfo) || isArray(dateInfo) ?\n /* istanbul ignore next */\n {\n class: dateInfo\n } : isPlainObject(dateInfo) ? _objectSpread2({\n class: ''\n }, dateInfo) :\n /* istanbul ignore next */\n {\n class: ''\n };\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 \n return matrix;\n },\n calendarHeadings: function calendarHeadings() {\n var _this = this;\n \n return this.calendar[0].map(function (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: function value(newVal, oldVal) {\n var selected = formatYMD(newVal) || '';\n var old = formatYMD(oldVal) || '';\n \n if (!datesEqual(selected, old)) {\n this.activeYMD = selected || this.activeYMD;\n this.selectedYMD = selected;\n }\n },\n selectedYMD: function 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: function context(newVal, oldVal) {\n if (!looseEqual(newVal, oldVal)) {\n this.$emit('context', newVal);\n }\n },\n hidden: function hidden(newVal) {\n // Reset the active focused day when hidden\n this.activeYMD = this.selectedYMD || formatYMD(this.value || this.constrainDate(this.initialDate || this.getToday())); // Enable/disable the live regions\n \n this.setLive(!newVal);\n }\n },\n created: function created() {\n var _this2 = this;\n \n this.$nextTick(function () {\n _this2.$emit('context', _this2.context);\n });\n },\n mounted: function mounted() {\n this.setLive(true);\n },\n \n /* istanbul ignore next */\n activated: function activated()\n /* istanbul ignore next */\n {\n this.setLive(true);\n },\n \n /* istanbul ignore next */\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n this.setLive(false);\n },\n beforeDestroy: function beforeDestroy() {\n this.setLive(false);\n },\n methods: {\n // Public method(s)\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.grid);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.grid);\n }\n },\n // Private methods\n setLive: function setLive(on) {\n var _this3 = this;\n \n if (on) {\n this.$nextTick(function () {\n requestAF(function () {\n _this3.isLive = true;\n });\n });\n } else {\n this.isLive = false;\n }\n },\n getToday: function getToday() {\n return parseYMD(createDate());\n },\n constrainDate: function constrainDate$1(date) {\n // Constrains a date between min and max\n // returns a new `Date` object instance\n return constrainDate(date, this.computedMin, this.computedMax);\n },\n emitSelected: function emitSelected(date) {\n var _this4 = this;\n \n // Performed in a `$nextTick()` to (probably) ensure\n // the input event has emitted first\n this.$nextTick(function () {\n _this4.$emit('selected', formatYMD(date) || '', parseYMD(date) || null);\n });\n },\n // Event handlers\n setGridFocusFlag: function setGridFocusFlag(evt) {\n // Sets the gridHasFocus flag to make date \"button\" look focused\n this.gridHasFocus = !this.disabled && evt.type === 'focus';\n },\n onKeydownWrapper: function onKeydownWrapper(evt) {\n // Calendar keyboard navigation\n // Handles PAGEUP/PAGEDOWN/END/HOME/LEFT/UP/RIGHT/DOWN\n // Focuses grid after updating\n var altKey = evt.altKey,\n ctrlKey = evt.ctrlKey,\n keyCode = evt.keyCode;\n \n if (!arrayIncludes([PAGEUP, PAGEDOWN, END, HOME, LEFT, UP, RIGHT, DOWN], keyCode)) {\n /* istanbul ignore next */\n return;\n }\n \n evt.preventDefault();\n evt.stopPropagation();\n var activeDate = createDate(this.activeDate);\n var checkDate = createDate(this.activeDate);\n var day = activeDate.getDate();\n var constrainedToday = this.constrainDate(this.getToday());\n var isRTL = this.isRTL;\n \n if (keyCode === PAGEUP) {\n // PAGEUP - Previous month/year\n activeDate = (altKey ? ctrlKey ? oneDecadeAgo : oneYearAgo : oneMonthAgo)(activeDate); // We check the first day of month to be in rage\n \n checkDate = createDate(activeDate);\n checkDate.setDate(1);\n } else if (keyCode === PAGEDOWN) {\n // PAGEDOWN - Next month/year\n activeDate = (altKey ? ctrlKey ? oneDecadeAhead : oneYearAhead : oneMonthAhead)(activeDate); // We check the last day of month to be in rage\n \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 activeDate = this.constrainDate(activeDate);\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 activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === UP) {\n // UP - Previous week\n activeDate.setDate(day - 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === DOWN) {\n // DOWN - Next week\n activeDate.setDate(day + 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === HOME) {\n // HOME - Today\n activeDate = constrainedToday;\n checkDate = activeDate;\n } else if (keyCode === END) {\n // END - Selected date, or today if no selected date\n activeDate = parseYMD(this.selectedDate) || constrainedToday;\n checkDate = activeDate;\n }\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 } // Ensure grid is focused\n \n \n this.focus();\n },\n onKeydownGrid: function onKeydownGrid(evt) {\n // Pressing enter/space on grid to select active date\n var keyCode = evt.keyCode;\n var activeDate = this.activeDate;\n \n if (keyCode === ENTER || keyCode === SPACE) {\n evt.preventDefault();\n evt.stopPropagation();\n \n if (!this.disabled && !this.readonly && !this.dateDisabled(activeDate)) {\n this.selectedYMD = formatYMD(activeDate);\n this.emitSelected(activeDate);\n } // Ensure grid is focused\n \n \n this.focus();\n }\n },\n onClickDay: function onClickDay(day) {\n // Clicking on a date \"button\" to select it\n var selectedDate = this.selectedDate;\n var activeDate = this.activeDate;\n var clickedDate = parseYMD(day.ymd);\n \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(datesEqual(clickedDate, selectedDate) ? selectedDate : clickedDate);\n this.emitSelected(clickedDate);\n }\n \n this.activeYMD = formatYMD(datesEqual(clickedDate, activeDate) ? activeDate : createDate(clickedDate)); // Ensure grid is focused\n \n this.focus();\n }\n },\n gotoPrevDecade: function gotoPrevDecade() {\n this.activeYMD = formatYMD(this.constrainDate(oneDecadeAgo(this.activeDate)));\n },\n gotoPrevYear: function gotoPrevYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAgo(this.activeDate)));\n },\n gotoPrevMonth: function gotoPrevMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAgo(this.activeDate)));\n },\n gotoCurrentMonth: function gotoCurrentMonth() {\n // TODO: Maybe this goto date should be configurable?\n this.activeYMD = formatYMD(this.constrainDate(this.getToday()));\n },\n gotoNextMonth: function gotoNextMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAhead(this.activeDate)));\n },\n gotoNextYear: function gotoNextYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAhead(this.activeDate)));\n },\n gotoNextDecade: function gotoNextDecade() {\n this.activeYMD = formatYMD(this.constrainDate(oneDecadeAhead(this.activeDate)));\n },\n onHeaderClick: function onHeaderClick() {\n if (!this.disabled) {\n this.activeYMD = this.selectedYMD || formatYMD(this.getToday());\n this.focus();\n }\n }\n },\n render: function render(h) {\n var _this5 = this;\n \n // If `hidden` prop is set, render just a placeholder node\n if (this.hidden) {\n return h();\n }\n \n var valueId = this.valueId,\n widgetId = this.widgetId,\n navId = this.navId,\n gridId = this.gridId,\n gridCaptionId = this.gridCaptionId,\n gridHelpId = this.gridHelpId,\n activeId = this.activeId,\n isLive = this.isLive,\n isRTL = this.isRTL,\n activeYMD = this.activeYMD,\n selectedYMD = this.selectedYMD,\n safeId = this.safeId;\n var hideDecadeNav = !this.showDecadeNav;\n var todayYMD = formatYMD(this.getToday());\n var highlightToday = !this.noHighlightToday; // Header showing current selected date\n \n var $header = h('output', {\n staticClass: 'form-control form-control-sm text-center',\n class: {\n 'text-muted': this.disabled,\n readonly: this.readonly || this.disabled\n },\n attrs: {\n id: valueId,\n for: gridId,\n role: 'status',\n tabindex: this.disabled ? null : '-1',\n // Mainly for testing purposes, as we do not know\n // the exact format `Intl` will format the date string\n 'data-selected': toString$1(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 on: {\n // Transfer focus/click to focus grid\n // and focus active date (or today if no selection)\n click: this.onHeaderClick,\n focus: this.onHeaderClick\n }\n }, this.selectedDate ? [// We use `bdi` elements here in case the label doesn't match the locale\n // Although IE 11 does not deal with at all (equivalent to a span)\n h('bdi', {\n staticClass: 'sr-only'\n }, \" (\".concat(toString$1(this.labelSelected), \") \")), h('bdi', this.formatDateString(this.selectedDate))] : this.labelNoDateSelected || \"\\xA0\" // ' '\n );\n $header = h('header', {\n staticClass: 'b-calendar-header',\n class: {\n 'sr-only': this.hideHeader\n },\n attrs: {\n title: this.selectedDate ? this.labelSelectedDate || null : null\n }\n }, [$header]); // Content for the date navigation buttons\n \n var navScope = {\n isRTL: isRTL\n };\n var navProps = {\n shiftV: 0.5\n };\n \n var navPrevProps = _objectSpread2(_objectSpread2({}, navProps), {}, {\n flipH: isRTL\n });\n \n var navNextProps = _objectSpread2(_objectSpread2({}, navProps), {}, {\n flipH: !isRTL\n });\n \n var $prevDecadeIcon = this.normalizeSlot('nav-prev-decade', navScope) || h(BIconChevronBarLeft, {\n props: navPrevProps\n });\n var $prevYearIcon = this.normalizeSlot('nav-prev-year', navScope) || h(BIconChevronDoubleLeft, {\n props: navPrevProps\n });\n var $prevMonthIcon = this.normalizeSlot('nav-prev-month', navScope) || h(BIconChevronLeft, {\n props: navPrevProps\n });\n var $thisMonthIcon = this.normalizeSlot('nav-this-month', navScope) || h(BIconCircleFill, {\n props: navProps\n });\n var $nextMonthIcon = this.normalizeSlot('nav-next-month', navScope) || h(BIconChevronLeft, {\n props: navNextProps\n });\n var $nextYearIcon = this.normalizeSlot('nav-next-year', navScope) || h(BIconChevronDoubleLeft, {\n props: navNextProps\n });\n var $nextDecadeIcon = this.normalizeSlot('nav-next-decade', navScope) || h(BIconChevronBarLeft, {\n props: navNextProps\n }); // Utility to create the date navigation buttons\n \n var makeNavBtn = function makeNavBtn(content, label, handler, btnDisabled, shortcut) {\n return h('button', {\n staticClass: 'btn btn-sm btn-outline-secondary border-0 flex-fill',\n class: {\n disabled: btnDisabled\n },\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 ? {} : {\n click: handler\n }\n }, [h('div', {\n attrs: {\n 'aria-hidden': 'true'\n }\n }, [content])]);\n }; // Generate the date navigation buttons\n \n \n var $nav = h('div', {\n staticClass: 'b-calendar-nav d-flex',\n attrs: {\n id: navId,\n role: 'group',\n 'aria-hidden': this.disabled ? 'true' : null,\n 'aria-label': this.labelNav || null,\n 'aria-controls': gridId\n }\n }, [hideDecadeNav ? h() : makeNavBtn($prevDecadeIcon, this.labelPrevDecade, this.gotoPrevDecade, this.prevDecadeDisabled, 'Ctrl+Alt+PageDown'), makeNavBtn($prevYearIcon, this.labelPrevYear, this.gotoPrevYear, this.prevYearDisabled, 'Alt+PageDown'), makeNavBtn($prevMonthIcon, this.labelPrevMonth, this.gotoPrevMonth, this.prevMonthDisabled, 'PageDown'), makeNavBtn($thisMonthIcon, this.labelCurrentMonth, this.gotoCurrentMonth, this.thisMonthDisabled, 'Home'), makeNavBtn($nextMonthIcon, this.labelNextMonth, this.gotoNextMonth, this.nextMonthDisabled, 'PageUp'), makeNavBtn($nextYearIcon, this.labelNextYear, this.gotoNextYear, this.nextYearDisabled, 'Alt+PageUp'), hideDecadeNav ? h() : makeNavBtn($nextDecadeIcon, this.labelNextDecade, this.gotoNextDecade, this.nextDecadeDisabled, 'Ctrl+Alt+PageUp')]); // Caption for calendar grid\n \n var $gridCaption = h('header', {\n key: 'grid-caption',\n staticClass: 'b-calendar-grid-caption text-center font-weight-bold',\n class: {\n 'text-muted': this.disabled\n },\n attrs: {\n id: gridCaptionId,\n 'aria-live': isLive ? 'polite' : null,\n 'aria-atomic': isLive ? 'true' : null\n }\n }, this.formatYearMonth(this.calendarFirstDay)); // Calendar weekday headings\n \n var $gridWeekDays = h('div', {\n staticClass: 'b-calendar-grid-weekdays row no-gutters border-bottom',\n attrs: {\n 'aria-hidden': 'true'\n }\n }, this.calendarHeadings.map(function (d, idx) {\n return h('small', {\n key: idx,\n staticClass: 'col text-truncate',\n class: {\n 'text-muted': _this5.disabled\n },\n attrs: {\n title: d.label === d.text ? null : d.label,\n 'aria-label': d.label\n }\n }, d.text);\n })); // Calendar day grid\n \n var $gridBody = this.calendar.map(function (week) {\n var $cells = week.map(function (day, dIndex) {\n var _class;\n \n var isSelected = day.ymd === selectedYMD;\n var isActive = day.ymd === activeYMD;\n var isToday = day.ymd === todayYMD;\n var idCell = safeId(\"_cell-\".concat(day.ymd, \"_\")); // \"fake\" button\n \n var $btn = h('span', {\n staticClass: 'btn border-0 rounded-circle text-nowrap',\n // Should we add some classes to signify if today/selected/etc?\n class: (_class = {\n // Give the fake button a focus ring\n focus: isActive && _this5.gridHasFocus,\n // Styling\n disabled: day.isDisabled || _this5.disabled,\n active: isSelected\n }, _defineProperty(_class, _this5.computedVariant, isSelected), _defineProperty(_class, _this5.computedTodayVariant, isToday && highlightToday && !isSelected && day.isThisMonth), _defineProperty(_class, 'btn-outline-light', !(isToday && highlightToday) && !isSelected && !isActive), _defineProperty(_class, 'btn-light', !(isToday && highlightToday) && !isSelected && isActive), _defineProperty(_class, 'text-muted', !day.isThisMonth && !isSelected), _defineProperty(_class, 'text-dark', !(isToday && highlightToday) && !isSelected && !isActive && day.isThisMonth), _defineProperty(_class, 'font-weight-bold', (isSelected || day.isThisMonth) && !day.isDisabled), _class),\n on: {\n click: function click() {\n return _this5.onClickDay(day);\n }\n }\n }, day.day);\n return h('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,\n // 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 || _this5.disabled ? 'true' : null,\n 'aria-label': [day.label, isSelected ? \"(\".concat(_this5.labelSelected, \")\") : null, isToday ? \"(\".concat(_this5.labelToday, \")\") : null].filter(identity).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 }, [$btn]);\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 \n return h('div', {\n key: week[0].ymd,\n staticClass: 'row no-gutters'\n }, $cells);\n });\n $gridBody = h('div', {\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 ? {\n pointerEvents: 'none'\n } : {}\n }, $gridBody);\n var $gridHelp = h('footer', {\n staticClass: 'b-calendar-grid-help border-top small text-muted text-center bg-light',\n attrs: {\n id: gridHelpId\n }\n }, [h('div', {\n staticClass: 'small'\n }, this.labelHelp)]);\n var $grid = h('div', {\n ref: 'grid',\n staticClass: 'b-calendar-grid form-control h-auto text-center',\n attrs: {\n id: gridId,\n role: 'application',\n tabindex: this.disabled ? null : '0',\n 'data-month': activeYMD.slice(0, -3),\n // `YYYY-MM`, mainly for testing\n 'aria-roledescription': this.labelCalendar || null,\n 'aria-labelledby': gridCaptionId,\n 'aria-describedby': gridHelpId,\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': activeId\n },\n on: {\n keydown: this.onKeydownGrid,\n focus: this.setGridFocusFlag,\n blur: this.setGridFocusFlag\n }\n }, [$gridCaption, $gridWeekDays, $gridBody, $gridHelp]); // Optional bottom slot\n \n var $slot = this.normalizeSlot('default');\n $slot = $slot ? h('footer', {\n staticClass: 'b-calendar-footer'\n }, $slot) : h();\n var $widget = h('div', {\n staticClass: 'b-calendar-inner',\n style: this.block ? {} : {\n width: this.width\n },\n attrs: {\n id: widgetId,\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': [// Should the attr (if present) go last?\n // Or should this attr be a prop?\n this.bvAttrs['aria-describedby'], valueId, gridHelpId].filter(identity).join(' ')\n },\n on: {\n keydown: this.onKeydownWrapper\n }\n }, [$header, $nav, $grid, $slot]); // Wrap in an outer div that can be styled\n \n return h('div', {\n staticClass: 'b-calendar',\n class: {\n 'd-block': this.block\n }\n }, [$widget]);\n }\n });\n \n var CalendarPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BCalendar: BCalendar\n }\n });\n \n // @vue/component\n var cardMixin = {\n props: {\n tag: {\n type: String,\n default: 'div'\n },\n bgVariant: {\n type: String // default: null\n \n },\n borderVariant: {\n type: String // default: null\n \n },\n textVariant: {\n type: String // default: null\n \n }\n }\n };\n \n var props$8 = {\n title: {\n type: String // default: null\n \n },\n titleTag: {\n type: String,\n default: 'h4'\n }\n }; // @vue/component\n \n var BCardTitle = /*#__PURE__*/Vue.extend({\n name: 'BCardTitle',\n functional: true,\n props: props$8,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.titleTag, a(data, {\n staticClass: 'card-title'\n }), children || toString$1(props.title));\n }\n });\n \n var NAME$b = 'BCardSubTitle';\n var props$9 = {\n subTitle: {\n type: String // default: null\n \n },\n subTitleTag: {\n type: String,\n default: 'h6'\n },\n subTitleTextVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$b, 'subTitleTextVariant');\n }\n }\n }; // @vue/component\n \n var BCardSubTitle = /*#__PURE__*/Vue.extend({\n name: NAME$b,\n functional: true,\n props: props$9,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.subTitleTag, a(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n }), children || toString$1(props.subTitle));\n }\n });\n \n var props$a = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'body'))), {}, {\n bodyClass: {\n type: [String, Object, Array] // default: null\n \n }\n }, props$8), props$9), {}, {\n overlay: {\n type: Boolean,\n default: false\n }\n }); // @vue/component\n \n var BCardBody = /*#__PURE__*/Vue.extend({\n name: 'BCardBody',\n functional: true,\n props: props$a,\n render: function render(h, _ref) {\n var _ref2;\n \n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var cardTitle = h();\n var cardSubTitle = h();\n var cardContent = children || [h()];\n \n if (props.title) {\n cardTitle = h(BCardTitle, {\n props: pluckProps(props$8, props)\n });\n }\n \n if (props.subTitle) {\n cardSubTitle = h(BCardSubTitle, {\n props: pluckProps(props$9, props),\n class: ['mb-2']\n });\n }\n \n return h(props.bodyTag, a(data, {\n staticClass: 'card-body',\n class: [(_ref2 = {\n 'card-img-overlay': props.overlay\n }, _defineProperty(_ref2, \"bg-\".concat(props.bodyBgVariant), props.bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(props.bodyBorderVariant), props.bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(props.bodyTextVariant), props.bodyTextVariant), _ref2), props.bodyClass || {}]\n }), [cardTitle, cardSubTitle].concat(_toConsumableArray(cardContent)));\n }\n });\n \n var props$b = _objectSpread2(_objectSpread2({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'header'))), {}, {\n header: {\n type: String // default: null\n \n },\n headerHtml: {\n type: String // default: null\n \n },\n headerClass: {\n type: [String, Object, Array] // default: null\n \n }\n }); // --- Main component ---\n // @vue/component\n \n var BCardHeader = /*#__PURE__*/Vue.extend({\n name: 'BCardHeader',\n functional: true,\n props: props$b,\n render: function render(h, _ref) {\n var _ref2;\n \n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var headerBgVariant = props.headerBgVariant,\n headerBorderVariant = props.headerBorderVariant,\n headerTextVariant = props.headerTextVariant;\n return h(props.headerTag, a(data, {\n staticClass: 'card-header',\n class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(headerBgVariant), headerBgVariant), _defineProperty(_ref2, \"border-\".concat(headerBorderVariant), headerBorderVariant), _defineProperty(_ref2, \"text-\".concat(headerTextVariant), headerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.headerHtml, props.header)\n }), children);\n }\n });\n \n var props$c = _objectSpread2(_objectSpread2({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'footer'))), {}, {\n footer: {\n type: String // default: null\n \n },\n footerHtml: {\n type: String // default: null\n \n },\n footerClass: {\n type: [String, Object, Array] // default: null\n \n }\n }); // --- Main component ---\n // @vue/component\n \n var BCardFooter = /*#__PURE__*/Vue.extend({\n name: 'BCardFooter',\n functional: true,\n props: props$c,\n render: function render(h, _ref) {\n var _ref2;\n \n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var footerBgVariant = props.footerBgVariant,\n footerBorderVariant = props.footerBorderVariant,\n footerTextVariant = props.footerTextVariant;\n return h(props.footerTag, a(data, {\n staticClass: 'card-footer',\n class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(footerBgVariant), footerBgVariant), _defineProperty(_ref2, \"border-\".concat(footerBorderVariant), footerBorderVariant), _defineProperty(_ref2, \"text-\".concat(footerTextVariant), footerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.footerHtml, props.footer)\n }), children);\n }\n });\n \n var props$d = {\n src: {\n type: String,\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] // default: null\n \n },\n width: {\n type: [Number, String] // default: null\n \n }\n }; // @vue/component\n \n var BCardImg = /*#__PURE__*/Vue.extend({\n name: 'BCardImg',\n functional: true,\n props: props$d,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var baseClass = 'card-img';\n \n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n }\n \n return h('img', a(data, {\n class: [baseClass],\n attrs: {\n src: props.src || null,\n alt: props.alt,\n height: props.height || null,\n width: props.width || null\n }\n }));\n }\n });\n \n var cardImgProps = copyProps(props$d, prefixPropName.bind(null, 'img'));\n cardImgProps.imgSrc.required = false;\n var props$e = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, props$a), props$b), props$c), cardImgProps), copyProps(cardMixin.props)), {}, {\n align: {\n type: String // default: null\n \n },\n noBody: {\n type: Boolean,\n default: false\n }\n }); // @vue/component\n \n var BCard = /*#__PURE__*/Vue.extend({\n name: 'BCard',\n functional: true,\n props: props$e,\n render: function render(h, _ref) {\n var _class;\n \n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var imgLeft = props.imgLeft,\n imgRight = props.imgRight,\n imgStart = props.imgStart,\n imgEnd = props.imgEnd,\n header = props.header,\n headerHtml = props.headerHtml,\n footer = props.footer,\n footerHtml = props.footerHtml,\n align = props.align,\n textVariant = props.textVariant,\n bgVariant = props.bgVariant,\n borderVariant = props.borderVariant;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $imgFirst = h();\n var $imgLast = h();\n \n if (props.imgSrc) {\n var $img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n });\n \n if (props.imgBottom) {\n $imgLast = $img;\n } else {\n $imgFirst = $img;\n }\n }\n \n var $header = h();\n var hasHeaderSlot = hasNormalizedSlot('header', $scopedSlots, $slots);\n \n if (hasHeaderSlot || header || headerHtml) {\n $header = h(BCardHeader, {\n props: pluckProps(props$b, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot('header', slotScope, $scopedSlots, $slots));\n }\n \n var $content = normalizeSlot('default', slotScope, $scopedSlots, $slots); // Wrap content in when `noBody` prop set\n \n if (!props.noBody) {\n $content = h(BCardBody, {\n props: pluckProps(props$a, props)\n }, $content);\n }\n \n var $footer = h();\n var hasFooterSlot = hasNormalizedSlot('footer', $scopedSlots, $slots);\n \n if (hasFooterSlot || footer || footerHtml) {\n $footer = h(BCardFooter, {\n props: pluckProps(props$c, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n }, normalizeSlot('footer', slotScope, $scopedSlots, $slots));\n }\n \n return h(props.tag, a(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': imgLeft || imgStart,\n 'flex-row-reverse': (imgRight || imgEnd) && !(imgLeft || imgStart)\n }, _defineProperty(_class, \"text-\".concat(align), align), _defineProperty(_class, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class, \"text-\".concat(textVariant), textVariant), _class)\n }), [$imgFirst, $header, $content, $footer, $imgLast]);\n }\n });\n \n var OBSERVER_PROP_NAME = '__bv__visibility_observer';\n var RX_ONLY_DIGITS = /^\\d+$/;\n \n var VisibilityObserver = /*#__PURE__*/function () {\n function VisibilityObserver(el, options, vnode) {\n _classCallCheck(this, VisibilityObserver);\n \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; // Create the observer instance (if possible)\n \n this.createObserver(vnode);\n }\n \n _createClass(VisibilityObserver, [{\n key: \"createObserver\",\n value: function createObserver(vnode) {\n var _this = this;\n \n // Remove any previous observer\n if (this.observer) {\n /* istanbul ignore next */\n this.stop();\n } // Should only be called once and `callback` prop should be a function\n \n \n if (this.doneOnce || !isFunction(this.callback)) {\n /* istanbul ignore next */\n return;\n } // Create the observer instance\n \n \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 (_unused) {\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 } // Start observing in a `$nextTick()` (to allow DOM to complete rendering)\n \n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n \n \n vnode.context.$nextTick(function () {\n requestAF(function () {\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 /* istanbul ignore next */\n \n }, {\n key: \"handler\",\n value: function handler(entries)\n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n {\n var entry = entries ? entries[0] : {};\n var isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0);\n \n if (isIntersecting !== this.visible) {\n this.visible = isIntersecting;\n this.callback(isIntersecting);\n \n if (this.once && this.visible) {\n this.doneOnce = true;\n this.stop();\n }\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n /* istanbul ignore next */\n this.observer && this.observer.disconnect();\n this.observer = null;\n }\n }]);\n \n return VisibilityObserver;\n }();\n \n var destroy = function destroy(el) {\n var observer = el[OBSERVER_PROP_NAME];\n \n if (observer && observer.stop) {\n observer.stop();\n }\n \n delete el[OBSERVER_PROP_NAME];\n };\n \n var bind = function bind(el, _ref, vnode) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n // `value` is the callback function\n var options = {\n margin: '0px',\n once: false,\n callback: value\n }; // Parse modifiers\n \n keys(modifiers).forEach(function (mod) {\n /* istanbul ignore else: Until is switched to use this directive */\n if (RX_ONLY_DIGITS.test(mod)) {\n options.margin = \"\".concat(mod, \"px\");\n } else if (mod.toLowerCase() === 'once') {\n options.once = true;\n }\n }); // Destroy any previous observer\n \n destroy(el); // Create new observer\n \n el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options, vnode); // Store the current modifiers on the object (cloned)\n \n el[OBSERVER_PROP_NAME]._prevModifiers = clone(modifiers);\n }; // When the directive options may have been updated (or element)\n \n \n var componentUpdated = function componentUpdated(el, _ref2, vnode) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n // Compare value/oldValue and modifiers to see if anything has changed\n // and if so, destroy old observer and create new observer\n \n /* istanbul ignore next */\n modifiers = clone(modifiers);\n /* istanbul ignore next */\n \n if (el && (value !== oldValue || !el[OBSERVER_PROP_NAME] || !looseEqual(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers))) {\n // Re-bind on element\n bind(el, {\n value: value,\n modifiers: modifiers\n }, vnode);\n }\n }; // When directive un-binds from element\n \n \n var unbind = function unbind(el) {\n // Remove the observer\n destroy(el);\n }; // Export the directive\n \n \n var VBVisible = {\n bind: bind,\n componentUpdated: componentUpdated,\n unbind: unbind\n };\n \n var NAME$c = 'BImg'; // Blank image with fill template\n \n var BLANK_TEMPLATE = '' + '' + '';\n var props$f = {\n src: {\n type: String // default: null\n \n },\n srcset: {\n type: [String, Array] // default: null\n \n },\n sizes: {\n type: [String, Array] // default: null\n \n },\n alt: {\n type: String,\n default: null\n },\n width: {\n type: [Number, String] // default: null\n \n },\n height: {\n type: [Number, String] // default: null\n \n },\n block: {\n type: Boolean,\n default: false\n },\n fluid: {\n type: Boolean,\n default: false\n },\n fluidGrow: {\n // Gives fluid images class `w-100` to make them grow to fit container\n type: Boolean,\n default: false\n },\n rounded: {\n // rounded can be:\n // false: no rounding of corners\n // true: slightly rounded corners\n // 'top': top corners rounded\n // 'right': right corners rounded\n // 'bottom': bottom corners rounded\n // 'left': left corners rounded\n // 'circle': circle/oval\n // '0': force rounding off\n type: [Boolean, String],\n default: false\n },\n thumbnail: {\n type: Boolean,\n default: false\n },\n left: {\n type: Boolean,\n default: false\n },\n right: {\n type: Boolean,\n default: false\n },\n center: {\n type: Boolean,\n default: false\n },\n blank: {\n type: Boolean,\n default: false\n },\n blankColor: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$c, 'blankColor');\n }\n }\n }; // --- Helper methods ---\n \n var makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString$1(width)).replace('%{h}', toString$1(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n }; // @vue/component\n \n \n var BImg = /*#__PURE__*/Vue.extend({\n name: NAME$c,\n functional: true,\n props: props$f,\n render: function render(h, _ref) {\n var _class;\n \n var props = _ref.props,\n data = _ref.data;\n var src = props.src;\n var width = toInteger(props.width) || null;\n var height = toInteger(props.height) || null;\n var align = null;\n var block = props.block;\n var srcset = concat(props.srcset).filter(identity).join(',');\n var sizes = concat(props.sizes).filter(identity).join(',');\n \n if (props.blank) {\n if (!height && width) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n \n if (!width && !height) {\n width = 1;\n height = 1;\n } // Make a blank SVG image\n \n \n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n \n srcset = null;\n sizes = null;\n }\n \n if (props.left) {\n align = 'float-left';\n } else if (props.right) {\n align = 'float-right';\n } else if (props.center) {\n align = 'mx-auto';\n block = true;\n }\n \n return h('img', a(data, {\n attrs: {\n src: src,\n alt: props.alt,\n width: width ? toString$1(width) : null,\n height: height ? toString$1(height) : null,\n srcset: srcset || null,\n sizes: sizes || null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || props.fluidGrow,\n 'w-100': props.fluidGrow,\n rounded: props.rounded === '' || props.rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(props.rounded), isString(props.rounded) && props.rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n });\n \n var NAME$d = 'BImgLazy';\n var props$g = {\n src: {\n type: String,\n required: true\n },\n srcset: {\n type: [String, Array] // default: null\n \n },\n sizes: {\n type: [String, Array] // default: null\n \n },\n alt: {\n type: String // default: null\n \n },\n width: {\n type: [Number, String] // default: null\n \n },\n height: {\n type: [Number, String] // default: null\n \n },\n blankSrc: {\n // If null, a blank image is generated\n type: String,\n default: null\n },\n blankColor: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$d, 'blankColor');\n }\n },\n blankWidth: {\n type: [Number, String] // default: null\n \n },\n blankHeight: {\n type: [Number, String] // default: null\n \n },\n show: {\n type: Boolean,\n default: false\n },\n fluid: {\n type: Boolean,\n default: false\n },\n fluidGrow: {\n type: Boolean,\n default: false\n },\n block: {\n type: Boolean,\n default: false\n },\n thumbnail: {\n type: Boolean,\n default: false\n },\n rounded: {\n type: [Boolean, String],\n default: false\n },\n left: {\n type: Boolean,\n default: false\n },\n right: {\n type: Boolean,\n default: false\n },\n center: {\n type: Boolean,\n default: false\n },\n offset: {\n // Distance away from viewport (in pixels) before being\n // considered \"visible\"\n type: [Number, String],\n default: 360\n }\n }; // @vue/component\n \n var BImgLazy = /*#__PURE__*/Vue.extend({\n name: NAME$d,\n directives: {\n bVisible: VBVisible\n },\n props: props$g,\n data: function data() {\n return {\n isShown: this.show\n };\n },\n computed: {\n computedSrc: function computedSrc() {\n return !this.blankSrc || this.isShown ? this.src : this.blankSrc;\n },\n computedBlank: function computedBlank() {\n return !(this.isShown || this.blankSrc);\n },\n computedWidth: function computedWidth() {\n return this.isShown ? this.width : this.blankWidth || this.width;\n },\n computedHeight: function computedHeight() {\n return this.isShown ? this.height : this.blankHeight || this.height;\n },\n computedSrcset: function computedSrcset() {\n var srcset = concat(this.srcset).filter(identity).join(',');\n return !this.blankSrc || this.isShown ? srcset : null;\n },\n computedSizes: function computedSizes() {\n var sizes = concat(this.sizes).filter(identity).join(',');\n return !this.blankSrc || this.isShown ? sizes : null;\n }\n },\n watch: {\n show: function show(newVal, oldVal) {\n if (newVal !== oldVal) {\n // If IntersectionObserver support is not available, image is always shown\n var visible = hasIntersectionObserverSupport ? newVal : true;\n this.isShown = visible;\n \n if (visible !== newVal) {\n // Ensure the show prop is synced (when no IntersectionObserver)\n this.$nextTick(this.updateShowProp);\n }\n }\n },\n isShown: function isShown(newVal, oldVal) {\n if (newVal !== oldVal) {\n // Update synched show prop\n this.updateShowProp();\n }\n }\n },\n mounted: function mounted() {\n // If IntersectionObserver is not available, image is always shown\n this.isShown = hasIntersectionObserverSupport ? this.show : true;\n },\n methods: {\n updateShowProp: function updateShowProp() {\n this.$emit('update:show', this.isShown);\n },\n doShow: function doShow(visible) {\n // If IntersectionObserver is not supported, the callback\n // will be called with `null` rather than `true` or `false`\n if ((visible || visible === null) && !this.isShown) {\n this.isShown = true;\n }\n }\n },\n render: function render(h) {\n var directives = [];\n \n if (!this.isShown) {\n var _modifiers;\n \n // We only add the visible directive if we are not shown\n directives.push({\n // Visible directive will silently do nothing if\n // IntersectionObserver is not supported\n name: 'b-visible',\n // Value expects a callback (passed one arg of `visible` = `true` or `false`)\n value: this.doShow,\n modifiers: (_modifiers = {}, _defineProperty(_modifiers, \"\".concat(toInteger(this.offset, 0)), true), _defineProperty(_modifiers, \"once\", true), _modifiers)\n });\n }\n \n return h(BImg, {\n directives: directives,\n props: {\n // Computed value props\n src: this.computedSrc,\n blank: this.computedBlank,\n width: this.computedWidth,\n height: this.computedHeight,\n srcset: this.computedSrcset || null,\n sizes: this.computedSizes || null,\n // Passthrough props\n alt: this.alt,\n blankColor: this.blankColor,\n fluid: this.fluid,\n fluidGrow: this.fluidGrow,\n block: this.block,\n thumbnail: this.thumbnail,\n rounded: this.rounded,\n left: this.left,\n right: this.right,\n center: this.center\n }\n });\n }\n });\n \n // The `omit()` util creates a new object, so we can just pass the original props\n \n var lazyProps = omit(props$g, ['left', 'right', 'center', 'block', 'rounded', 'thumbnail', 'fluid', 'fluidGrow']);\n var props$h = _objectSpread2(_objectSpread2({}, lazyProps), {}, {\n top: {\n type: Boolean,\n default: false\n },\n bottom: {\n type: Boolean,\n default: false\n },\n start: {\n type: Boolean,\n default: false\n },\n left: {\n // alias of 'start'\n type: Boolean,\n default: false\n },\n end: {\n type: Boolean,\n default: false\n },\n right: {\n // alias of 'end'\n type: Boolean,\n default: false\n }\n }); // @vue/component\n \n var BCardImgLazy = /*#__PURE__*/Vue.extend({\n name: 'BCardImgLazy',\n functional: true,\n props: props$h,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var baseClass = 'card-img';\n \n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n } // False out the left/center/right props before passing to b-img-lazy\n \n \n var lazyProps = _objectSpread2(_objectSpread2({}, props), {}, {\n left: false,\n right: false,\n center: false\n });\n \n return h(BImgLazy, a(data, {\n class: [baseClass],\n props: lazyProps\n }));\n }\n });\n \n var props$i = {\n textTag: {\n type: String,\n default: 'p'\n }\n }; // @vue/component\n \n var BCardText = /*#__PURE__*/Vue.extend({\n name: 'BCardText',\n functional: true,\n props: props$i,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.textTag, a(data, {\n staticClass: 'card-text'\n }), children);\n }\n });\n \n var props$j = {\n tag: {\n type: String,\n default: 'div'\n },\n deck: {\n type: Boolean,\n default: false\n },\n columns: {\n type: Boolean,\n default: false\n }\n }; // @vue/component\n \n var BCardGroup = /*#__PURE__*/Vue.extend({\n name: 'BCardGroup',\n functional: true,\n props: props$j,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, a(data, {\n class: props.deck ? 'card-deck' : props.columns ? 'card-columns' : 'card-group'\n }), children);\n }\n });\n \n var CardPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BCard: BCard,\n BCardHeader: BCardHeader,\n BCardBody: BCardBody,\n BCardTitle: BCardTitle,\n BCardSubTitle: BCardSubTitle,\n BCardFooter: BCardFooter,\n BCardImg: BCardImg,\n BCardImgLazy: BCardImgLazy,\n BCardText: BCardText,\n BCardGroup: BCardGroup\n }\n });\n \n var noop = function noop() {};\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 https://stackoverflow.com/questions/3219758\n */\n \n var observeDom = function observeDom(el, callback, options)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n // Handle cases where we might be passed a Vue instance\n el = el ? el.$el || el : null; // Early exit when we have no element\n \n /* istanbul ignore next: difficult to test in JSDOM */\n \n if (!isElement(el)) {\n return null;\n } // Exit and throw a warning when `MutationObserver` isn't available\n \n \n if (warnNoMutationObserverSupport('observeDom')) {\n return null;\n } // Define a new observer\n \n \n var obs = new MutationObs(function (mutations) {\n var changed = false; // 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 \n for (var i = 0; i < mutations.length && !changed; i++) {\n // The mutation record\n var mutation = mutations[i]; // Mutation type\n \n var type = mutation.type; // DOM node (could be any DOM node type - HTMLElement, Text, comment, etc.)\n \n var target = mutation.target; // Detect whether a change happened based on type and target\n \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 (type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0)) {\n // This includes HTMLElement and text nodes being\n // added/removed/re-arranged\n changed = true;\n }\n } // We only call the callback if a change that could affect\n // layout/size truly happened\n \n \n if (changed) {\n callback();\n }\n }); // Have the observer observe foo for changes in children, etc\n \n obs.observe(el, _objectSpread2({\n childList: true,\n subtree: true\n }, options)); // 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 \n return obs;\n };\n \n var EVENT_OPTIONS_PASSIVE = {\n passive: true\n };\n var EVENT_OPTIONS_NO_CAPTURE = {\n passive: true,\n capture: false\n }; // --- Utils ---\n // Normalize event options based on support of passive option\n // Exported only for testing purposes\n \n var parseEventOptions = function parseEventOptions(options) {\n /* istanbul ignore else: can't test in JSDOM, as it supports passive */\n if (hasPassiveEventSupport) {\n return isObject(options) ? options : {\n capture: !!options || false\n };\n } else {\n // Need to translate to actual Boolean value\n return !!(isObject(options) ? options.capture : options);\n }\n }; // Attach an event listener to an element\n \n var eventOn = function eventOn(el, evtName, handler, options) {\n if (el && el.addEventListener) {\n el.addEventListener(evtName, handler, parseEventOptions(options));\n }\n }; // Remove an event listener from an element\n \n var eventOff = function eventOff(el, evtName, handler, options) {\n if (el && el.removeEventListener) {\n el.removeEventListener(evtName, handler, parseEventOptions(options));\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\n \n var eventOnOff = function eventOnOff(on) {\n var method = on ? eventOn : eventOff;\n \n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n \n method.apply(void 0, args);\n };\n \n var NAME$e = 'BCarousel'; // Slide directional classes\n \n var DIRECTION = {\n next: {\n dirClass: 'carousel-item-left',\n overlayClass: 'carousel-item-next'\n },\n prev: {\n dirClass: 'carousel-item-right',\n overlayClass: 'carousel-item-prev'\n }\n }; // Fallback Transition duration (with a little buffer) in ms\n \n var TRANS_DURATION = 600 + 50; // Time for mouse compat events to fire after touch\n \n var TOUCH_EVENT_COMPAT_WAIT = 500; // Number of pixels to consider touch move a swipe\n \n var SWIPE_THRESHOLD = 40; // PointerEvent pointer types\n \n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n }; // Transition Event names\n \n var TransitionEndEvents = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'otransitionend oTransitionEnd',\n transition: 'transitionend'\n }; // Return the browser specific transitionEnd event name\n \n var getTransitionEndEvent = function getTransitionEndEvent(el) {\n for (var name in TransitionEndEvents) {\n if (!isUndefined(el.style[name])) {\n return TransitionEndEvents[name];\n }\n } // Fallback\n \n /* istanbul ignore next */\n \n \n return null;\n }; // @vue/component\n \n \n var BCarousel = /*#__PURE__*/Vue.extend({\n name: NAME$e,\n mixins: [idMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvCarousel: this\n };\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n labelPrev: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$e, 'labelPrev');\n }\n },\n labelNext: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$e, 'labelNext');\n }\n },\n labelGotoSlide: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$e, 'labelGotoSlide');\n }\n },\n labelIndicators: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$e, 'labelIndicators');\n }\n },\n interval: {\n type: Number,\n default: 5000\n },\n indicators: {\n type: Boolean,\n default: false\n },\n controls: {\n type: Boolean,\n default: false\n },\n noAnimation: {\n // Disable slide/fade animation\n type: Boolean,\n default: false\n },\n fade: {\n // Enable cross-fade animation instead of slide animation\n type: Boolean,\n default: false\n },\n noWrap: {\n // Disable wrapping/looping when start/end is reached\n type: Boolean,\n default: false\n },\n noTouch: {\n // Sniffed by carousel-slide\n type: Boolean,\n default: false\n },\n noHoverPause: {\n // Disable pause on hover\n type: Boolean,\n default: false\n },\n imgWidth: {\n // Sniffed by carousel-slide\n type: [Number, String] // default: undefined\n \n },\n imgHeight: {\n // Sniffed by carousel-slide\n type: [Number, String] // default: undefined\n \n },\n background: {\n type: String // default: undefined\n \n },\n value: {\n type: Number,\n default: 0\n }\n },\n data: function data() {\n return {\n index: this.value || 0,\n isSliding: false,\n transitionEndEvent: null,\n slides: [],\n direction: null,\n isPaused: !(toInteger(this.interval, 0) > 0),\n // Touch event handling values\n touchStartX: 0,\n touchDeltaX: 0\n };\n },\n computed: {\n numSlides: function numSlides() {\n return this.slides.length;\n }\n },\n watch: {\n value: function value(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.setSlide(toInteger(newVal, 0));\n }\n },\n interval: function interval(newVal, oldVal) {\n if (newVal === oldVal) {\n /* istanbul ignore next */\n return;\n }\n \n if (!newVal) {\n // Pausing slide show\n this.pause(false);\n } else {\n // Restarting or Changing interval\n this.pause(true);\n this.start(false);\n }\n },\n isPaused: function isPaused(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit(newVal ? 'paused' : 'unpaused');\n }\n },\n index: function index(to, from) {\n if (to === from || this.isSliding) {\n /* istanbul ignore next */\n return;\n }\n \n this.doSlide(to, from);\n }\n },\n created: function created() {\n // Create private non-reactive props\n this.$_interval = null;\n this.$_animationTimeout = null;\n this.$_touchTimeout = null;\n this.$_observer = null; // Set initial paused state\n \n this.isPaused = !(toInteger(this.interval, 0) > 0);\n },\n mounted: function mounted() {\n // Cache current browser transitionend event name\n this.transitionEndEvent = getTransitionEndEvent(this.$el) || null; // Get all slides\n \n this.updateSlides(); // Observe child changes so we can update slide list\n \n this.setObserver(true);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearInterval();\n this.clearAnimationTimeout();\n this.clearTouchTimeout();\n this.setObserver(false);\n },\n methods: {\n clearInterval: function (_clearInterval) {\n function clearInterval() {\n return _clearInterval.apply(this, arguments);\n }\n \n clearInterval.toString = function () {\n return _clearInterval.toString();\n };\n \n return clearInterval;\n }(function () {\n clearInterval(this.$_interval);\n this.$_interval = null;\n }),\n clearAnimationTimeout: function clearAnimationTimeout() {\n clearTimeout(this.$_animationTimeout);\n this.$_animationTimeout = null;\n },\n clearTouchTimeout: function clearTouchTimeout() {\n clearTimeout(this.$_touchTimeout);\n this.$_touchTimeout = null;\n },\n setObserver: function setObserver() {\n var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.$_observer && this.$_observer.disconnect();\n this.$_observer = null;\n \n if (on) {\n this.$_observer = observeDom(this.$refs.inner, this.updateSlides.bind(this), {\n subtree: false,\n childList: true,\n attributes: true,\n attributeFilter: ['id']\n });\n }\n },\n // Set slide\n setSlide: function setSlide(slide) {\n var _this = this;\n \n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n \n // Don't animate when page is not visible\n \n /* istanbul ignore if: difficult to test */\n if (isBrowser && document.visibilityState && document.hidden) {\n return;\n }\n \n var noWrap = this.noWrap;\n var numSlides = this.numSlides; // Make sure we have an integer (you never know!)\n \n slide = mathFloor(slide); // Don't do anything if nothing to slide to\n \n if (numSlides === 0) {\n return;\n } // Don't change slide while transitioning, wait until transition is done\n \n \n if (this.isSliding) {\n // Schedule slide after sliding complete\n this.$once('sliding-end', function () {\n return _this.setSlide(slide, direction);\n });\n return;\n }\n \n this.direction = direction; // Set new slide index\n // Wrap around if necessary (if no-wrap not enabled)\n \n this.index = slide >= numSlides ? noWrap ? numSlides - 1 : 0 : slide < 0 ? noWrap ? 0 : numSlides - 1 : slide; // Ensure the v-model is synched up if no-wrap is enabled\n // and user tried to slide pass either ends\n \n if (noWrap && this.index !== slide && this.index !== this.value) {\n this.$emit('input', this.index);\n }\n },\n // Previous slide\n prev: function prev() {\n this.setSlide(this.index - 1, 'prev');\n },\n // Next slide\n next: function next() {\n this.setSlide(this.index + 1, 'next');\n },\n // Pause auto rotation\n pause: function pause(evt) {\n if (!evt) {\n this.isPaused = true;\n }\n \n this.clearInterval();\n },\n // Start auto rotate slides\n start: function start(evt) {\n if (!evt) {\n this.isPaused = false;\n }\n /* istanbul ignore next: most likely will never happen, but just in case */\n \n \n this.clearInterval(); // Don't start if no interval, or less than 2 slides\n \n if (this.interval && this.numSlides > 1) {\n this.$_interval = setInterval(this.next, mathMax(1000, this.interval));\n }\n },\n // Restart auto rotate slides when focus/hover leaves the carousel\n \n /* istanbul ignore next */\n restart: function restart()\n /* istanbul ignore next: difficult to test */\n {\n if (!this.$el.contains(getActiveElement())) {\n this.start();\n }\n },\n doSlide: function doSlide(to, from) {\n var _this2 = this;\n \n var isCycling = Boolean(this.interval); // Determine sliding direction\n \n var direction = this.calcDirection(this.direction, from, to);\n var overlayClass = direction.overlayClass;\n var dirClass = direction.dirClass; // Determine current and next slides\n \n var currentSlide = this.slides[from];\n var nextSlide = this.slides[to]; // Don't do anything if there aren't any slides to slide to\n \n if (!currentSlide || !nextSlide) {\n /* istanbul ignore next */\n return;\n } // Start animating\n \n \n this.isSliding = true;\n \n if (isCycling) {\n this.pause(false);\n }\n \n this.$emit('sliding-start', to); // Update v-model\n \n this.$emit('input', this.index);\n \n if (this.noAnimation) {\n addClass(nextSlide, 'active');\n removeClass(currentSlide, 'active');\n this.isSliding = false; // Notify ourselves that we're done sliding (slid)\n \n this.$nextTick(function () {\n return _this2.$emit('sliding-end', to);\n });\n } else {\n addClass(nextSlide, overlayClass); // Trigger a reflow of next slide\n \n reflow(nextSlide);\n addClass(currentSlide, dirClass);\n addClass(nextSlide, dirClass); // Transition End handler\n \n var called = false;\n /* istanbul ignore next: difficult to test */\n \n var onceTransEnd = function onceTransEnd() {\n if (called) {\n return;\n }\n \n called = true;\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n \n if (_this2.transitionEndEvent) {\n var events = _this2.transitionEndEvent.split(/\\s+/);\n \n events.forEach(function (evt) {\n return eventOff(nextSlide, evt, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE);\n });\n }\n \n _this2.clearAnimationTimeout();\n \n removeClass(nextSlide, dirClass);\n removeClass(nextSlide, overlayClass);\n addClass(nextSlide, 'active');\n removeClass(currentSlide, 'active');\n removeClass(currentSlide, dirClass);\n removeClass(currentSlide, overlayClass);\n setAttr(currentSlide, 'aria-current', 'false');\n setAttr(nextSlide, 'aria-current', 'true');\n setAttr(currentSlide, 'aria-hidden', 'true');\n setAttr(nextSlide, 'aria-hidden', 'false');\n _this2.isSliding = false;\n _this2.direction = null; // Notify ourselves that we're done sliding (slid)\n \n _this2.$nextTick(function () {\n return _this2.$emit('sliding-end', to);\n });\n }; // Set up transitionend handler\n \n /* istanbul ignore if: transition events cant be tested in JSDOM */\n \n \n if (this.transitionEndEvent) {\n var events = this.transitionEndEvent.split(/\\s+/);\n events.forEach(function (event) {\n return eventOn(nextSlide, event, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE);\n });\n } // Fallback to setTimeout()\n \n \n this.$_animationTimeout = setTimeout(onceTransEnd, TRANS_DURATION);\n }\n \n if (isCycling) {\n this.start(false);\n }\n },\n // Update slide list\n updateSlides: function updateSlides() {\n this.pause(true); // Get all slides as DOM elements\n \n this.slides = selectAll('.carousel-item', this.$refs.inner);\n var numSlides = this.slides.length; // Keep slide number in range\n \n var index = mathMax(0, mathMin(mathFloor(this.index), numSlides - 1));\n this.slides.forEach(function (slide, idx) {\n var n = idx + 1;\n \n if (idx === index) {\n addClass(slide, 'active');\n setAttr(slide, 'aria-current', 'true');\n } else {\n removeClass(slide, 'active');\n setAttr(slide, 'aria-current', 'false');\n }\n \n setAttr(slide, 'aria-posinset', String(n));\n setAttr(slide, 'aria-setsize', String(numSlides));\n }); // Set slide as active\n \n this.setSlide(index);\n this.start(this.isPaused);\n },\n calcDirection: function calcDirection() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var curIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var nextIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n \n if (!direction) {\n return nextIndex > curIndex ? DIRECTION.next : DIRECTION.prev;\n }\n \n return DIRECTION[direction];\n },\n handleClick: function handleClick(evt, fn) {\n var keyCode = evt.keyCode;\n \n if (evt.type === 'click' || keyCode === KEY_CODES.SPACE || keyCode === KEY_CODES.ENTER) {\n evt.preventDefault();\n evt.stopPropagation();\n fn();\n }\n },\n \n /* istanbul ignore next */\n handleSwipe: function handleSwipe()\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n var absDeltaX = mathAbs(this.touchDeltaX);\n \n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n \n var direction = absDeltaX / this.touchDeltaX; // Reset touch delta X\n // https://github.com/twbs/bootstrap/pull/28558\n \n this.touchDeltaX = 0;\n \n if (direction > 0) {\n // Swipe left\n this.prev();\n } else if (direction < 0) {\n // Swipe right\n this.next();\n }\n },\n \n /* istanbul ignore next */\n touchStart: function touchStart(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n if (hasPointerEventSupport && PointerType[evt.pointerType.toUpperCase()]) {\n this.touchStartX = evt.clientX;\n } else if (!hasPointerEventSupport) {\n this.touchStartX = evt.touches[0].clientX;\n }\n },\n \n /* istanbul ignore next */\n touchMove: function touchMove(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n // Ensure swiping with one touch and not pinching\n if (evt.touches && evt.touches.length > 1) {\n this.touchDeltaX = 0;\n } else {\n this.touchDeltaX = evt.touches[0].clientX - this.touchStartX;\n }\n },\n \n /* istanbul ignore next */\n touchEnd: function touchEnd(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n if (hasPointerEventSupport && PointerType[evt.pointerType.toUpperCase()]) {\n this.touchDeltaX = evt.clientX - this.touchStartX;\n }\n \n this.handleSwipe(); // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n \n this.pause(false);\n this.clearTouchTimeout();\n this.$_touchTimeout = setTimeout(this.start, TOUCH_EVENT_COMPAT_WAIT + mathMax(1000, this.interval));\n }\n },\n render: function render(h) {\n var _this3 = this;\n \n // Wrapper for slides\n var inner = h('div', {\n ref: 'inner',\n class: ['carousel-inner'],\n attrs: {\n id: this.safeId('__BV_inner_'),\n role: 'list'\n }\n }, [this.normalizeSlot('default')]); // Prev and next controls\n \n var controls = h();\n \n if (this.controls) {\n var prevHandler = function prevHandler(evt) {\n /* istanbul ignore next */\n if (!_this3.isSliding) {\n _this3.handleClick(evt, _this3.prev);\n } else {\n evt.preventDefault();\n }\n };\n \n var nextHandler = function nextHandler(evt) {\n /* istanbul ignore next */\n if (!_this3.isSliding) {\n _this3.handleClick(evt, _this3.next);\n } else {\n evt.preventDefault();\n }\n };\n \n controls = [h('a', {\n class: ['carousel-control-prev'],\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': this.safeId('__BV_inner_'),\n 'aria-disabled': this.isSliding ? 'true' : null\n },\n on: {\n click: prevHandler,\n keydown: prevHandler\n }\n }, [h('span', {\n class: ['carousel-control-prev-icon'],\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: ['sr-only']\n }, [this.labelPrev])]), h('a', {\n class: ['carousel-control-next'],\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': this.safeId('__BV_inner_'),\n 'aria-disabled': this.isSliding ? 'true' : null\n },\n on: {\n click: nextHandler,\n keydown: nextHandler\n }\n }, [h('span', {\n class: ['carousel-control-next-icon'],\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: ['sr-only']\n }, [this.labelNext])])];\n } // Indicators\n \n \n var indicators = h('ol', {\n class: ['carousel-indicators'],\n directives: [{\n name: 'show',\n rawName: 'v-show',\n value: this.indicators,\n expression: 'indicators'\n }],\n attrs: {\n id: this.safeId('__BV_indicators_'),\n 'aria-hidden': this.indicators ? 'false' : 'true',\n 'aria-label': this.labelIndicators,\n 'aria-owns': this.safeId('__BV_inner_')\n }\n }, this.slides.map(function (slide, n) {\n return h('li', {\n key: \"slide_\".concat(n),\n class: {\n active: n === _this3.index\n },\n attrs: {\n role: 'button',\n id: _this3.safeId(\"__BV_indicator_\".concat(n + 1, \"_\")),\n tabindex: _this3.indicators ? '0' : '-1',\n 'aria-current': n === _this3.index ? 'true' : 'false',\n 'aria-label': \"\".concat(_this3.labelGotoSlide, \" \").concat(n + 1),\n 'aria-describedby': _this3.slides[n].id || null,\n 'aria-controls': _this3.safeId('__BV_inner_')\n },\n on: {\n click: function click(evt) {\n _this3.handleClick(evt, function () {\n _this3.setSlide(n);\n });\n },\n keydown: function keydown(evt) {\n _this3.handleClick(evt, function () {\n _this3.setSlide(n);\n });\n }\n }\n });\n }));\n var on = {\n mouseenter: this.noHoverPause ? noop : this.pause,\n mouseleave: this.noHoverPause ? noop : this.restart,\n focusin: this.pause,\n focusout: this.restart,\n keydown: function keydown(evt) {\n if (/input|textarea/i.test(evt.target.tagName)) {\n /* istanbul ignore next */\n return;\n }\n \n var keyCode = evt.keyCode;\n \n if (keyCode === KEY_CODES.LEFT || keyCode === KEY_CODES.RIGHT) {\n evt.preventDefault();\n evt.stopPropagation();\n \n _this3[keyCode === KEY_CODES.LEFT ? 'prev' : 'next']();\n }\n }\n }; // Touch support event handlers for environment\n \n if (!this.noTouch && hasTouchSupport) {\n // Attach appropriate listeners (prepend event name with '&' for passive mode)\n \n /* istanbul ignore next: JSDOM doesn't support touch events */\n if (hasPointerEventSupport) {\n on['&pointerdown'] = this.touchStart;\n on['&pointerup'] = this.touchEnd;\n } else {\n on['&touchstart'] = this.touchStart;\n on['&touchmove'] = this.touchMove;\n on['&touchend'] = this.touchEnd;\n }\n } // Return the carousel\n \n \n return h('div', {\n staticClass: 'carousel',\n class: {\n slide: !this.noAnimation,\n 'carousel-fade': !this.noAnimation && this.fade,\n 'pointer-event': !this.noTouch && hasTouchSupport && hasPointerEventSupport\n },\n style: {\n background: this.background\n },\n attrs: {\n role: 'region',\n id: this.safeId(),\n 'aria-busy': this.isSliding ? 'true' : 'false'\n },\n on: on\n }, [inner, controls, indicators]);\n }\n });\n \n var imgProps = {\n imgSrc: {\n type: String // default: undefined\n \n },\n imgAlt: {\n type: String // default: undefined\n \n },\n imgWidth: {\n type: [Number, String] // default: undefined\n \n },\n imgHeight: {\n type: [Number, String] // default: undefined\n \n },\n imgBlank: {\n type: Boolean,\n default: false\n },\n imgBlankColor: {\n type: String,\n default: 'transparent'\n }\n };\n var props$k = _objectSpread2(_objectSpread2({}, imgProps), {}, {\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 }); // --- Main component ---\n // @vue/component\n \n var BCarouselSlide = /*#__PURE__*/Vue.extend({\n name: 'BCarouselSlide',\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n bvCarousel: {\n default: function _default() {\n return {\n // Explicitly disable touch if not a child of carousel\n noTouch: true\n };\n }\n }\n },\n props: props$k,\n computed: {\n contentClasses: function contentClasses() {\n return [this.contentVisibleUp ? 'd-none' : '', this.contentVisibleUp ? \"d-\".concat(this.contentVisibleUp, \"-block\") : ''];\n },\n computedWidth: function computedWidth() {\n // Use local width, or try parent width\n return this.imgWidth || this.bvCarousel.imgWidth || null;\n },\n computedHeight: function computedHeight() {\n // Use local height, or try parent height\n return this.imgHeight || this.bvCarousel.imgHeight || null;\n }\n },\n render: function render(h) {\n var $img = this.normalizeSlot('img');\n \n if (!$img && (this.imgSrc || this.imgBlank)) {\n var on = {}; // Touch support event handler\n \n /* istanbul ignore if: difficult to test in JSDOM */\n \n if (!this.bvCarousel.noTouch && hasTouchSupport) {\n on.dragstart = function (evt) {\n evt.preventDefault();\n };\n }\n \n $img = h(BImg, {\n props: _objectSpread2(_objectSpread2({}, pluckProps(imgProps, this.$props, unprefixPropName.bind(null, 'img'))), {}, {\n width: this.computedWidth,\n height: this.computedHeight,\n fluidGrow: true,\n block: true\n }),\n on: on\n });\n }\n \n var $contentChildren = [// Caption\n this.caption || this.captionHtml ? h(this.captionTag, {\n domProps: htmlOrText(this.captionHtml, this.caption)\n }) : false, // Text\n this.text || this.textHtml ? h(this.textTag, {\n domProps: htmlOrText(this.textHtml, this.text)\n }) : false, // Children\n this.normalizeSlot('default') || false];\n var $content = h();\n \n if ($contentChildren.some(Boolean)) {\n $content = h(this.contentTag, {\n staticClass: 'carousel-caption',\n class: this.contentClasses\n }, $contentChildren.map(function ($child) {\n return $child || h();\n }));\n }\n \n return h('div', {\n staticClass: 'carousel-item',\n style: {\n background: this.background || this.bvCarousel.background || null\n },\n attrs: {\n id: this.safeId(),\n role: 'listitem'\n }\n }, [$img, $content]);\n }\n });\n \n var CarouselPlugin =\n /*#__PURE*/\n pluginFactory({\n components: {\n BCarousel: BCarousel,\n BCarouselSlide: BCarouselSlide\n }\n });\n \n // Generic collapse transion helper component\n \n var onEnter = function onEnter(el) {\n el.style.height = 0; // Animaton frame delay needed for `appear` to work\n \n requestAF(function () {\n reflow(el);\n el.style.height = \"\".concat(el.scrollHeight, \"px\");\n });\n };\n \n var onAfterEnter = function onAfterEnter(el) {\n el.style.height = null;\n };\n \n var onLeave = function onLeave(el) {\n el.style.height = 'auto';\n el.style.display = 'block';\n el.style.height = \"\".concat(getBCR(el).height, \"px\");\n reflow(el);\n el.style.height = 0;\n };\n \n var onAfterLeave = function onAfterLeave(el) {\n el.style.height = null;\n }; // Default transition props\n // `appear` will use the enter classes\n \n \n var TRANSITION_PROPS = {\n css: true,\n enterClass: '',\n enterActiveClass: 'collapsing',\n enterToClass: 'collapse show',\n leaveClass: 'collapse show',\n leaveActiveClass: 'collapsing',\n leaveToClass: 'collapse'\n }; // Default transition handlers\n // `appear` will use the enter handlers\n \n var TRANSITION_HANDLERS = {\n enter: onEnter,\n afterEnter: onAfterEnter,\n leave: onLeave,\n afterLeave: onAfterLeave\n }; // @vue/component\n \n var BVCollapse = /*#__PURE__*/Vue.extend({\n name: 'BVCollapse',\n functional: true,\n props: {\n appear: {\n // If `true` (and `visible` is `true` on mount), animate initially visible\n type: Boolean,\n default: false\n }\n },\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('transition', // We merge in the `appear` prop last\n a(data, {\n props: TRANSITION_PROPS,\n on: TRANSITION_HANDLERS\n }, {\n props: props\n }), // Note: `` supports a single root element only\n children);\n }\n });\n \n // @vue/component\n var listenOnRootMixin = {\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 */\n listenOnRoot: function listenOnRoot(event, callback) {\n var _this = this;\n \n this.$root.$on(event, callback);\n this.$on('hook:beforeDestroy', function () {\n _this.$root.$off(event, callback);\n });\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 */\n listenOnRootOnce: function listenOnRootOnce(event, callback) {\n var _this2 = this;\n \n this.$root.$once(event, callback);\n this.$on('hook:beforeDestroy', function () {\n _this2.$root.$off(event, callback);\n });\n },\n \n /**\n * Convenience method for calling `vm.$emit()` on `vm.$root`\n *\n * @param {string} event\n * @param {*} args\n */\n emitOnRoot: function emitOnRoot(event) {\n var _this$$root;\n \n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n \n (_this$$root = this.$root).$emit.apply(_this$$root, [event].concat(args));\n }\n }\n };\n \n var ENTER$1 = KEY_CODES.ENTER,\n SPACE$1 = KEY_CODES.SPACE; // Classes to apply to trigger element\n \n var CLASS_BV_TOGGLE_COLLAPSED = 'collapsed';\n var CLASS_BV_TOGGLE_NOT_COLLAPSED = 'not-collapsed'; // Property key for handler storage\n \n var BV_BASE = '__BV_toggle'; // Root event listener property (Function)\n \n var BV_TOGGLE_ROOT_HANDLER = \"\".concat(BV_BASE, \"_HANDLER__\"); // Trigger element click handler property (Function)\n \n var BV_TOGGLE_CLICK_HANDLER = \"\".concat(BV_BASE, \"_CLICK__\"); // Target visibility state property (Boolean)\n \n var BV_TOGGLE_STATE = \"\".concat(BV_BASE, \"_STATE__\"); // Target ID list property (Array)\n \n var BV_TOGGLE_TARGETS = \"\".concat(BV_BASE, \"_TARGETS__\"); // Commonly used strings\n \n var STRING_FALSE = 'false';\n var STRING_TRUE = 'true'; // Commonly used attribute names\n \n var ATTR_ARIA_CONTROLS = 'aria-controls';\n var ATTR_ARIA_EXPANDED = 'aria-expanded';\n var ATTR_ROLE = 'role';\n var ATTR_TABINDEX = 'tabindex'; // Emitted control event for collapse (emitted to collapse)\n \n var EVENT_TOGGLE = 'bv::toggle::collapse'; // Listen to event for toggle state update (emitted by collapse)\n \n var EVENT_STATE = 'bv::collapse::state'; // Private event emitted on `$root` to ensure the toggle state is always synced\n // Gets emitted even if the state of b-collapse has not changed\n // This event is NOT to be documented as people should not be using it\n \n var EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // Private event we send to collapse to request state update sync event\n \n var EVENT_STATE_REQUEST = 'bv::request::collapse::state';\n var KEYDOWN_KEY_CODES = [ENTER$1, SPACE$1];\n var RX_HASH = /^#/;\n var RX_HASH_ID = /^#[A-Za-z]+[\\w\\-:.]*$/;\n var RX_SPLIT_SEPARATOR = /\\s+/; // --- Helper methods ---\n \n var isNonStandardTag$1 = function isNonStandardTag(el) {\n return !arrayIncludes(['button', 'a'], el.tagName.toLowerCase());\n };\n \n var getTargets = function getTargets(_ref, el) {\n var modifiers = _ref.modifiers,\n arg = _ref.arg,\n value = _ref.value;\n // Any modifiers are considered target IDs\n var targets = keys(modifiers || {}); // If value is a string, split out individual targets (if space delimited)\n \n value = isString(value) ? value.split(RX_SPLIT_SEPARATOR) : value; // Support target ID as link href (`href=\"#id\"`)\n \n if (isTag(el.tagName, 'a')) {\n var href = getAttr(el, 'href') || '';\n \n if (RX_HASH_ID.test(href)) {\n targets.push(href.replace(RX_HASH, ''));\n }\n } // Add ID from `arg` (if provided), and support value\n // as a single string ID or an array of string IDs\n // If `value` is not an array or string, then it gets filtered out\n \n \n concat(arg, value).forEach(function (t) {\n return isString(t) && targets.push(t);\n }); // Return only unique and truthy target IDs\n \n return targets.filter(function (t, index, arr) {\n return t && arr.indexOf(t) === index;\n });\n };\n \n var removeClickListener = function removeClickListener(el) {\n var handler = el[BV_TOGGLE_CLICK_HANDLER];\n \n if (handler) {\n eventOff(el, 'click', handler);\n eventOff(el, 'keydown', handler);\n }\n \n el[BV_TOGGLE_CLICK_HANDLER] = null;\n };\n \n var addClickListener = function addClickListener(el, vnode) {\n removeClickListener(el);\n \n if (vnode.context) {\n var handler = function handler(evt) {\n if (!(evt.type === 'keydown' && !arrayIncludes(KEYDOWN_KEY_CODES, evt.keyCode)) && !isDisabled(el)) {\n var targets = el[BV_TOGGLE_TARGETS] || [];\n targets.forEach(function (target) {\n vnode.context.$root.$emit(EVENT_TOGGLE, target);\n });\n }\n };\n \n el[BV_TOGGLE_CLICK_HANDLER] = handler;\n eventOn(el, 'click', handler);\n \n if (isNonStandardTag$1(el)) {\n eventOn(el, 'keydown', handler);\n }\n }\n };\n \n var removeRootListeners = function removeRootListeners(el, vnode) {\n if (el[BV_TOGGLE_ROOT_HANDLER] && vnode.context) {\n vnode.context.$root.$off([EVENT_STATE, EVENT_STATE_SYNC], el[BV_TOGGLE_ROOT_HANDLER]);\n }\n \n el[BV_TOGGLE_ROOT_HANDLER] = null;\n };\n \n var addRootListeners = function addRootListeners(el, vnode) {\n removeRootListeners(el, vnode);\n \n if (vnode.context) {\n var handler = function handler(id, state) {\n // `state` will be `true` if target is expanded\n if (arrayIncludes(el[BV_TOGGLE_TARGETS] || [], id)) {\n // Set/Clear 'collapsed' visibility class state\n el[BV_TOGGLE_STATE] = state; // Set `aria-expanded` and class state on trigger element\n \n setToggleState(el, state);\n }\n };\n \n el[BV_TOGGLE_ROOT_HANDLER] = handler; // Listen for toggle state changes (public) and sync (private)\n \n vnode.context.$root.$on([EVENT_STATE, EVENT_STATE_SYNC], handler);\n }\n };\n \n var setToggleState = function setToggleState(el, state) {\n // State refers to the visibility of the collapse/sidebar\n if (state) {\n removeClass(el, CLASS_BV_TOGGLE_COLLAPSED);\n addClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED);\n setAttr(el, ATTR_ARIA_EXPANDED, STRING_TRUE);\n } else {\n removeClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED);\n addClass(el, CLASS_BV_TOGGLE_COLLAPSED);\n setAttr(el, ATTR_ARIA_EXPANDED, STRING_FALSE);\n }\n }; // Reset and remove a property from the provided element\n \n \n var resetProp = function resetProp(el, prop) {\n el[prop] = null;\n delete el[prop];\n }; // Handle directive updates\n \n \n var handleUpdate = function handleUpdate(el, binding, vnode) {\n /* istanbul ignore next: should never happen */\n if (!isBrowser || !vnode.context) {\n return;\n } // If element is not a button or link, we add `role=\"button\"`\n // and `tabindex=\"0\"` for accessibility reasons\n \n \n if (isNonStandardTag$1(el)) {\n if (!hasAttr(el, ATTR_ROLE)) {\n setAttr(el, ATTR_ROLE, 'button');\n }\n \n if (!hasAttr(el, ATTR_TABINDEX)) {\n setAttr(el, ATTR_TABINDEX, '0');\n }\n } // Ensure the collapse class and `aria-*` attributes persist\n // after element is updated (either by parent re-rendering\n // or changes to this element or its contents)\n \n \n setToggleState(el, el[BV_TOGGLE_STATE]); // Parse list of target IDs\n \n var targets = getTargets(binding, el);\n /* istanbul ignore else */\n // Ensure the `aria-controls` hasn't been overwritten\n // or removed when vnode updates\n \n if (targets.length) {\n setAttr(el, ATTR_ARIA_CONTROLS, targets.join(' '));\n } else {\n removeAttr(el, ATTR_ARIA_CONTROLS);\n } // Add/Update our click listener(s)\n \n \n addClickListener(el, vnode); // If targets array has changed, update\n \n if (!looseEqual(targets, el[BV_TOGGLE_TARGETS])) {\n // Update targets array to element storage\n el[BV_TOGGLE_TARGETS] = targets; // Ensure `aria-controls` is up to date\n // Request a state update from targets so that we can\n // ensure expanded state is correct (in most cases)\n \n targets.forEach(function (target) {\n vnode.context.$root.$emit(EVENT_STATE_REQUEST, target);\n });\n }\n };\n /*\n * Export our directive\n */\n \n \n var VBToggle = {\n bind: function bind(el, binding, vnode) {\n // State is initially collapsed until we receive a state event\n el[BV_TOGGLE_STATE] = false; // Assume no targets initially\n \n el[BV_TOGGLE_TARGETS] = []; // Add our root listeners\n \n addRootListeners(el, vnode); // Initial update of trigger\n \n handleUpdate(el, binding, vnode);\n },\n componentUpdated: handleUpdate,\n updated: handleUpdate,\n unbind: function unbind(el, binding, vnode) {\n removeClickListener(el); // Remove our $root listener\n \n removeRootListeners(el, vnode); // Reset custom props\n \n resetProp(el, BV_TOGGLE_ROOT_HANDLER);\n resetProp(el, BV_TOGGLE_CLICK_HANDLER);\n resetProp(el, BV_TOGGLE_STATE);\n resetProp(el, BV_TOGGLE_TARGETS); // Reset classes/attrs\n \n removeClass(el, CLASS_BV_TOGGLE_COLLAPSED);\n removeClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED);\n removeAttr(el, ATTR_ARIA_EXPANDED);\n removeAttr(el, ATTR_ARIA_CONTROLS);\n removeAttr(el, ATTR_ROLE);\n }\n };\n \n // Accordion event name we emit on `$root`\n \n var EVENT_ACCORDION = 'bv::collapse::accordion'; // --- Main component ---\n // @vue/component\n \n var BCollapse = /*#__PURE__*/Vue.extend({\n name: 'BCollapse',\n mixins: [idMixin, listenOnRootMixin, normalizeSlotMixin],\n model: {\n prop: 'visible',\n event: 'input'\n },\n props: {\n isNav: {\n type: Boolean,\n default: false\n },\n accordion: {\n type: String // default: null\n \n },\n visible: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n },\n appear: {\n // If `true` (and `visible` is `true` on mount), animate initially visible\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n show: this.visible,\n transitioning: false\n };\n },\n computed: {\n classObject: function classObject() {\n return {\n 'navbar-collapse': this.isNav,\n collapse: !this.transitioning,\n show: this.show && !this.transitioning\n };\n }\n },\n watch: {\n visible: function visible(newVal) {\n if (newVal !== this.show) {\n this.show = newVal;\n }\n },\n show: function show(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.emitState();\n }\n }\n },\n created: function created() {\n this.show = this.visible;\n },\n mounted: function mounted() {\n var _this = this;\n \n this.show = this.visible; // Listen for toggle events to open/close us\n \n this.listenOnRoot(EVENT_TOGGLE, this.handleToggleEvt); // Listen to other collapses for accordion events\n \n this.listenOnRoot(EVENT_ACCORDION, this.handleAccordionEvt);\n \n if (this.isNav) {\n // Set up handlers\n this.setWindowEvents(true);\n this.handleResize();\n }\n \n this.$nextTick(function () {\n _this.emitState();\n }); // Listen for \"Sync state\" requests from `v-b-toggle`\n \n this.listenOnRoot(EVENT_STATE_REQUEST, function (id) {\n if (id === _this.safeId()) {\n _this.$nextTick(_this.emitSync);\n }\n });\n },\n updated: function updated() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitSync();\n },\n \n /* istanbul ignore next */\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n if (this.isNav) {\n this.setWindowEvents(false);\n }\n },\n \n /* istanbul ignore next */\n activated: function activated()\n /* istanbul ignore next */\n {\n if (this.isNav) {\n this.setWindowEvents(true);\n }\n \n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n // Trigger state emit if needed\n this.show = false;\n \n if (this.isNav && isBrowser) {\n this.setWindowEvents(false);\n }\n },\n methods: {\n setWindowEvents: function setWindowEvents(on) {\n eventOnOff(on, window, 'resize', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, window, 'orientationchange', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n },\n toggle: function toggle() {\n this.show = !this.show;\n },\n onEnter: function onEnter() {\n this.transitioning = true; // This should be moved out so we can add cancellable events\n \n this.$emit('show');\n },\n onAfterEnter: function onAfterEnter() {\n this.transitioning = false;\n this.$emit('shown');\n },\n onLeave: function onLeave() {\n this.transitioning = true; // This should be moved out so we can add cancellable events\n \n this.$emit('hide');\n },\n onAfterLeave: function onAfterLeave() {\n this.transitioning = false;\n this.$emit('hidden');\n },\n emitState: function emitState() {\n this.$emit('input', this.show); // Let `v-b-toggle` know the state of this collapse\n \n this.emitOnRoot(EVENT_STATE, this.safeId(), this.show);\n \n if (this.accordion && this.show) {\n // Tell the other collapses in this accordion to close\n this.emitOnRoot(EVENT_ACCORDION, this.safeId(), this.accordion);\n }\n },\n emitSync: function emitSync() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitOnRoot(EVENT_STATE_SYNC, this.safeId(), this.show);\n },\n checkDisplayBlock: function checkDisplayBlock() {\n // Check to see if the collapse has `display: block !important` set\n // We can't set `display: none` directly on `this.$el`, as it would\n // trigger a new transition to start (or cancel a current one)\n var restore = hasClass(this.$el, 'show');\n removeClass(this.$el, 'show');\n var isBlock = getCS(this.$el).display === 'block';\n \n if (restore) {\n addClass(this.$el, 'show');\n }\n \n return isBlock;\n },\n clickHandler: function clickHandler(evt) {\n // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n var el = evt.target;\n \n if (!this.isNav || !el || getCS(this.$el).display !== 'block') {\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n return;\n }\n \n if (matches(el, '.nav-link,.dropdown-item') || closest('.nav-link,.dropdown-item', el)) {\n if (!this.checkDisplayBlock()) {\n // Only close the collapse if it is not forced to be `display: block !important`\n this.show = false;\n }\n }\n },\n handleToggleEvt: function handleToggleEvt(target) {\n if (target !== this.safeId()) {\n return;\n }\n \n this.toggle();\n },\n handleAccordionEvt: function handleAccordionEvt(openedId, accordion) {\n if (!this.accordion || accordion !== this.accordion) {\n return;\n }\n \n if (openedId === this.safeId()) {\n // Open this collapse if not shown\n if (!this.show) {\n this.toggle();\n }\n } else {\n // Close this collapse if shown\n if (this.show) {\n this.toggle();\n }\n }\n },\n handleResize: function handleResize() {\n // Handler for orientation/resize to set collapsed state in nav/navbar\n this.show = getCS(this.$el).display === 'block';\n }\n },\n render: function render(h) {\n var _this2 = this;\n \n var scope = {\n visible: this.show,\n close: function close() {\n return _this2.show = false;\n }\n };\n var content = h(this.tag, {\n class: this.classObject,\n directives: [{\n name: 'show',\n value: this.show\n }],\n attrs: {\n id: this.safeId()\n },\n on: {\n click: this.clickHandler\n }\n }, [this.normalizeSlot('default', scope)]);\n return h(BVCollapse, {\n props: {\n appear: this.appear\n },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [content]);\n }\n });\n \n var VBTogglePlugin = /*#__PURE__*/pluginFactory({\n directives: {\n VBToggle: VBToggle\n }\n });\n \n var CollapsePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BCollapse: BCollapse\n },\n plugins: {\n VBTogglePlugin: VBTogglePlugin\n }\n });\n \n /**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n var isBrowser$1 = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n \n var timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser$1 && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n }();\n \n function microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n }\n \n function taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n }\n \n var supportsMicroTasks = isBrowser$1 && window.Promise;\n \n /**\n * Create a debounced version of a method, that's asynchronously deferred\n * but called in the minimum time possible.\n *\n * @method\n * @memberof Popper.Utils\n * @argument {Function} fn\n * @returns {Function}\n */\n var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n \n /**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n function isFunction$1(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n }\n \n /**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\n function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n }\n \n /**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\n function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n }\n \n /**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\n function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n \n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n \n // Firefox want us to check `-x` and `-y` variations as well\n \n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n \n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n \n return getScrollParent(getParentNode(element));\n }\n \n /**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\n function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n }\n \n var isIE11 = isBrowser$1 && !!(window.MSInputMethodContext && document.documentMode);\n var isIE10 = isBrowser$1 && /MSIE 10/.test(navigator.userAgent);\n \n /**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n function isIE$1(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n }\n \n /**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n \n var noOffsetParent = isIE$1(10) ? document.body : null;\n \n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n \n var nodeName = offsetParent && offsetParent.nodeName;\n \n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n \n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n \n return offsetParent;\n }\n \n function isOffsetContainer(element) {\n var nodeName = element.nodeName;\n \n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n }\n \n /**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\n function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n \n return node;\n }\n \n /**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\n function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n \n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n \n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n \n // Both nodes are inside #document\n \n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n \n return getOffsetParent(commonAncestorContainer);\n }\n \n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n }\n \n /**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\n function getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n \n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n \n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n \n return element[upperSide];\n }\n \n /*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\n function includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n \n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n }\n \n /*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n \n function getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n \n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n }\n \n function getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE$1(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n }\n \n function getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE$1(10) && getComputedStyle(html);\n \n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n }\n \n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n \n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n \n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n \n \n \n \n \n var defineProperty$1 = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n \n return obj;\n };\n \n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n \n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n \n return target;\n };\n \n /**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\n function getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n }\n \n /**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n function getBoundingClientRect(element) {\n var rect = {};\n \n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE$1(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n \n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n \n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n \n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n \n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n \n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n \n return getClientRect(result);\n }\n \n function getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n \n var isIE10 = isIE$1(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n \n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n \n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n \n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n \n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n \n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n \n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n \n return offsets;\n }\n \n function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n \n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n \n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n \n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n \n return getClientRect(offset);\n }\n \n /**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\n function isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n }\n \n /**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n \n function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE$1()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n }\n \n /**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\n function getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n \n // NOTE: 1 DOM access here\n \n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n \n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n \n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n \n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n \n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n \n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n \n return boundaries;\n }\n \n function getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n \n return width * height;\n }\n \n /**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n \n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n \n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n \n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n \n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n \n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n \n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n \n var variation = placement.split('-')[1];\n \n return computedPlacement + (variation ? '-' + variation : '');\n }\n \n /**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n function getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n \n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n }\n \n /**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n function getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n }\n \n /**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n function getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n }\n \n /**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\n function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n \n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n \n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n \n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n \n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n \n return popperOffsets;\n }\n \n /**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n \n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n }\n \n /**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n \n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n }\n \n /**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\n function runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n \n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction$1(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n \n data = fn(data, modifier);\n }\n });\n \n return data;\n }\n \n /**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\n function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n \n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n \n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n \n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n \n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n \n data.positionFixed = this.options.positionFixed;\n \n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n \n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n \n // run the modifiers\n data = runModifiers(this.modifiers, data);\n \n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n }\n \n /**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\n function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n }\n \n /**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\n function getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n \n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n }\n \n /**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\n function destroy$1() {\n this.state.isDestroyed = true;\n \n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n \n this.disableEventListeners();\n \n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n }\n \n /**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\n function getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n }\n \n function attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n \n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n }\n \n /**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n function setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n \n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n \n return state;\n }\n \n /**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\n function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n }\n \n /**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n \n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n \n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n }\n \n /**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\n function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n }\n \n /**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\n function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n }\n \n /**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n function setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n }\n \n /**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n }\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\n function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n \n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n \n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n \n return data;\n }\n \n /**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\n function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n \n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n \n popper.setAttribute('x-placement', placement);\n \n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n \n return options;\n }\n \n /**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n function getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n \n var noRound = function noRound(v) {\n return v;\n };\n \n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n \n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n \n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n \n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n }\n \n var isFirefox = isBrowser$1 && /Firefox/i.test(navigator.userAgent);\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n \n // Remove this legacy support in Popper.js v2\n \n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n \n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n \n // Styles\n var styles = {\n position: popper.position\n };\n \n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n \n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n \n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n \n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n \n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n \n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n \n return data;\n }\n \n /**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\n function isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n \n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n \n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n }\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function arrow(data, options) {\n var _data$offsets$arrow;\n \n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n \n var arrowElement = options.element;\n \n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n \n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n \n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n \n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n \n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n \n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n \n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n \n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n \n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n \n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n \n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty$1(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty$1(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n \n return data;\n }\n \n /**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\n function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n }\n \n /**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\n var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n \n // Get rid of `auto` `auto-start` and `auto-end`\n var validPlacements = placements.slice(3);\n \n /**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\n function clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n \n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n }\n \n var BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n };\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n \n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n \n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n \n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n \n var flipOrder = [];\n \n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n \n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n \n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n \n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n \n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n \n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n \n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n \n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n \n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n \n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n \n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n \n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n \n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n \n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n \n data.placement = placement + (variation ? '-' + variation : '');\n \n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n \n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n }\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n \n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n \n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n \n return data;\n }\n \n /**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\n function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n \n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n \n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n \n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n }\n \n /**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\n function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n \n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n \n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n \n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n \n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n \n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n \n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n \n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n }\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\n function offset$1(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n \n var basePlacement = placement.split('-')[0];\n \n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n \n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n \n data.popper = popper;\n return data;\n }\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n \n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n \n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n \n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n \n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n \n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n \n options.boundaries = boundaries;\n \n var order = options.priority;\n var popper = data.offsets.popper;\n \n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty$1({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty$1({}, mainSide, value);\n }\n };\n \n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n \n data.offsets.popper = popper;\n \n return data;\n }\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n \n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n \n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n \n var shiftOffsets = {\n start: defineProperty$1({}, side, reference[side]),\n end: defineProperty$1({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n \n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n \n return data;\n }\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n \n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n \n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n \n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n \n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n \n return data;\n }\n \n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n function inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n \n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n \n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n \n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n \n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n \n return data;\n }\n \n /**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n \n /**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n var modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n \n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset$1,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n \n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n \n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n \n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n \n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n \n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n \n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n \n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n \n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n };\n \n /**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n \n /**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\n var Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n \n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n \n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n \n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n \n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n \n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n \n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n };\n \n /**\n * @callback onCreate\n * @param {dataObject} data\n */\n \n /**\n * @callback onUpdate\n * @param {dataObject} data\n */\n \n // Utils\n // Methods\n var Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n \n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n \n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n \n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n \n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n \n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n \n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n \n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n \n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n \n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction$1(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n \n // fire the first update to position the popper in the right place\n this.update();\n \n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n \n this.state.eventsEnabled = eventsEnabled;\n }\n \n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n \n \n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy$1.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n \n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n \n \n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n \n }]);\n return Popper;\n }();\n \n /**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n \n \n Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n Popper.placements = placements;\n Popper.Defaults = Defaults;\n \n var BvEvent = /*#__PURE__*/function () {\n function BvEvent(type) {\n var eventInit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n \n _classCallCheck(this, BvEvent);\n \n // Start by emulating native Event constructor\n if (!type) {\n /* istanbul ignore next */\n throw new TypeError(\"Failed to construct '\".concat(this.constructor.name, \"'. 1 argument required, \").concat(arguments.length, \" given.\"));\n } // Merge defaults first, the eventInit, and the type last\n // so it can't be overwritten\n \n \n assign(this, BvEvent.Defaults, this.constructor.Defaults, eventInit, {\n type: type\n }); // Freeze some props as readonly, but leave them enumerable\n \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 }); // Create a private variable using closure scoping\n \n var defaultPrevented = false; // Recreate preventDefault method. One way setter\n \n this.preventDefault = function preventDefault() {\n if (this.cancelable) {\n defaultPrevented = true;\n }\n }; // Create `defaultPrevented` publicly accessible prop that\n // can only be altered by the preventDefault method\n \n \n defineProperty(this, 'defaultPrevented', {\n enumerable: true,\n get: function get() {\n return defaultPrevented;\n }\n });\n }\n \n _createClass(BvEvent, null, [{\n key: \"Defaults\",\n get: function get() {\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 return BvEvent;\n }(); // Named Exports\n \n var clickOutMixin = {\n data: function data() {\n return {\n listenForClickOut: false\n };\n },\n watch: {\n listenForClickOut: function listenForClickOut(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n \n if (newValue) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.clickOutElement = null;\n this.clickOutEventName = null;\n },\n mounted: function mounted() {\n if (!this.clickOutElement) {\n this.clickOutElement = document;\n }\n \n if (!this.clickOutEventName) {\n this.clickOutEventName = 'click';\n }\n \n if (this.listenForClickOut) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n isClickOut: function isClickOut(evt) {\n return !contains(this.$el, evt.target);\n },\n _clickOutHandler: function _clickOutHandler(evt) {\n if (this.clickOutHandler && this.isClickOut(evt)) {\n this.clickOutHandler(evt);\n }\n }\n }\n };\n \n var focusInMixin = {\n data: function data() {\n return {\n listenForFocusIn: false\n };\n },\n watch: {\n listenForFocusIn: function listenForFocusIn(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n \n if (newValue) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.focusInElement = null;\n },\n mounted: function mounted() {\n if (!this.focusInElement) {\n this.focusInElement = document;\n }\n \n if (this.listenForFocusIn) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n _focusInHandler: function _focusInHandler(evt) {\n if (this.focusInHandler) {\n this.focusInHandler(evt);\n }\n }\n }\n };\n \n var filterVisibles = function filterVisibles(els) {\n return (els || []).filter(isVisible);\n }; // Root dropdown event names\n \n \n var ROOT_DROPDOWN_PREFIX = 'bv::dropdown::';\n var ROOT_DROPDOWN_SHOWN = \"\".concat(ROOT_DROPDOWN_PREFIX, \"shown\");\n var ROOT_DROPDOWN_HIDDEN = \"\".concat(ROOT_DROPDOWN_PREFIX, \"hidden\"); // Dropdown item CSS selectors\n \n var Selector = {\n FORM_CHILD: '.dropdown form',\n ITEM_SELECTOR: ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n }).join(', ')\n }; // Popper attachment positions\n \n var 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 var commonProps = {\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: function _default() {}\n },\n boundary: {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n type: [String, HTMLElement],\n default: 'scrollParent'\n }\n }; // @vue/component\n \n var dropdownMixin = {\n mixins: [idMixin, clickOutMixin, focusInMixin],\n provide: function provide() {\n return {\n bvDropdown: this\n };\n },\n inject: {\n bvNavbar: {\n default: null\n }\n },\n props: _objectSpread2({\n disabled: {\n type: Boolean,\n default: false\n }\n }, commonProps),\n data: function data() {\n return {\n visible: false,\n visibleChangePrevented: false\n };\n },\n computed: {\n inNavbar: function inNavbar() {\n return !isNull(this.bvNavbar);\n },\n toggler: function toggler() {\n var toggle = this.$refs.toggle;\n return toggle ? toggle.$el || toggle : null;\n },\n directionClass: function 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 \n return '';\n }\n },\n watch: {\n visible: function visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false;\n return;\n }\n \n if (newValue !== oldValue) {\n var evtName = newValue ? 'show' : 'hide';\n var 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 \n if (bvEvt.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true;\n this.visible = oldValue; // Just in case a child element triggered `this.hide(true)`\n \n this.$off('hidden', this.focusToggler);\n return;\n }\n \n if (evtName === 'show') {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n },\n disabled: function 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: function created() {\n // Create private non-reactive props\n this.$_popper = null;\n },\n \n /* istanbul ignore next */\n deactivated: function deactivated()\n /* istanbul ignore next: not easy to test */\n {\n // In case we are inside a ``\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvt) {\n var type = bvEvt.type;\n this.$emit(type, bvEvt);\n this.$root.$emit(\"\".concat(ROOT_DROPDOWN_PREFIX).concat(type), bvEvt);\n },\n showMenu: function showMenu() {\n var _this = this;\n \n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Only instantiate Popper.js when dropdown is not in ``\n \n \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 var el = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n \n el = el.$el || el; // Instantiate Popper.js\n \n this.createPopper(el);\n }\n } // Ensure other menus are closed\n \n \n this.$root.$emit(ROOT_DROPDOWN_SHOWN, this); // Enable listeners\n \n this.whileOpenListen(true); // Wrap in `$nextTick()` to ensure menu is fully rendered/shown\n \n this.$nextTick(function () {\n // Focus on the menu container on show\n _this.focusMenu(); // Emit the shown event\n \n \n _this.$emit('shown');\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.$root.$emit(ROOT_DROPDOWN_HIDDEN, this);\n this.$emit('hidden');\n this.destroyPopper();\n },\n createPopper: function createPopper(element) {\n this.destroyPopper();\n this.$_popper = new Popper(element, this.$refs.menu, this.getPopperConfig());\n },\n // Ensure popper event listeners are removed cleanly\n destroyPopper: function destroyPopper() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n // Instructs popper to re-computes the dropdown position\n // useful if the content changes size\n updatePopper: function updatePopper()\n /* istanbul ignore next: not easy to test */\n {\n try {\n this.$_popper.scheduleUpdate();\n } catch (_unused) {}\n },\n getPopperConfig: function getPopperConfig() {\n var placement = AttachmentMap.BOTTOM;\n \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 \n var popperConfig = {\n placement: placement,\n modifiers: {\n offset: {\n offset: this.offset || 0\n },\n flip: {\n enabled: !this.noFlip\n }\n }\n };\n \n if (this.boundary) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: this.boundary\n };\n }\n \n return _objectSpread2(_objectSpread2({}, popperConfig), this.popperOpts || {});\n },\n // Turn listeners on/off while open\n whileOpenListen: function whileOpenListen(isOpen) {\n // Hide the dropdown when clicked outside\n this.listenForClickOut = isOpen; // Hide the dropdown when it loses focus\n \n this.listenForFocusIn = isOpen; // Hide the dropdown when another dropdown is opened\n \n var method = isOpen ? '$on' : '$off';\n this.$root[method](ROOT_DROPDOWN_SHOWN, this.rootCloseListener);\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n show: function show() {\n var _this2 = this;\n \n // Public method to show dropdown\n if (this.disabled) {\n return;\n } // Wrap in a `requestAF()` to allow any previous\n // click handling to occur first\n \n \n requestAF(function () {\n _this2.visible = true;\n });\n },\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n \n // Public method to hide dropdown\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n }\n \n this.visible = false;\n \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: function toggle(evt) {\n evt = evt || {}; // Early exit when not a click event or ENTER, SPACE or DOWN were pressed\n \n var _evt = evt,\n type = _evt.type,\n keyCode = _evt.keyCode;\n \n if (type !== 'click' && !(type === 'keydown' && [KEY_CODES.ENTER, KEY_CODES.SPACE, KEY_CODES.DOWN].indexOf(keyCode) !== -1)) {\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next */\n \n \n if (this.disabled) {\n this.visible = false;\n return;\n }\n \n this.$emit('toggle', evt);\n evt.preventDefault();\n evt.stopPropagation(); // Toggle visibility\n \n if (this.visible) {\n this.hide(true);\n } else {\n this.show();\n }\n },\n // Mousedown handler for the toggle\n \n /* istanbul ignore next */\n onMousedown: function onMousedown(evt)\n /* istanbul ignore next */\n {\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: function onKeydown(evt) {\n var keyCode = evt.keyCode;\n \n if (keyCode === KEY_CODES.ESC) {\n // Close on ESC\n this.onEsc(evt);\n } else if (keyCode === KEY_CODES.DOWN) {\n // Down Arrow\n this.focusNext(evt, false);\n } else if (keyCode === KEY_CODES.UP) {\n // Up Arrow\n this.focusNext(evt, true);\n }\n },\n // If user presses ESC, close the menu\n onEsc: function onEsc(evt) {\n if (this.visible) {\n this.visible = false;\n evt.preventDefault();\n evt.stopPropagation(); // Return focus to original trigger button\n \n this.$once('hidden', this.focusToggler);\n }\n },\n // Called only in split button mode, for the split button\n onSplitClick: function onSplitClick(evt) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false;\n return;\n }\n \n this.$emit('click', evt);\n },\n // Shared hide handler between click-out and focus-in events\n hideHandler: function hideHandler(evt) {\n var target = evt.target;\n \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: function clickOutHandler(evt) {\n this.hideHandler(evt);\n },\n // Document focus-in listener\n focusInHandler: function focusInHandler(evt) {\n this.hideHandler(evt);\n },\n // Keyboard nav\n focusNext: function focusNext(evt, up) {\n var _this3 = this;\n \n // Ignore key up/down on form elements\n var target = evt.target;\n \n if (!this.visible || evt && closest(Selector.FORM_CHILD, target)) {\n /* istanbul ignore next: should never happen */\n return;\n }\n \n evt.preventDefault();\n evt.stopPropagation();\n this.$nextTick(function () {\n var items = _this3.getItems();\n \n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return;\n }\n \n var index = items.indexOf(target);\n \n if (up && index > 0) {\n index--;\n } else if (!up && index < items.length - 1) {\n index++;\n }\n \n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0;\n }\n \n _this3.focusItem(index, items);\n });\n },\n focusItem: function focusItem(index, items) {\n var el = items.find(function (el, i) {\n return i === index;\n });\n attemptFocus(el);\n },\n getItems: function getItems() {\n // Get all items\n return filterVisibles(selectAll(Selector.ITEM_SELECTOR, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n attemptFocus(this.$refs.menu);\n },\n focusToggler: function focusToggler() {\n var _this4 = this;\n \n this.$nextTick(function () {\n attemptFocus(_this4.toggler);\n });\n }\n }\n };\n \n var NAME$f = 'BDropdown'; // --- Props ---\n \n var props$l = {\n text: {\n // Button label\n type: String,\n default: ''\n },\n html: {\n // Button label\n type: String // default: undefined\n \n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$f, 'variant');\n }\n },\n size: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$f, 'size');\n }\n },\n block: {\n type: Boolean,\n default: false\n },\n menuClass: {\n type: [String, Array, Object] // default: null\n \n },\n toggleTag: {\n type: String,\n default: 'button'\n },\n toggleText: {\n // This really should be toggleLabel\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$f, 'toggleText');\n }\n },\n toggleClass: {\n type: [String, Array, Object] // default: null\n \n },\n noCaret: {\n type: Boolean,\n default: false\n },\n split: {\n type: Boolean,\n default: false\n },\n splitHref: {\n type: String // default: undefined\n \n },\n splitTo: {\n type: [String, Object] // default: undefined\n \n },\n splitVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME$f, 'splitVariant');\n }\n },\n splitClass: {\n type: [String, Array, Object] // default: null\n \n },\n splitButtonType: {\n type: String,\n default: 'button',\n validator: function validator(value) {\n return arrayIncludes(['button', 'submit', 'reset'], value);\n }\n },\n lazy: {\n // If true, only render menu contents when open\n type: Boolean,\n default: false\n },\n role: {\n type: String,\n default: 'menu'\n }\n }; // --- Main component ---\n // @vue/component\n \n var BDropdown = /*#__PURE__*/Vue.extend({\n name: NAME$f,\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props: props$l,\n computed: {\n dropdownClasses: function dropdownClasses() {\n var block = this.block,\n split = this.split,\n boundary = this.boundary;\n return [this.directionClass, {\n show: this.visible,\n // The 'btn-group' class is required in `split` mode for button alignment\n // It needs also to be applied when `block` is disabled to allow multiple\n // dropdowns to be aligned one line\n 'btn-group': split || !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': block && 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': boundary !== 'scrollParent' || !boundary\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n var split = this.split;\n return [this.toggleClass, {\n 'dropdown-toggle-split': split,\n 'dropdown-toggle-no-caret': this.noCaret && !split\n }];\n }\n },\n render: function render(h) {\n var variant = this.variant,\n size = this.size,\n block = this.block,\n disabled = this.disabled,\n split = this.split,\n role = this.role;\n var commonProps = {\n variant: variant,\n size: size,\n block: block,\n disabled: disabled\n };\n var $buttonContent = this.normalizeSlot('button-content');\n var buttonContentProps = this.hasNormalizedSlot('button-content') ? {} : htmlOrText(this.html, this.text);\n var $split = h();\n \n if (split) {\n var splitTo = this.splitTo,\n splitHref = this.splitHref,\n splitButtonType = this.splitButtonType;\n \n var btnProps = _objectSpread2(_objectSpread2({}, commonProps), {}, {\n variant: this.splitVariant || this.variant\n }); // We add these as needed due to issues with\n // defined property with `undefined`/`null` values\n \n \n if (splitTo) {\n btnProps.to = splitTo;\n } else if (splitHref) {\n btnProps.href = splitHref;\n } else if (splitButtonType) {\n btnProps.type = splitButtonType;\n }\n \n $split = h(BButton, {\n class: this.splitClass,\n attrs: {\n id: this.safeId('_BV_button_')\n },\n props: btnProps,\n domProps: buttonContentProps,\n on: {\n click: this.onSplitClick\n },\n ref: 'button'\n }, [$buttonContent]);\n }\n \n var $toggle = h(BButton, {\n staticClass: 'dropdown-toggle',\n class: this.toggleClasses,\n attrs: {\n id: this.safeId('_BV_toggle_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': this.visible ? 'true' : 'false'\n },\n props: _objectSpread2(_objectSpread2({}, commonProps), {}, {\n tag: this.toggleTag,\n block: block && !split\n }),\n domProps: split ? {} : buttonContentProps,\n on: {\n mousedown: this.onMousedown,\n click: this.toggle,\n keydown: this.toggle // Handle ENTER, SPACE and DOWN\n \n },\n ref: 'toggle'\n }, [split ? h('span', {\n class: ['sr-only']\n }, [this.toggleText]) : $buttonContent]);\n var $menu = h('ul', {\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n attrs: {\n role: role,\n tabindex: '-1',\n 'aria-labelledby': this.safeId(split ? '_BV_button_' : '_BV_toggle_')\n },\n on: {\n keydown: this.onKeydown // Handle UP, DOWN and ESC\n \n },\n ref: 'menu'\n }, !this.lazy || this.visible ? this.normalizeSlot('default', {\n hide: this.hide\n }) : [h()]);\n return h('div', {\n staticClass: 'dropdown b-dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [$split, $toggle, $menu]);\n }\n });\n \n var props$m = omit(props$1, ['event', 'routerTag']); // @vue/component\n \n var BDropdownItem = /*#__PURE__*/Vue.extend({\n name: 'BDropdownItem',\n mixins: [attrsMixin, normalizeSlotMixin],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: _objectSpread2(_objectSpread2({}, props$m), {}, {\n linkClass: {\n type: [String, Array, Object],\n default: null\n },\n variant: {\n type: String,\n default: null\n }\n }),\n computed: {\n computedAttrs: function computedAttrs() {\n return _objectSpread2(_objectSpread2({}, this.bvAttrs), {}, {\n role: 'menuitem'\n });\n }\n },\n methods: {\n closeDropdown: function closeDropdown() {\n var _this = this;\n \n // Close on next animation frame to allow time to process\n requestAF(function () {\n if (_this.bvDropdown) {\n _this.bvDropdown.hide(true);\n }\n });\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n return h('li', {\n attrs: {\n role: 'presentation'\n }\n }, [h(BLink, {\n props: this.$props,\n staticClass: 'dropdown-item',\n class: [this.linkClass, _defineProperty({}, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled))],\n attrs: this.computedAttrs,\n on: {\n click: this.onClick\n },\n ref: 'item'\n }, this.normalizeSlot('default'))]);\n }\n });\n \n var props$n = {\n active: {\n type: Boolean,\n default: false\n },\n activeClass: {\n type: String,\n default: 'active'\n },\n buttonClass: {\n type: [String, Array, Object] // default: null\n \n },\n disabled: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String // default: null\n \n }\n }; // @vue/component\n \n var BDropdownItemButton = /*#__PURE__*/Vue.extend({\n name: 'BDropdownItemButton',\n mixins: [attrsMixin, normalizeSlotMixin],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: props$n,\n computed: {\n computedAttrs: function computedAttrs() {\n return _objectSpread2(_objectSpread2({}, this.bvAttrs), {}, {\n role: 'menuitem',\n type: 'button',\n disabled: this.disabled\n });\n }\n },\n methods: {\n closeDropdown: function closeDropdown() {\n if (this.bvDropdown) {\n this.bvDropdown.hide(true);\n }\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var _ref;\n \n return h('li', {\n attrs: {\n role: 'presentation'\n }\n }, [h('button', {\n staticClass: 'dropdown-item',\n class: [this.buttonClass, (_ref = {}, _defineProperty(_ref, this.activeClass, this.active), _defineProperty(_ref, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled)), _ref)],\n attrs: this.computedAttrs,\n on: {\n click: this.onClick\n },\n ref: 'button'\n }, this.normalizeSlot('default'))]);\n }\n });\n \n var props$o = {\n id: {\n type: String // default: null\n \n },\n tag: {\n type: String,\n default: 'header'\n },\n variant: {\n type: String // default: null\n \n }\n }; // @vue/component\n \n var BDropdownHeader = /*#__PURE__*/Vue.extend({\n name: 'BDropdownHeader',\n functional: true,\n props: props$o,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', a(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'dropdown-header',\n class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n attrs: _objectSpread2(_objectSpread2({}, $attrs), {}, {\n id: props.id || null,\n role: 'heading'\n }),\n ref: 'header'\n }, children)]);\n }\n });\n \n var props$p = {\n tag: {\n type: String,\n default: 'hr'\n }\n }; // @vue/component\n \n var BDropdownDivider = /*#__PURE__*/Vue.extend({\n name: 'BDropdownDivider',\n functional: true,\n props: props$p,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', a(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'dropdown-divider',\n attrs: _objectSpread2(_objectSpread2({}, $attrs), {}, {\n role: 'separator',\n 'aria-orientation': 'horizontal'\n }),\n ref: 'divider'\n })]);\n }\n });\n \n var props$q = {\n id: {\n type: String // default: null\n \n },\n inline: {\n type: Boolean,\n default: false\n },\n novalidate: {\n type: Boolean,\n default: false\n },\n validated: {\n type: Boolean,\n default: false\n }\n }; // @vue/component\n \n var BForm = /*#__PURE__*/Vue.extend({\n name: 'BForm',\n functional: true,\n props: props$q,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', a(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n });\n \n var BDropdownForm = /*#__PURE__*/Vue.extend({\n name: 'BDropdownForm',\n functional: true,\n props: _objectSpread2(_objectSpread2({}, props$q), {}, {\n disabled: {\n type: Boolean,\n default: false\n },\n formClass: {\n type: [String, Object, Array] // default: null\n \n }\n }),\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n var $listeners = data.on || {};\n data.attrs = {};\n data.on = {};\n return h('li', a(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(BForm, {\n ref: 'form',\n staticClass: 'b-dropdown-form',\n class: [props.formClass, {\n disabled: props.disabled\n }],\n props: props,\n attrs: _objectSpread2(_objectSpread2({}, $attrs), {}, {\n disabled: props.disabled,\n // Tab index of -1 for keyboard navigation\n tabindex: props.disabled ? null : '-1'\n }),\n on: $listeners\n }, children)]);\n }\n });\n \n var BDropdownText = /*#__PURE__*/Vue.extend({\n name: 'BDropdownText',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'p'\n },\n variant: {\n type: String // default: null\n \n }\n },\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', a(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'b-dropdown-text',\n class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n props: props,\n attrs: $attrs,\n ref: 'text'\n }, children)]);\n }\n });\n \n var props$r = {\n id: {\n type: String // default: null\n \n },\n header: {\n type: String // default: null\n \n },\n headerTag: {\n type: String,\n default: 'header'\n },\n headerVariant: {\n type: String // default: null\n \n },\n headerClasses: {\n type: [String, Array, Object] // default: null\n \n },\n ariaDescribedby: {\n type: String // default: null\n \n }\n }; // @vue/component\n \n var BDropdownGroup = /*#__PURE__*/Vue.extend({\n name: 'BDropdownGroup',\n functional: true,\n props: props$r,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $attrs = data.attrs || {};\n data.attrs = {};\n var header;\n var headerId = null;\n \n if (hasNormalizedSlot('header', $scopedSlots, $slots) || props.header) {\n headerId = props.id ? \"_bv_\".concat(props.id, \"_group_dd_header\") : null;\n header = h(props.headerTag, {\n staticClass: 'dropdown-header',\n class: [props.headerClasses, _defineProperty({}, \"text-\".concat(props.variant), props.variant)],\n attrs: {\n id: headerId,\n role: 'heading'\n }\n }, normalizeSlot('header', {}, $scopedSlots, $slots) || props.header);\n }\n \n var adb = [headerId, props.ariaDescribedBy].filter(identity).join(' ').trim();\n return h('li', a(data, {\n attrs: {\n role: 'presentation'\n }\n }), [header || h(), h('ul', {\n staticClass: 'list-unstyled',\n attrs: _objectSpread2(_objectSpread2({}, $attrs), {}, {\n id: props.id || null,\n role: 'group',\n 'aria-describedby': adb || null\n })\n }, normalizeSlot('default', {}, $scopedSlots, $slots))]);\n }\n });\n \n var DropdownPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BDropdown: BDropdown,\n BDd: BDropdown,\n BDropdownItem: BDropdownItem,\n BDdItem: BDropdownItem,\n BDropdownItemButton: BDropdownItemButton,\n BDropdownItemBtn: BDropdownItemButton,\n BDdItemButton: BDropdownItemButton,\n BDdItemBtn: BDropdownItemButton,\n BDropdownHeader: BDropdownHeader,\n BDdHeader: BDropdownHeader,\n BDropdownDivider: BDropdownDivider,\n BDdDivider: BDropdownDivider,\n BDropdownForm: BDropdownForm,\n BDdForm: BDropdownForm,\n BDropdownText: BDropdownText,\n BDdText: BDropdownText,\n BDropdownGroup: BDropdownGroup,\n BDdGroup: BDropdownGroup\n }\n });\n \n var props$s = {\n type: {\n type: String,\n default: 'iframe',\n validator: function validator(str) {\n return arrayIncludes(['iframe', 'embed', 'video', 'object', 'img', 'b-img', 'b-img-lazy'], str);\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n aspect: {\n type: String,\n default: '16by9'\n }\n }; // @vue/component\n \n var BEmbed = /*#__PURE__*/Vue.extend({\n name: 'BEmbed',\n functional: true,\n props: props$s,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, {\n ref: data.ref,\n staticClass: 'embed-responsive',\n class: _defineProperty({}, \"embed-responsive-\".concat(props.aspect), props.aspect)\n }, [h(props.type, a(data, {\n ref: '',\n staticClass: 'embed-responsive-item'\n }), children)]);\n }\n });\n \n var EmbedPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BEmbed: BEmbed\n }\n });\n \n var OPTIONS_OBJECT_DEPRECATED_MSG = 'Setting prop \"options\" to an object is deprecated. Use the array format instead.'; // @vue/component\n \n var formOptionsMixin = {\n props: {\n options: {\n type: [Array, Object],\n default: function _default() {\n return [];\n }\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: function formOptions() {\n return this.normalizeOptions(this.options);\n }\n },\n methods: {\n normalizeOption: function normalizeOption(option) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n \n // When the option is an object, normalize it\n if (isPlainObject(option)) {\n var value = get(option, this.valueField);\n var 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 } // Otherwise create an `