1 line
No EOL
1.5 MiB
1 line
No EOL
1.5 MiB
{"version":3,"file":"bootstrap-vue.min.js","sources":["../../src/bootstrap-vue/bootstrap-vue.js"],"sourcesContent":["/*!\n * BootstrapVue 2.23.1\n *\n * @link https://bootstrap-vue.org\n * @source https://github.com/bootstrap-vue/bootstrap-vue\n * @copyright (c) 2016-2022 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/vue')) :\n typeof define === 'function' && define.amd ? define(['../vue/vue'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrapVue = factory(global.Vue));\n}(this, (function (Vue) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var Vue__default = /*#__PURE__*/_interopDefaultLegacy(Vue);\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2$3(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n }\n\n function _typeof$1(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof$1(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 Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\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 _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 Object.defineProperty(subClass, \"prototype\", {\n value: Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n }),\n writable: false\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 Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], 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 _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\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 } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\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() {\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(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _toConsumableArray$1(arr) {\n return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread$1();\n }\n\n function _arrayWithoutHoles$1(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$1(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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$1() {\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 var e=function(){return (e=Object.assign||function(e){for(var t,r=1,s=arguments.length;r<s;r++)for(var a in t=arguments[r])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},t={kebab:/-(\\w)/g,styleProp:/:(.*)/,styleList:/;(?![^(]*\\))/g};function r(e,t){return t?t.toUpperCase():\"\"}function s(e){for(var s,a={},c=0,o=e.split(t.styleList);c<o.length;c++){var n=o[c].split(t.styleProp),i=n[0],l=n[1];(i=i.trim())&&(\"string\"==typeof l&&(l=l.trim()),a[(s=i,s.replace(t.kebab,r))]=l);}return a}function a(){for(var t,r,a={},c=arguments.length;c--;)for(var o=0,n=Object.keys(arguments[c]);o<n.length;o++)switch(t=n[o]){case\"class\":case\"style\":case\"directives\":if(Array.isArray(a[t])||(a[t]=[]),\"style\"===t){var i=void 0;i=Array.isArray(arguments[c].style)?arguments[c].style:[arguments[c].style];for(var l=0;l<i.length;l++){var y=i[l];\"string\"==typeof y&&(i[l]=s(y));}arguments[c].style=i;}a[t]=a[t].concat(arguments[c][t]);break;case\"staticClass\":if(!arguments[c][t])break;void 0===a[t]&&(a[t]=\"\"),a[t]&&(a[t]+=\" \"),a[t]+=arguments[c][t].trim();break;case\"on\":case\"nativeOn\":a[t]||(a[t]={});for(var p=0,f=Object.keys(arguments[c][t]||{});p<f.length;p++)r=f[p],a[t][r]?a[t][r]=[].concat(a[t][r],arguments[c][t][r]):a[t][r]=arguments[c][t][r];break;case\"attrs\":case\"props\":case\"domProps\":case\"scopedSlots\":case\"staticStyle\":case\"hook\":case\"transition\":a[t]||(a[t]={}),a[t]=e({},arguments[c][t],a[t]);break;case\"slot\":case\"key\":case\"ref\":case\"tag\":case\"show\":case\"keepAlive\":default:a[t]||(a[t]=arguments[c][t]);}return a}\n\n var COMPONENT_UID_KEY = '_uid';\n var isVue3 = Vue__default['default'].version.startsWith('3');\n var REF_FOR_KEY = isVue3 ? 'ref_for' : 'refInFor';\n var ALLOWED_FIELDS_IN_DATA = ['class', 'staticClass', 'style', 'attrs', 'props', 'domProps', 'on', 'nativeOn', 'directives', 'scopedSlots', 'slot', 'key', 'ref', 'refInFor'];\n var extend = Vue__default['default'].extend.bind(Vue__default['default']);\n\n if (isVue3) {\n var originalExtend = Vue__default['default'].extend;\n var KNOWN_COMPONENTS = ['router-link', 'transition', 'transition-group'];\n var originalVModelDynamicCreated = Vue__default['default'].vModelDynamic.created;\n var originalVModelDynamicBeforeUpdate = Vue__default['default'].vModelDynamic.beforeUpdate; // See https://github.com/vuejs/vue-next/pull/4121 for details\n\n Vue__default['default'].vModelDynamic.created = function (el, binding, vnode) {\n originalVModelDynamicCreated.call(this, el, binding, vnode);\n\n if (!el._assign) {\n el._assign = function () {};\n }\n };\n\n Vue__default['default'].vModelDynamic.beforeUpdate = function (el, binding, vnode) {\n originalVModelDynamicBeforeUpdate.call(this, el, binding, vnode);\n\n if (!el._assign) {\n el._assign = function () {};\n }\n };\n\n extend = function patchedBootstrapVueExtend(definition) {\n if (_typeof$1(definition) === 'object' && definition.render && !definition.__alreadyPatched) {\n var originalRender = definition.render;\n definition.__alreadyPatched = true;\n\n definition.render = function (h) {\n var patchedH = function patchedH(tag, dataObjOrChildren, rawSlots) {\n var slots = rawSlots === undefined ? [] : [Array.isArray(rawSlots) ? rawSlots.filter(Boolean) : rawSlots];\n var isTag = typeof tag === 'string' && !KNOWN_COMPONENTS.includes(tag);\n var isSecondArgumentDataObject = dataObjOrChildren && _typeof$1(dataObjOrChildren) === 'object' && !Array.isArray(dataObjOrChildren);\n\n if (!isSecondArgumentDataObject) {\n return h.apply(void 0, [tag, dataObjOrChildren].concat(slots));\n }\n\n var attrs = dataObjOrChildren.attrs,\n props = dataObjOrChildren.props,\n restData = _objectWithoutProperties(dataObjOrChildren, [\"attrs\", \"props\"]);\n\n var normalizedData = _objectSpread2$3(_objectSpread2$3({}, restData), {}, {\n attrs: attrs,\n props: isTag ? {} : props\n });\n\n if (tag === 'router-link' && !normalizedData.slots && !normalizedData.scopedSlots) {\n // terrible workaround to fix router-link rendering with compat vue-router\n normalizedData.scopedSlots = {\n $hasNormal: function $hasNormal() {}\n };\n }\n\n return h.apply(void 0, [tag, normalizedData].concat(slots));\n };\n\n if (definition.functional) {\n var _ctx$children, _ctx$children$default;\n\n var ctx = arguments[1];\n\n var patchedCtx = _objectSpread2$3({}, ctx);\n\n patchedCtx.data = {\n attrs: _objectSpread2$3({}, ctx.data.attrs || {}),\n props: _objectSpread2$3({}, ctx.data.props || {})\n };\n Object.keys(ctx.data || {}).forEach(function (key) {\n if (ALLOWED_FIELDS_IN_DATA.includes(key)) {\n patchedCtx.data[key] = ctx.data[key];\n } else if (key in ctx.props) {\n patchedCtx.data.props[key] = ctx.data[key];\n } else if (!key.startsWith('on')) {\n patchedCtx.data.attrs[key] = ctx.data[key];\n }\n });\n var IGNORED_CHILDREN_KEYS = ['_ctx'];\n var children = ((_ctx$children = ctx.children) === null || _ctx$children === void 0 ? void 0 : (_ctx$children$default = _ctx$children.default) === null || _ctx$children$default === void 0 ? void 0 : _ctx$children$default.call(_ctx$children)) || ctx.children;\n\n if (children && Object.keys(patchedCtx.children).filter(function (k) {\n return !IGNORED_CHILDREN_KEYS.includes(k);\n }).length === 0) {\n delete patchedCtx.children;\n } else {\n patchedCtx.children = children;\n }\n\n patchedCtx.data.on = ctx.listeners;\n return originalRender.call(this, patchedH, patchedCtx);\n }\n\n return originalRender.call(this, patchedH);\n };\n }\n\n return originalExtend.call(this, definition);\n }.bind(Vue__default['default']);\n }\n\n var nextTick = Vue__default['default'].nextTick;\n\n var HAS_WINDOW_SUPPORT = typeof window !== 'undefined';\n var HAS_DOCUMENT_SUPPORT = typeof document !== 'undefined';\n var HAS_NAVIGATOR_SUPPORT = typeof navigator !== 'undefined';\n var HAS_PROMISE_SUPPORT = typeof Promise !== 'undefined';\n /* istanbul ignore next: JSDOM always returns false */\n\n var HAS_MUTATION_OBSERVER_SUPPORT = typeof MutationObserver !== 'undefined' || typeof WebKitMutationObserver !== 'undefined' || typeof MozMutationObserver !== 'undefined';\n var IS_BROWSER = HAS_WINDOW_SUPPORT && HAS_DOCUMENT_SUPPORT && HAS_NAVIGATOR_SUPPORT;\n var WINDOW = HAS_WINDOW_SUPPORT ? window : {};\n var DOCUMENT = HAS_DOCUMENT_SUPPORT ? document : {};\n var NAVIGATOR = HAS_NAVIGATOR_SUPPORT ? navigator : {};\n var USER_AGENT = (NAVIGATOR.userAgent || '').toLowerCase();\n var IS_JSDOM = USER_AGENT.indexOf('jsdom') > 0;\n /msie|trident/.test(USER_AGENT); // Determine if the browser supports the option passive for events\n\n var HAS_PASSIVE_EVENT_SUPPORT = function () {\n var passiveEventSupported = false;\n\n if (IS_BROWSER) {\n try {\n var options = {\n // This function will be called when the browser\n // attempts to access the passive property\n get passive() {\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 (_unused) {\n /* istanbul ignore next: will never be called in JSDOM */\n passiveEventSupported = false;\n }\n }\n\n return passiveEventSupported;\n }();\n var HAS_TOUCH_SUPPORT = IS_BROWSER && ('ontouchstart' in DOCUMENT.documentElement || NAVIGATOR.maxTouchPoints > 0);\n var HAS_POINTER_EVENT_SUPPORT = IS_BROWSER && Boolean(WINDOW.PointerEvent || WINDOW.MSPointerEvent);\n /* istanbul ignore next: JSDOM only checks for 'IntersectionObserver' */\n\n var HAS_INTERACTION_OBSERVER_SUPPORT = IS_BROWSER && '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;\n\n var NAME$2 = 'BvConfig';\n var PROP_NAME$2 = '$bvConfig';\n var DEFAULT_BREAKPOINT = ['xs', 'sm', 'md', 'lg', 'xl'];\n\n // --- General ---\n var RX_ARRAY_NOTATION = /\\[(\\d+)]/g;\n var RX_BV_PREFIX = /^(BV?)/;\n var RX_DIGITS = /^\\d+$/;\n var RX_EXTENSION = /^\\..+/;\n var RX_HASH = /^#/;\n var RX_HASH_ID = /^#[A-Za-z]+[\\w\\-:.]*$/;\n var RX_HTML_TAGS = /(<([^>]+)>)/gi;\n var RX_HYPHENATE = /\\B([A-Z])/g;\n var RX_LOWER_UPPER = /([a-z])([A-Z])/g;\n var RX_NUMBER = /^[0-9]*\\.?[0-9]+$/;\n var RX_PLUS = /\\+/g;\n var RX_REGEXP_REPLACE = /[-/\\\\^$*+?.()|[\\]{}]/g;\n var RX_SPACES = /[\\s\\uFEFF\\xA0]+/g;\n var RX_SPACE_SPLIT = /\\s+/;\n var RX_STAR = /\\/\\*$/;\n var RX_START_SPACE_WORD = /(\\s|^)(\\w)/g;\n var RX_TRIM_LEFT = /^\\s+/;\n var RX_UNDERSCORE = /_/g;\n var RX_UN_KEBAB = /-(\\w)/g; // --- Date ---\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/; // Time string RegEx (optional seconds)\n\n var RX_TIME = /^([0-1]?[0-9]|2[0-3]):[0-5]?[0-9](:[0-5]?[0-9])?$/; // --- URL ---\n // HREFs must end with a hash followed by at least one non-hash character\n\n var RX_HREF = /^.*(#[^#]+)$/;\n var RX_ENCODED_COMMA = /%2C/g;\n var RX_ENCODE_REVERSE = /[!'()*]/g;\n var RX_QUERY_START = /^(\\?|#|&)/; // --- Aspect ---\n\n var RX_ASPECT = /^\\d+(\\.\\d*)?[/:]\\d+(\\.\\d*)?$/;\n var RX_ASPECT_SEPARATOR = /[/:]/; // --- Grid ---\n\n var RX_COL_CLASS = /^col-/; // --- Icon ---\n\n var RX_ICON_PREFIX = /^BIcon/; // --- Locale ---\n\n var RX_STRIP_LOCALE_MODS = /-u-.+/;\n\n /* istanbul ignore next */\n\n var Element = HAS_WINDOW_SUPPORT ? WINDOW.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 /* istanbul ignore next */\n\n var HTMLElement = HAS_WINDOW_SUPPORT ? WINDOW.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);\n /* istanbul ignore next */\n\n var SVGElement = HAS_WINDOW_SUPPORT ? WINDOW.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);\n /* istanbul ignore next */\n\n var File = HAS_WINDOW_SUPPORT ? WINDOW.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$1 = function toType(value) {\n return _typeof$1(value);\n };\n var toRawType = function toRawType(value) {\n return Object.prototype.toString.call(value).slice(8, -1);\n };\n var isUndefined = function isUndefined(value) {\n return value === undefined;\n };\n var isNull = function isNull(value) {\n return value === null;\n };\n var isUndefinedOrNull = function isUndefinedOrNull(value) {\n return isUndefined(value) || isNull(value);\n };\n var isFunction$1 = function isFunction(value) {\n return toType$1(value) === 'function';\n };\n var isBoolean = function isBoolean(value) {\n return toType$1(value) === 'boolean';\n };\n var isString = function isString(value) {\n return toType$1(value) === 'string';\n };\n var isNumber = function isNumber(value) {\n return toType$1(value) === 'number';\n };\n var isNumeric$1 = function isNumeric(value) {\n return RX_NUMBER.test(String(value));\n };\n var isArray = function isArray(value) {\n return Array.isArray(value);\n }; // Quick object check\n // This is primarily used to tell Objects from primitive values\n // when we know the value is a JSON-compliant type\n // Note object could be a complex type like array, Date, etc.\n\n var isObject = function isObject(obj) {\n return obj !== null && _typeof$1(obj) === 'object';\n }; // Strict object type check\n // Only returns true for plain JavaScript objects\n\n var isPlainObject = function isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n };\n var isDate = function isDate(value) {\n return value instanceof Date;\n };\n var isEvent = function isEvent(value) {\n return value instanceof Event;\n };\n var isFile = function isFile(value) {\n return value instanceof File;\n };\n var isRegExp = function isRegExp(value) {\n return toRawType(value) === 'RegExp';\n };\n var isPromise = function isPromise(value) {\n return !isUndefinedOrNull(value) && isFunction$1(value.then) && isFunction$1(value.catch);\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$1 = function defineProperty(obj, prop, descriptor) {\n return Object.defineProperty(obj, prop, descriptor);\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$1 = function toString(obj) {\n return Object.prototype.toString.call(obj);\n }; // --- Utilities ---\n // Shallow copy an object\n\n var clone = function clone(obj) {\n return _objectSpread2$3({}, obj);\n }; // Return a shallow copy of object with the specified properties only\n // See: https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc\n\n var pick$1 = 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$3(_objectSpread2$3({}, result), {}, _defineProperty({}, key, obj[key]));\n }, {});\n }; // Return a shallow copy of object with the specified properties omitted\n // See: https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc\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$3(_objectSpread2$3({}, result), {}, _defineProperty({}, key, obj[key]));\n }, {});\n }; // Merges two object deeply together\n // See: https://gist.github.com/Salakar/1d7137de9cb8b704e48a\n\n var mergeDeep = function mergeDeep(target, source) {\n if (isObject(target) && isObject(source)) {\n keys(source).forEach(function (key) {\n if (isObject(source[key])) {\n if (!target[key] || !isObject(target[key])) {\n target[key] = source[key];\n }\n\n mergeDeep(target[key], source[key]);\n } else {\n assign(target, _defineProperty({}, key, source[key]));\n }\n });\n }\n\n return target;\n }; // Returns a shallow copy of the object with keys in sorted order\n\n var sortKeys = function sortKeys(obj) {\n return keys(obj).sort().reduce(function (result, key) {\n return _objectSpread2$3(_objectSpread2$3({}, result), {}, _defineProperty({}, key, obj[key]));\n }, {});\n }; // Convenience method to create a read-only descriptor\n\n var readonlyDescriptor = function readonlyDescriptor() {\n return {\n enumerable: true,\n configurable: false,\n writable: false\n };\n };\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$1(result), [cloneDeep(val, val)]);\n }, []);\n }\n\n if (isPlainObject(obj)) {\n return keys(obj).reduce(function (result, key) {\n return _objectSpread2$3(_objectSpread2$3({}, 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 /**\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 value = getRaw(obj, path);\n return isUndefinedOrNull(value) ? defaultValue : value;\n };\n\n /**\n * Utilities to get information about the current environment\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') || getEnv('NODE_ENV') === 'production';\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 (IS_BROWSER) {\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 (HAS_PROMISE_SUPPORT) {\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 (HAS_MUTATION_OBSERVER_SUPPORT) {\n return false;\n } else {\n warn(\"\".concat(source, \": Requires MutationObserver support.\"));\n return true;\n }\n };\n\n var BvConfig = /*#__PURE__*/function () {\n function BvConfig() {\n _classCallCheck(this, BvConfig);\n\n this.$_config = {};\n } // Method to merge in user config parameters\n\n\n _createClass(BvConfig, [{\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 /* istanbul ignore next */\n if (!isPlainObject(config)) {\n return;\n }\n\n var configKeys = getOwnPropertyNames(config);\n configKeys.forEach(function (key) {\n /* istanbul ignore next */\n var subConfig = config[key];\n\n if (key === 'breakpoints') {\n /* istanbul ignore if */\n if (!isArray(subConfig) || subConfig.length < 2 || subConfig.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$2);\n } else {\n _this.$_config[key] = cloneDeep(subConfig);\n }\n } else if (isPlainObject(subConfig)) {\n // Component prop defaults\n _this.$_config[key] = getOwnPropertyNames(subConfig).reduce(function (config, prop) {\n if (!isUndefined(subConfig[prop])) {\n config[prop] = cloneDeep(subConfig[prop]);\n }\n\n return config;\n }, _this.$_config[key] || {});\n }\n });\n } // Clear the config\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 } // Returns a deep copy of the config value\n\n }, {\n key: \"getConfigValue\",\n value: function getConfigValue(key) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n return cloneDeep(getRaw(this.$_config, key, defaultValue));\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 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Vue__default['default'];\n // Ensure we have a `$bvConfig` Object on the Vue prototype\n // We set on Vue and OurVue just in case consumer has not set an alias of `vue`\n Vue.prototype[PROP_NAME$2] = Vue__default['default'].prototype[PROP_NAME$2] = Vue.prototype[PROP_NAME$2] || Vue__default['default'].prototype[PROP_NAME$2] || new BvConfig(); // Apply the config values\n\n Vue.prototype[PROP_NAME$2].setConfig(config);\n }; // Method for resetting the user config\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) {\n /* istanbul ignore next */\n if (!checkMultipleVueWarned && Vue__default['default'] !== Vue && !IS_JSDOM) {\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$3(_objectSpread2$3({}, 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 (HAS_WINDOW_SUPPORT && window.Vue) {\n window.Vue.use(VuePlugin);\n }\n /* istanbul ignore next */\n\n\n if (HAS_WINDOW_SUPPORT && VuePlugin.NAME) {\n window[VuePlugin.NAME] = VuePlugin;\n }\n };\n\n // Component names\n var NAME_ALERT = 'BAlert';\n var NAME_ASPECT = 'BAspect';\n var NAME_AVATAR = 'BAvatar';\n var NAME_AVATAR_GROUP = 'BAvatarGroup';\n var NAME_BADGE = 'BBadge';\n var NAME_BREADCRUMB = 'BBreadcrumb';\n var NAME_BREADCRUMB_ITEM = 'BBreadcrumbItem';\n var NAME_BREADCRUMB_LINK = 'BBreadcrumbLink';\n var NAME_BUTTON = 'BButton';\n var NAME_BUTTON_CLOSE = 'BButtonClose';\n var NAME_BUTTON_GROUP = 'BButtonGroup';\n var NAME_BUTTON_TOOLBAR = 'BButtonToolbar';\n var NAME_CALENDAR = 'BCalendar';\n var NAME_CARD = 'BCard';\n var NAME_CARD_BODY = 'BCardBody';\n var NAME_CARD_FOOTER = 'BCardFooter';\n var NAME_CARD_GROUP = 'BCardGroup';\n var NAME_CARD_HEADER = 'BCardHeader';\n var NAME_CARD_IMG = 'BCardImg';\n var NAME_CARD_IMG_LAZY = 'BCardImgLazy';\n var NAME_CARD_SUB_TITLE = 'BCardSubTitle';\n var NAME_CARD_TEXT = 'BCardText';\n var NAME_CARD_TITLE = 'BCardTitle';\n var NAME_CAROUSEL = 'BCarousel';\n var NAME_CAROUSEL_SLIDE = 'BCarouselSlide';\n var NAME_COL = 'BCol';\n var NAME_COLLAPSE = 'BCollapse';\n var NAME_CONTAINER = 'BContainer';\n var NAME_DROPDOWN = 'BDropdown';\n var NAME_DROPDOWN_DIVIDER = 'BDropdownDivider';\n var NAME_DROPDOWN_FORM = 'BDropdownForm';\n var NAME_DROPDOWN_GROUP = 'BDropdownGroup';\n var NAME_DROPDOWN_HEADER = 'BDropdownHeader';\n var NAME_DROPDOWN_ITEM = 'BDropdownItem';\n var NAME_DROPDOWN_ITEM_BUTTON = 'BDropdownItemButton';\n var NAME_DROPDOWN_TEXT = 'BDropdownText';\n var NAME_EMBED = 'BEmbed';\n var NAME_FORM = 'BForm';\n var NAME_FORM_CHECKBOX = 'BFormCheckbox';\n var NAME_FORM_CHECKBOX_GROUP = 'BFormCheckboxGroup';\n var NAME_FORM_DATALIST = 'BFormDatalist';\n var NAME_FORM_DATEPICKER = 'BFormDatepicker';\n var NAME_FORM_FILE = 'BFormFile';\n var NAME_FORM_GROUP = 'BFormGroup';\n var NAME_FORM_INPUT = 'BFormInput';\n var NAME_FORM_INVALID_FEEDBACK = 'BFormInvalidFeedback';\n var NAME_FORM_RADIO = 'BFormRadio';\n var NAME_FORM_RADIO_GROUP = 'BFormRadioGroup';\n var NAME_FORM_RATING = 'BFormRating';\n var NAME_FORM_ROW = 'BFormRow';\n var NAME_FORM_SELECT = 'BFormSelect';\n var NAME_FORM_SELECT_OPTION = 'BFormSelectOption';\n var NAME_FORM_SELECT_OPTION_GROUP = 'BFormSelectOptionGroup';\n var NAME_FORM_SPINBUTTON = 'BFormSpinbutton';\n var NAME_FORM_TAG = 'BFormTag';\n var NAME_FORM_TAGS = 'BFormTags';\n var NAME_FORM_TEXT = 'BFormText';\n var NAME_FORM_TEXTAREA = 'BFormTextarea';\n var NAME_FORM_TIMEPICKER = 'BFormTimepicker';\n var NAME_FORM_VALID_FEEDBACK = 'BFormValidFeedback';\n var NAME_ICON = 'BIcon';\n var NAME_ICONSTACK = 'BIconstack';\n var NAME_ICON_BASE = 'BIconBase';\n var NAME_IMG = 'BImg';\n var NAME_IMG_LAZY = 'BImgLazy';\n var NAME_INPUT_GROUP = 'BInputGroup';\n var NAME_INPUT_GROUP_ADDON = 'BInputGroupAddon';\n var NAME_INPUT_GROUP_APPEND = 'BInputGroupAppend';\n var NAME_INPUT_GROUP_PREPEND = 'BInputGroupPrepend';\n var NAME_INPUT_GROUP_TEXT = 'BInputGroupText';\n var NAME_JUMBOTRON = 'BJumbotron';\n var NAME_LINK = 'BLink';\n var NAME_LIST_GROUP = 'BListGroup';\n var NAME_LIST_GROUP_ITEM = 'BListGroupItem';\n var NAME_MEDIA = 'BMedia';\n var NAME_MEDIA_ASIDE = 'BMediaAside';\n var NAME_MEDIA_BODY = 'BMediaBody';\n var NAME_MODAL = 'BModal';\n var NAME_MSG_BOX = 'BMsgBox';\n var NAME_NAV = 'BNav';\n var NAME_NAVBAR = 'BNavbar';\n var NAME_NAVBAR_BRAND = 'BNavbarBrand';\n var NAME_NAVBAR_NAV = 'BNavbarNav';\n var NAME_NAVBAR_TOGGLE = 'BNavbarToggle';\n var NAME_NAV_FORM = 'BNavForm';\n var NAME_NAV_ITEM = 'BNavItem';\n var NAME_NAV_ITEM_DROPDOWN = 'BNavItemDropdown';\n var NAME_NAV_TEXT = 'BNavText';\n var NAME_OVERLAY = 'BOverlay';\n var NAME_PAGINATION = 'BPagination';\n var NAME_PAGINATION_NAV = 'BPaginationNav';\n var NAME_POPOVER = 'BPopover';\n var NAME_PROGRESS = 'BProgress';\n var NAME_PROGRESS_BAR = 'BProgressBar';\n var NAME_ROW = 'BRow';\n var NAME_SIDEBAR = 'BSidebar';\n var NAME_SKELETON = 'BSkeleton';\n var NAME_SKELETON_ICON = 'BSkeletonIcon';\n var NAME_SKELETON_IMG = 'BSkeletonImg';\n var NAME_SKELETON_TABLE = 'BSkeletonTable';\n var NAME_SKELETON_WRAPPER = 'BSkeletonWrapper';\n var NAME_SPINNER = 'BSpinner';\n var NAME_TAB = 'BTab';\n var NAME_TABLE = 'BTable';\n var NAME_TABLE_CELL = 'BTableCell';\n var NAME_TABLE_LITE = 'BTableLite';\n var NAME_TABLE_SIMPLE = 'BTableSimple';\n var NAME_TABS = 'BTabs';\n var NAME_TBODY = 'BTbody';\n var NAME_TFOOT = 'BTfoot';\n var NAME_TH = 'BTh';\n var NAME_THEAD = 'BThead';\n var NAME_TIME = 'BTime';\n var NAME_TOAST = 'BToast';\n var NAME_TOASTER = 'BToaster';\n var NAME_TOOLTIP = 'BTooltip';\n var NAME_TR = 'BTr'; // Helper component names\n\n var NAME_COLLAPSE_HELPER = 'BVCollapse';\n var NAME_FORM_BUTTON_LABEL_CONTROL = 'BVFormBtnLabelControl';\n var NAME_FORM_RATING_STAR = 'BVFormRatingStar';\n var NAME_POPOVER_HELPER = 'BVPopover';\n var NAME_POPOVER_TEMPLATE = 'BVPopoverTemplate';\n var NAME_POPPER = 'BVPopper';\n var NAME_TAB_BUTTON_HELPER = 'BVTabButton';\n var NAME_TOAST_POP = 'BVToastPop';\n var NAME_TOOLTIP_HELPER = 'BVTooltip';\n var NAME_TOOLTIP_TEMPLATE = 'BVTooltipTemplate';\n var NAME_TRANSITION = 'BVTransition';\n var NAME_TRANSPORTER = 'BVTransporter';\n var NAME_TRANSPORTER_TARGET = 'BVTransporterTarget';\n\n var EVENT_NAME_ACTIVATE_TAB = 'activate-tab';\n var EVENT_NAME_BLUR = 'blur';\n var EVENT_NAME_CANCEL = 'cancel';\n var EVENT_NAME_CHANGE = 'change';\n var EVENT_NAME_CHANGED = 'changed';\n var EVENT_NAME_CLICK = 'click';\n var EVENT_NAME_CLOSE = 'close';\n var EVENT_NAME_CONTEXT = 'context';\n var EVENT_NAME_CONTEXT_CHANGED = 'context-changed';\n var EVENT_NAME_DESTROYED = 'destroyed';\n var EVENT_NAME_DISABLE = 'disable';\n var EVENT_NAME_DISABLED = 'disabled';\n var EVENT_NAME_DISMISSED = 'dismissed';\n var EVENT_NAME_DISMISS_COUNT_DOWN = 'dismiss-count-down';\n var EVENT_NAME_ENABLE = 'enable';\n var EVENT_NAME_ENABLED = 'enabled';\n var EVENT_NAME_FILTERED = 'filtered';\n var EVENT_NAME_FIRST = 'first';\n var EVENT_NAME_FOCUS = 'focus';\n var EVENT_NAME_FOCUSIN = 'focusin';\n var EVENT_NAME_FOCUSOUT = 'focusout';\n var EVENT_NAME_HEAD_CLICKED = 'head-clicked';\n var EVENT_NAME_HIDDEN = 'hidden';\n var EVENT_NAME_HIDE = 'hide';\n var EVENT_NAME_IMG_ERROR = 'img-error';\n var EVENT_NAME_INPUT = 'input';\n var EVENT_NAME_LAST = 'last';\n var EVENT_NAME_MOUSEENTER = 'mouseenter';\n var EVENT_NAME_MOUSELEAVE = 'mouseleave';\n var EVENT_NAME_NEXT = 'next';\n var EVENT_NAME_OK = 'ok';\n var EVENT_NAME_OPEN = 'open';\n var EVENT_NAME_PAGE_CLICK = 'page-click';\n var EVENT_NAME_PAUSED = 'paused';\n var EVENT_NAME_PREV = 'prev';\n var EVENT_NAME_REFRESH = 'refresh';\n var EVENT_NAME_REFRESHED = 'refreshed';\n var EVENT_NAME_REMOVE = 'remove';\n var EVENT_NAME_ROW_CLICKED = 'row-clicked';\n var EVENT_NAME_ROW_CONTEXTMENU = 'row-contextmenu';\n var EVENT_NAME_ROW_DBLCLICKED = 'row-dblclicked';\n var EVENT_NAME_ROW_HOVERED = 'row-hovered';\n var EVENT_NAME_ROW_MIDDLE_CLICKED = 'row-middle-clicked';\n var EVENT_NAME_ROW_SELECTED = 'row-selected';\n var EVENT_NAME_ROW_UNHOVERED = 'row-unhovered';\n var EVENT_NAME_SELECTED = 'selected';\n var EVENT_NAME_SHOW = 'show';\n var EVENT_NAME_SHOWN = 'shown';\n var EVENT_NAME_SLIDING_END = 'sliding-end';\n var EVENT_NAME_SLIDING_START = 'sliding-start';\n var EVENT_NAME_SORT_CHANGED = 'sort-changed';\n var EVENT_NAME_TAG_STATE = 'tag-state';\n var EVENT_NAME_TOGGLE = 'toggle';\n var EVENT_NAME_UNPAUSED = 'unpaused';\n var EVENT_NAME_UPDATE = 'update';\n var HOOK_EVENT_NAME_BEFORE_DESTROY = isVue3 ? 'vnodeBeforeUnmount' : 'hook:beforeDestroy';\n var HOOK_EVENT_NAME_DESTROYED = isVue3 ? 'vNodeUnmounted' : 'hook:destroyed';\n var MODEL_EVENT_NAME_PREFIX = 'update:';\n var ROOT_EVENT_NAME_PREFIX = 'bv';\n var ROOT_EVENT_NAME_SEPARATOR = '::';\n var EVENT_OPTIONS_PASSIVE = {\n passive: true\n };\n var EVENT_OPTIONS_NO_CAPTURE = {\n passive: true,\n capture: false\n };\n\n // General types\n var PROP_TYPE_ANY = undefined;\n var PROP_TYPE_ARRAY = Array;\n var PROP_TYPE_BOOLEAN = Boolean;\n var PROP_TYPE_DATE = Date;\n var PROP_TYPE_FUNCTION = Function;\n var PROP_TYPE_NUMBER = Number;\n var PROP_TYPE_OBJECT = Object;\n var PROP_TYPE_REG_EXP = RegExp;\n var PROP_TYPE_STRING = String; // Multiple types\n\n var PROP_TYPE_ARRAY_FUNCTION = [PROP_TYPE_ARRAY, PROP_TYPE_FUNCTION];\n var PROP_TYPE_ARRAY_OBJECT = [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT];\n var PROP_TYPE_ARRAY_OBJECT_STRING = [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING];\n var PROP_TYPE_ARRAY_STRING = [PROP_TYPE_ARRAY, PROP_TYPE_STRING];\n var PROP_TYPE_BOOLEAN_NUMBER = [PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER];\n var PROP_TYPE_BOOLEAN_NUMBER_STRING = [PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_STRING];\n var PROP_TYPE_BOOLEAN_STRING = [PROP_TYPE_BOOLEAN, PROP_TYPE_STRING];\n var PROP_TYPE_DATE_STRING = [PROP_TYPE_DATE, PROP_TYPE_STRING];\n var PROP_TYPE_FUNCTION_STRING = [PROP_TYPE_FUNCTION, PROP_TYPE_STRING];\n var PROP_TYPE_NUMBER_STRING = [PROP_TYPE_NUMBER, PROP_TYPE_STRING];\n var PROP_TYPE_NUMBER_OBJECT_STRING = [PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_STRING];\n var PROP_TYPE_OBJECT_FUNCTION = [PROP_TYPE_OBJECT, PROP_TYPE_FUNCTION];\n var PROP_TYPE_OBJECT_STRING = [PROP_TYPE_OBJECT, PROP_TYPE_STRING];\n\n var SLOT_NAME_ADD_BUTTON_TEXT = 'add-button-text';\n var SLOT_NAME_APPEND = 'append';\n var SLOT_NAME_ASIDE = 'aside';\n var SLOT_NAME_BADGE = 'badge';\n var SLOT_NAME_BOTTOM_ROW = 'bottom-row';\n var SLOT_NAME_BUTTON_CONTENT = 'button-content';\n var SLOT_NAME_CUSTOM_FOOT = 'custom-foot';\n var SLOT_NAME_DECREMENT = 'decrement';\n var SLOT_NAME_DEFAULT = 'default';\n var SLOT_NAME_DESCRIPTION = 'description';\n var SLOT_NAME_DISMISS = 'dismiss';\n var SLOT_NAME_DROP_PLACEHOLDER = 'drop-placeholder';\n var SLOT_NAME_ELLIPSIS_TEXT = 'ellipsis-text';\n var SLOT_NAME_EMPTY = 'empty';\n var SLOT_NAME_EMPTYFILTERED = 'emptyfiltered';\n var SLOT_NAME_FILE_NAME = 'file-name';\n var SLOT_NAME_FIRST = 'first';\n var SLOT_NAME_FIRST_TEXT = 'first-text';\n var SLOT_NAME_FOOTER = 'footer';\n var SLOT_NAME_HEADER = 'header';\n var SLOT_NAME_HEADER_CLOSE = 'header-close';\n var SLOT_NAME_ICON_CLEAR = 'icon-clear';\n var SLOT_NAME_ICON_EMPTY = 'icon-empty';\n var SLOT_NAME_ICON_FULL = 'icon-full';\n var SLOT_NAME_ICON_HALF = 'icon-half';\n var SLOT_NAME_IMG = 'img';\n var SLOT_NAME_INCREMENT = 'increment';\n var SLOT_NAME_INVALID_FEEDBACK = 'invalid-feedback';\n var SLOT_NAME_LABEL = 'label';\n var SLOT_NAME_LAST_TEXT = 'last-text';\n var SLOT_NAME_LEAD = 'lead';\n var SLOT_NAME_LOADING = 'loading';\n var SLOT_NAME_MODAL_BACKDROP = 'modal-backdrop';\n var SLOT_NAME_MODAL_CANCEL = 'modal-cancel';\n var SLOT_NAME_MODAL_FOOTER = 'modal-footer';\n var SLOT_NAME_MODAL_HEADER = 'modal-header';\n var SLOT_NAME_MODAL_HEADER_CLOSE = 'modal-header-close';\n var SLOT_NAME_MODAL_OK = 'modal-ok';\n var SLOT_NAME_MODAL_TITLE = 'modal-title';\n var SLOT_NAME_NAV_NEXT_DECADE = 'nav-next-decade';\n var SLOT_NAME_NAV_NEXT_MONTH = 'nav-next-month';\n var SLOT_NAME_NAV_NEXT_YEAR = 'nav-next-year';\n var SLOT_NAME_NAV_PEV_DECADE = 'nav-prev-decade';\n var SLOT_NAME_NAV_PEV_MONTH = 'nav-prev-month';\n var SLOT_NAME_NAV_PEV_YEAR = 'nav-prev-year';\n var SLOT_NAME_NAV_THIS_MONTH = 'nav-this-month';\n var SLOT_NAME_NEXT_TEXT = 'next-text';\n var SLOT_NAME_OVERLAY = 'overlay';\n var SLOT_NAME_PAGE = 'page';\n var SLOT_NAME_PLACEHOLDER = 'placeholder';\n var SLOT_NAME_PREPEND = 'prepend';\n var SLOT_NAME_PREV_TEXT = 'prev-text';\n var SLOT_NAME_ROW_DETAILS = 'row-details';\n var SLOT_NAME_TABLE_BUSY = 'table-busy';\n var SLOT_NAME_TABLE_CAPTION = 'table-caption';\n var SLOT_NAME_TABLE_COLGROUP = 'table-colgroup';\n var SLOT_NAME_TABS_END = 'tabs-end';\n var SLOT_NAME_TABS_START = 'tabs-start';\n var SLOT_NAME_TEXT = 'text';\n var SLOT_NAME_THEAD_TOP = 'thead-top';\n var SLOT_NAME_TITLE = 'title';\n var SLOT_NAME_TOAST_TITLE = 'toast-title';\n var SLOT_NAME_TOP_ROW = 'top-row';\n var SLOT_NAME_VALID_FEEDBACK = 'valid-feedback';\n\n var from = function from() {\n return Array.from.apply(Array, arguments);\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 }; // --- Utilities ---\n\n var createArray = function createArray(length, fillFn) {\n var mapFn = isFunction$1(fillFn) ? fillFn : function () {\n return fillFn;\n };\n return Array.apply(null, {\n length: length\n }).map(mapFn);\n };\n var flatten = function flatten(array) {\n return array.reduce(function (result, item) {\n return concat(result, item);\n }, []);\n };\n var flattenDeep = function flattenDeep(array) {\n return array.reduce(function (result, item) {\n return concat(result, Array.isArray(item) ? flattenDeep(item) : item);\n }, []);\n };\n\n // In functional components, `slots` is a function so it must be called\n // first before passing to the below methods. `scopedSlots` is always an\n // object and may be undefined (for Vue < 2.6.x)\n\n /**\n * Returns true if either scoped or unscoped named slot exists\n *\n * @param {String, Array} name or name[]\n * @param {Object} scopedSlots\n * @param {Object} slots\n * @returns {Array|undefined} VNodes\n */\n\n var hasNormalizedSlot = function hasNormalizedSlot(names) {\n var $scopedSlots = arguments.length > 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 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$1(slot) ? slot(scope) : slot;\n };\n\n var normalizeSlotMixin = extend({\n methods: {\n // Returns `true` if the either a `$scopedSlot` or `$slot` exists with the specified name\n // `name` can be a string name or an array of names\n hasNormalizedSlot: function hasNormalizedSlot$1() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SLOT_NAME_DEFAULT;\n var scopedSlots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.$scopedSlots;\n var slots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.$slots;\n return hasNormalizedSlot(name, scopedSlots, slots);\n },\n // Returns an array of rendered VNodes if slot found, otherwise `undefined`\n // `name` can be a string name or an array of names\n normalizeSlot: function normalizeSlot$1() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SLOT_NAME_DEFAULT;\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var scopedSlots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.$scopedSlots;\n var slots = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.$slots;\n\n var vNodes = normalizeSlot(name, scope, scopedSlots, slots);\n\n return vNodes ? concat(vNodes) : vNodes;\n }\n }\n });\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 // 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 }; // Converts a string, including strings in camelCase or snake_case, into Start Case\n // It keeps original single quote and hyphen in the word\n // https://github.com/UrbanCompass/to-start-case\n\n var startCase = function startCase(str) {\n return str.replace(RX_UNDERSCORE, ' ').replace(RX_LOWER_UPPER, function (str, $1, $2) {\n return $1 + ' ' + $2;\n }).replace(RX_START_SPACE_WORD, function (str, $1, $2) {\n return $1 + $2.toUpperCase();\n });\n }; // 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 = 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(str).replace(RX_TRIM_LEFT, '');\n }; // Remove Trailing white space from a string\n\n var trim = function trim(str) {\n return toString(str).trim();\n }; // Lower case a string\n\n var lowerCase = function lowerCase(str) {\n return toString(str).toLowerCase();\n }; // Upper case a string\n\n var ELEMENT_PROTO = Element.prototype;\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(', '); // --- 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 = ELEMENT_PROTO.matches || ELEMENT_PROTO.msMatchesSelector || ELEMENT_PROTO.webkitMatchesSelector; // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n\n /* istanbul ignore next */\n\n var closestEl = ELEMENT_PROTO.closest || function (sel) {\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 = (WINDOW.requestAnimationFrame || WINDOW.webkitRequestAnimationFrame || WINDOW.mozRequestAnimationFrame || WINDOW.msRequestAnimationFrame || WINDOW.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 }).bind(WINDOW);\n var MutationObs = WINDOW.MutationObserver || WINDOW.WebKitMutationObserver || WINDOW.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 = DOCUMENT.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(tag).toLowerCase() === toString(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(DOCUMENT.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 (getStyle(el, '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 : DOCUMENT).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 : DOCUMENT).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$1(parent.contains) ? parent.contains(child) : false;\n }; // Get an element given an ID\n\n var getById = function getById(id) {\n return DOCUMENT.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, value) {\n if (attr && isElement(el)) {\n el.setAttribute(attr, value);\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 }; // Set an style property on an element\n\n var setStyle = function setStyle(el, prop, value) {\n if (prop && isElement(el)) {\n el.style[prop] = value;\n }\n }; // Remove an style property from an element\n\n var removeStyle = function removeStyle(el, prop) {\n if (prop && isElement(el)) {\n el.style[prop] = '';\n }\n }; // Get an style property value from an element\n // Returns `null` if not found\n\n var getStyle = function getStyle(el, prop) {\n return prop && isElement(el) ? el.style[prop] || null : 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 var getComputedStyle = WINDOW.getComputedStyle;\n return getComputedStyle && isElement(el) ? 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 var getSelection = WINDOW.getSelection;\n return getSelection ? WINDOW.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$1 = 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$1(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$1(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 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 VueProto = Vue__default['default'].prototype; // --- Getter methods ---\n\n var getConfigValue = function getConfigValue(key) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n var bvConfig = VueProto[PROP_NAME$2];\n return bvConfig ? bvConfig.getConfigValue(key, defaultValue) : cloneDeep(defaultValue);\n }; // Method to grab a config value for a particular component\n\n var getComponentConfig = function getComponentConfig(key) {\n var propKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n // Return the particular config value for key if specified,\n // otherwise we return the full config (or an empty object if not found)\n return propKey ? getConfigValue(\"\".concat(key, \".\").concat(propKey), defaultValue) : getConfigValue(key, {});\n }; // Get all breakpoint names\n\n var getBreakpoints = function getBreakpoints() {\n return getConfigValue('breakpoints', DEFAULT_BREAKPOINT);\n }; // Private method for caching breakpoint names\n\n var _getBreakpointsCached = memoize(function () {\n return getBreakpoints();\n }); // Get all breakpoint names (cached)\n\n\n var getBreakpointsCached = function getBreakpointsCached() {\n return cloneDeep(_getBreakpointsCached());\n }; // Get breakpoints with the smallest breakpoint set as ''\n // Useful for components that create breakpoint specific props\n\n var getBreakpointsUpCached = memoize(function () {\n var breakpoints = getBreakpointsCached();\n breakpoints[0] = '';\n return breakpoints;\n }); // Get breakpoints with the largest breakpoint set as ''\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, value) {\n return value + (suffix ? upperFirst(suffix) : '');\n }; // Generates a prop object\n\n var makeProp = function makeProp() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : PROP_TYPE_ANY;\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n var requiredOrValidator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n var validator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;\n var required = requiredOrValidator === true;\n validator = required ? validator : requiredOrValidator;\n return _objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, type ? {\n type: type\n } : {}), required ? {\n required: required\n } : isUndefined(value) ? {} : {\n default: isObject(value) ? function () {\n return value;\n } : value\n }), isUndefined(validator) ? {} : {\n validator: validator\n });\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 }; // Make a prop object configurable by global configuration\n // Replaces the current `default` key of each prop with a `getComponentConfig()`\n // call that falls back to the current default value of the prop\n\n var makePropConfigurable = function makePropConfigurable(prop, key, componentKey) {\n return _objectSpread2$3(_objectSpread2$3({}, cloneDeep(prop)), {}, {\n default: function bvConfigurablePropDefault() {\n var value = getComponentConfig(componentKey, key, prop.default);\n return isFunction$1(value) ? value() : value;\n }\n });\n }; // Make a props object configurable by global configuration\n // Replaces the current `default` key of each prop with a `getComponentConfig()`\n // call that falls back to the current default value of the prop\n\n var makePropsConfigurable = function makePropsConfigurable(props, componentKey) {\n return keys(props).reduce(function (result, key) {\n return _objectSpread2$3(_objectSpread2$3({}, result), {}, _defineProperty({}, key, makePropConfigurable(props[key], key, componentKey)));\n }, {});\n }; // Get function name we use in `makePropConfigurable()`\n // for the prop default value override to compare\n // against in `hasPropFunction()`\n\n var configurablePropDefaultFnName = makePropConfigurable({}, '', '').default.name; // Detect wether the given value is currently a function\n // and isn't the props default function\n\n var hasPropFunction = function hasPropFunction(fn) {\n return isFunction$1(fn) && fn.name && fn.name !== configurablePropDefaultFnName;\n };\n\n var makeModelMixin = function makeModelMixin(prop) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? PROP_TYPE_ANY : _ref$type,\n _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? undefined : _ref$defaultValue,\n _ref$validator = _ref.validator,\n validator = _ref$validator === void 0 ? undefined : _ref$validator,\n _ref$event = _ref.event,\n event = _ref$event === void 0 ? EVENT_NAME_INPUT : _ref$event;\n\n var props = _defineProperty({}, prop, makeProp(type, defaultValue, validator)); // @vue/component\n\n\n var mixin = extend({\n model: {\n prop: prop,\n event: event\n },\n props: props\n });\n return {\n mixin: mixin,\n props: props,\n prop: prop,\n event: event\n };\n };\n\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 (HAS_PASSIVE_EVENT_SUPPORT) {\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, eventName, handler, options) {\n if (el && el.addEventListener) {\n el.addEventListener(eventName, handler, parseEventOptions(options));\n }\n }; // Remove an event listener from an element\n\n var eventOff = function eventOff(el, eventName, handler, options) {\n if (el && el.removeEventListener) {\n el.removeEventListener(eventName, 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 }; // Utility method to prevent the default event handling and propagation\n\n var stopEvent = function stopEvent(event) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$preventDefault = _ref.preventDefault,\n preventDefault = _ref$preventDefault === void 0 ? true : _ref$preventDefault,\n _ref$propagation = _ref.propagation,\n propagation = _ref$propagation === void 0 ? true : _ref$propagation,\n _ref$immediatePropaga = _ref.immediatePropagation,\n immediatePropagation = _ref$immediatePropaga === void 0 ? false : _ref$immediatePropaga;\n\n if (preventDefault) {\n event.preventDefault();\n }\n\n if (propagation) {\n event.stopPropagation();\n }\n\n if (immediatePropagation) {\n event.stopImmediatePropagation();\n }\n }; // Helper method to convert a component/directive name to a base event name\n // `getBaseEventName('BNavigationItem')` => 'navigation-item'\n // `getBaseEventName('BVToggle')` => 'toggle'\n\n var getBaseEventName = function getBaseEventName(value) {\n return kebabCase(value.replace(RX_BV_PREFIX, ''));\n }; // Get a root event name by component/directive and event name\n // `getBaseEventName('BModal', 'show')` => 'bv::modal::show'\n\n\n var getRootEventName = function getRootEventName(name, eventName) {\n return [ROOT_EVENT_NAME_PREFIX, getBaseEventName(name), eventName].join(ROOT_EVENT_NAME_SEPARATOR);\n }; // Get a root action event name by component/directive and action name\n // `getRootActionEventName('BModal', 'show')` => 'bv::show::modal'\n\n var getRootActionEventName = function getRootActionEventName(name, actionName) {\n return [ROOT_EVENT_NAME_PREFIX, actionName, getBaseEventName(name)].join(ROOT_EVENT_NAME_SEPARATOR);\n };\n\n var props$2l = makePropsConfigurable({\n ariaLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n content: makeProp(PROP_TYPE_STRING, '×'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n textVariant: makeProp(PROP_TYPE_STRING)\n }, NAME_BUTTON_CLOSE); // --- Main component ---\n // @vue/component\n\n var BButtonClose = /*#__PURE__*/extend({\n name: NAME_BUTTON_CLOSE,\n functional: true,\n props: props$2l,\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(event) {\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(event)) {\n stopEvent(event);\n }\n }\n }\n }; // Careful not to override the default slot with innerHTML\n\n if (!hasNormalizedSlot(SLOT_NAME_DEFAULT, $scopedSlots, $slots)) {\n componentData.domProps = {\n innerHTML: props.content\n };\n }\n\n return h('button', a(data, componentData), normalizeSlot(SLOT_NAME_DEFAULT, {}, $scopedSlots, $slots));\n }\n });\n\n var NO_FADE_PROPS = {\n name: '',\n enterClass: '',\n enterActiveClass: '',\n enterToClass: 'show',\n leaveClass: 'show',\n leaveActiveClass: '',\n leaveToClass: ''\n };\n\n var FADE_PROPS = _objectSpread2$3(_objectSpread2$3({}, NO_FADE_PROPS), {}, {\n enterActiveClass: 'fade',\n leaveActiveClass: 'fade'\n }); // --- Props ---\n\n\n var props$2k = {\n // Has no effect if `trans-props` provided\n appear: makeProp(PROP_TYPE_BOOLEAN, false),\n // Can be overridden by user supplied `trans-props`\n mode: makeProp(PROP_TYPE_STRING),\n // Only applicable to the built in transition\n // Has no effect if `trans-props` provided\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n // For user supplied transitions (if needed)\n transProps: makeProp(PROP_TYPE_OBJECT)\n }; // --- Main component ---\n // @vue/component\n\n var BVTransition = /*#__PURE__*/extend({\n name: NAME_TRANSITION,\n functional: true,\n props: props$2k,\n render: function render(h, _ref) {\n var children = _ref.children,\n data = _ref.data,\n props = _ref.props;\n var transProps = props.transProps;\n\n if (!isPlainObject(transProps)) {\n transProps = props.noFade ? NO_FADE_PROPS : FADE_PROPS;\n\n if (props.appear) {\n // Default the appear classes to equal the enter classes\n transProps = _objectSpread2$3(_objectSpread2$3({}, transProps), {}, {\n appear: true,\n appearClass: transProps.enterClass,\n appearActiveClass: transProps.enterActiveClass,\n appearToClass: transProps.enterToClass\n });\n }\n }\n\n transProps = _objectSpread2$3(_objectSpread2$3({\n mode: props.mode\n }, transProps), {}, {\n // We always need `css` true\n css: true\n });\n\n var dataCopy = _objectSpread2$3({}, data);\n\n delete dataCopy.props;\n return h('transition', // Any transition event listeners will get merged here\n a(dataCopy, {\n props: transProps\n }), children);\n }\n });\n\n var _watch$k;\n\n var _makeModelMixin$k = makeModelMixin('show', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: false\n }),\n modelMixin$j = _makeModelMixin$k.mixin,\n modelProps$j = _makeModelMixin$k.props,\n MODEL_PROP_NAME$j = _makeModelMixin$k.prop,\n MODEL_EVENT_NAME$j = _makeModelMixin$k.event; // --- Helper methods ---\n // Convert `show` value to a number\n\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 }; // --- Props ---\n\n\n var props$2j = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, modelProps$j), {}, {\n dismissLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n dismissible: makeProp(PROP_TYPE_BOOLEAN, false),\n fade: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING, 'info')\n })), NAME_ALERT); // --- Main component ---\n // @vue/component\n\n var BAlert = /*#__PURE__*/extend({\n name: NAME_ALERT,\n mixins: [modelMixin$j, normalizeSlotMixin],\n props: props$2j,\n data: function data() {\n return {\n countDown: 0,\n // If initially shown, we need to set these for SSR\n localShow: parseShow(this[MODEL_PROP_NAME$j])\n };\n },\n watch: (_watch$k = {}, _defineProperty(_watch$k, MODEL_PROP_NAME$j, function (newValue) {\n this.countDown = parseCountDown(newValue);\n this.localShow = parseShow(newValue);\n }), _defineProperty(_watch$k, \"countDown\", function countDown(newValue) {\n var _this = this;\n\n this.clearCountDownInterval();\n var show = this[MODEL_PROP_NAME$j]; // Ignore if `show` transitions to a boolean value\n\n if (isNumeric$1(show)) {\n this.$emit(EVENT_NAME_DISMISS_COUNT_DOWN, newValue); // Update the v-model if needed\n\n if (show !== newValue) {\n this.$emit(MODEL_EVENT_NAME$j, newValue);\n }\n\n if (newValue > 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 }), _defineProperty(_watch$k, \"localShow\", function localShow(newValue) {\n var show = this[MODEL_PROP_NAME$j]; // Only emit dismissed events for dismissible or auto-dismissing alerts\n\n if (!newValue && (this.dismissible || isNumeric$1(show))) {\n this.$emit(EVENT_NAME_DISMISSED);\n } // Only emit booleans if we weren't passed a number via v-model\n\n\n if (!isNumeric$1(show) && show !== newValue) {\n this.$emit(MODEL_EVENT_NAME$j, newValue);\n }\n }), _watch$k),\n created: function created() {\n // Create private non-reactive props\n this.$_filterTimer = null;\n var show = this[MODEL_PROP_NAME$j];\n this.countDown = parseCountDown(show);\n this.localShow = parseShow(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 clearTimeout(this.$_countDownTimeout);\n this.$_countDownTimeout = null;\n }\n },\n render: function render(h) {\n var $alert = h();\n\n if (this.localShow) {\n var dismissible = this.dismissible,\n variant = this.variant;\n var $dismissButton = h();\n\n if (dismissible) {\n // Add dismiss button\n $dismissButton = h(BButtonClose, {\n attrs: {\n 'aria-label': this.dismissLabel\n },\n on: {\n click: this.dismiss\n }\n }, [this.normalizeSlot(SLOT_NAME_DISMISS)]);\n }\n\n $alert = h('div', {\n staticClass: 'alert',\n class: _defineProperty({\n 'alert-dismissible': dismissible\n }, \"alert-\".concat(variant), variant),\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-atomic': true\n },\n key: this[COMPONENT_UID_KEY]\n }, [$dismissButton, this.normalizeSlot()]);\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 CLASS_NAME$3 = 'b-aspect'; // --- Props ---\n\n var props$2i = makePropsConfigurable({\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 aspect: makeProp(PROP_TYPE_NUMBER_STRING, '1:1'),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }, NAME_ASPECT); // --- Main component ---\n // @vue/component\n\n var BAspect = /*#__PURE__*/extend({\n name: NAME_ASPECT,\n mixins: [normalizeSlotMixin],\n props: props$2i,\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_ASPECT_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$3, \"-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$3, \"-content flex-grow-1 w-100 mw-100\"),\n style: {\n marginLeft: '-100%'\n }\n }, this.normalizeSlot());\n return h(this.tag, {\n staticClass: \"\".concat(CLASS_NAME$3, \" d-flex\")\n }, [$sizer, $content]);\n }\n });\n\n var AspectPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BAspect: BAspect\n }\n });\n\n function safeVueInstance(target) {\n if (!isVue3) {\n return target;\n }\n\n return new Proxy(target, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : undefined;\n }\n });\n }\n\n var ANCHOR_TAG = 'a'; // 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(str)).replace(RX_ENCODE_REVERSE, encodeReserveReplacer).replace(RX_ENCODED_COMMA, ',');\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 value = obj[key];\n\n if (isUndefined(value)) {\n return '';\n } else if (isNull(value)) {\n return encode(key);\n } else if (isArray(value)) {\n return value.reduce(function (results, value2) {\n if (isNull(value2)) {\n results.push(encode(key));\n } else if (!isUndefined(value2)) {\n // Faster than string interpolation\n results.push(encode(key) + '=' + encode(value2));\n }\n\n return results;\n }, []).join('&');\n } // Faster than string interpolation\n\n\n return encode(key) + '=' + encode(value);\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(query).trim().replace(RX_QUERY_START, '');\n\n if (!query) {\n return parsed;\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(RX_PLUS, ' ').split('=');\n var key = decode(parts.shift());\n var value = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (isUndefined(parsed[key])) {\n parsed[key] = value;\n } else if (isArray(parsed[key])) {\n parsed[key].push(value);\n } else {\n parsed[key] = [parsed[key], value];\n }\n });\n return parsed;\n };\n var isLink$1 = function isLink(props) {\n return !!(props.href || props.to);\n };\n var isRouterLink = function isRouterLink(tag) {\n return !!(tag && !isTag(tag, 'a'));\n };\n var computeTag = function computeTag(_ref, thisOrParent) {\n var to = _ref.to,\n disabled = _ref.disabled,\n routerComponentName = _ref.routerComponentName;\n var hasRouter = !!safeVueInstance(thisOrParent).$router;\n var hasNuxt = !!safeVueInstance(thisOrParent).$nuxt;\n\n if (!hasRouter || hasRouter && (disabled || !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 || (hasNuxt ? '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 return target === '_blank' && isNull(rel) ? 'noopener' : 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 // Return `href` when explicitly provided\n if (href) {\n return href;\n } // We've checked for `$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\n\n if (isRouterLink(tag)) {\n return null;\n } // Fallback to `to` prop (if `to` is a string)\n\n\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(to.path);\n var query = stringifyQueryObj(to.query);\n var hash = toString(to.hash);\n hash = !hash || hash.charAt(0) === '#' ? hash : \"#\".concat(hash);\n return \"\".concat(path).concat(query).concat(hash) || toFallback;\n } // If nothing is provided return the fallback\n\n\n return fallback;\n };\n\n // Base attributes needed on all icons\n\n var BASE_ATTRS = {\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 STACKED_ATTRS = {\n width: null,\n height: null,\n focusable: null,\n role: null,\n 'aria-label': null\n }; // --- Props ---\n\n var props$2h = {\n animation: makeProp(PROP_TYPE_STRING),\n content: makeProp(PROP_TYPE_STRING),\n flipH: makeProp(PROP_TYPE_BOOLEAN, false),\n flipV: makeProp(PROP_TYPE_BOOLEAN, false),\n fontScale: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n rotate: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n scale: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n shiftH: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n shiftV: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n stacked: makeProp(PROP_TYPE_BOOLEAN, false),\n title: makeProp(PROP_TYPE_STRING),\n variant: makeProp(PROP_TYPE_STRING)\n }; // --- Main component ---\n // Shared private base component to reduce bundle/runtime size\n // @vue/component\n\n var BVIconBase = /*#__PURE__*/extend({\n name: NAME_ICON_BASE,\n functional: true,\n props: props$2h,\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 animation = props.animation,\n content = props.content,\n flipH = props.flipH,\n flipV = props.flipV,\n stacked = props.stacked,\n title = props.title,\n variant = props.variant;\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); // 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 hasContent = !isUndefinedOrNull(content);\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); // We wrap the content in a `<g>` 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: content || ''\n } : {}\n }, children); // If needed, we wrap in an additional `<g>` 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 } // Wrap in an additional `<g>` for proper animation handling if stacked\n\n\n if (stacked) {\n $inner = h('g', [$inner]);\n }\n\n var $title = title ? h('title', title) : null;\n var $content = [$title, $inner].filter(identity);\n return h('svg', a({\n staticClass: 'b-icon bi',\n class: (_class = {}, _defineProperty(_class, \"text-\".concat(variant), variant), _defineProperty(_class, \"b-icon-animation-\".concat(animation), animation), _class),\n attrs: BASE_ATTRS,\n style: stacked ? {} : {\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 stacked ? {\n attrs: STACKED_ATTRS\n } : {}, // These cannot be overridden by users\n {\n attrs: {\n xmlns: stacked ? null : 'http://www.w3.org/2000/svg',\n fill: 'currentColor'\n }\n }), $content);\n }\n });\n\n var iconProps$1 = omit(props$2h, ['content']);\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 iconTitle = kebabName.replace(/-/g, ' ');\n var svgContent = trim(content || '');\n return /*#__PURE__*/extend({\n name: iconName,\n functional: true,\n props: iconProps$1,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props;\n return h(BVIconBase, a( // Defaults\n {\n props: {\n title: iconTitle\n },\n attrs: {\n 'aria-label': iconTitle\n }\n }, // User data\n data, // Required data\n {\n staticClass: iconNameClass,\n props: _objectSpread2$3(_objectSpread2$3({}, props), {}, {\n content: svgContent\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','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\n var BIconCalendarFill=/*#__PURE__*/makeIcon('CalendarFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5h16V4H0V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\n var BIconChevronBarLeft=/*#__PURE__*/makeIcon('ChevronBarLeft','<path fill-rule=\"evenodd\" d=\"M11.854 3.646a.5.5 0 0 1 0 .708L8.207 8l3.647 3.646a.5.5 0 0 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 0 1 .708 0zM4.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5z\"/>');// eslint-disable-next-line\n var BIconChevronDoubleLeft=/*#__PURE__*/makeIcon('ChevronDoubleLeft','<path fill-rule=\"evenodd\" d=\"M8.354 1.646a.5.5 0 0 1 0 .708L2.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/><path fill-rule=\"evenodd\" d=\"M12.354 1.646a.5.5 0 0 1 0 .708L6.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\n var BIconChevronDown=/*#__PURE__*/makeIcon('ChevronDown','<path fill-rule=\"evenodd\" d=\"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\n var BIconChevronLeft=/*#__PURE__*/makeIcon('ChevronLeft','<path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\n var BIconChevronUp=/*#__PURE__*/makeIcon('ChevronUp','<path fill-rule=\"evenodd\" d=\"M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z\"/>');// eslint-disable-next-line\n var BIconCircleFill=/*#__PURE__*/makeIcon('CircleFill','<circle cx=\"8\" cy=\"8\" r=\"8\"/>');// eslint-disable-next-line\n var BIconClock=/*#__PURE__*/makeIcon('Clock','<path d=\"M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z\"/><path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z\"/>');// eslint-disable-next-line\n var BIconClockFill=/*#__PURE__*/makeIcon('ClockFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z\"/>');// eslint-disable-next-line\n var BIconDash=/*#__PURE__*/makeIcon('Dash','<path d=\"M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z\"/>');// eslint-disable-next-line\n var BIconPersonFill=/*#__PURE__*/makeIcon('PersonFill','<path d=\"M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/>');// eslint-disable-next-line\n var BIconPlus=/*#__PURE__*/makeIcon('Plus','<path d=\"M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z\"/>');// eslint-disable-next-line\n var BIconStar=/*#__PURE__*/makeIcon('Star','<path d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z\"/>');// eslint-disable-next-line\n var BIconStarFill=/*#__PURE__*/makeIcon('StarFill','<path d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"/>');// eslint-disable-next-line\n var BIconStarHalf=/*#__PURE__*/makeIcon('StarHalf','<path d=\"M5.354 5.119 7.538.792A.516.516 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.537.537 0 0 1 16 6.32a.548.548 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.52.52 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.58.58 0 0 1 .085-.302.513.513 0 0 1 .37-.245l4.898-.696zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.565.565 0 0 1 .162-.505l2.907-2.77-4.052-.576a.525.525 0 0 1-.393-.288L8.001 2.223 8 2.226v9.8z\"/>');// eslint-disable-next-line\n var BIconX=/*#__PURE__*/makeIcon('X','<path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\n // --- END AUTO-GENERATED FILE ---\n\n var findIconComponent = function findIconComponent(ctx, iconName) {\n if (!ctx) {\n return Vue__default['default'].component(iconName);\n }\n\n var components = (ctx.$options || {}).components;\n var iconComponent = components && components[iconName];\n return iconComponent || findIconComponent(ctx.$parent, iconName);\n }; // --- Props ---\n\n\n var iconProps = omit(props$2h, ['content']);\n var props$2g = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, iconProps), {}, {\n icon: makeProp(PROP_TYPE_STRING)\n })), NAME_ICON); // --- Main component ---\n // Helper BIcon component\n // Requires the requested icon component to be installed\n // @vue/component\n\n var BIcon = /*#__PURE__*/extend({\n name: NAME_ICON,\n functional: true,\n props: props$2g,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props,\n parent = _ref.parent;\n var icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, ''); // If parent context exists, we check to see if the icon has been registered\n // either locally in the parent component, or globally at the `$root` level\n // If not registered, we render a blank icon\n\n return h(icon ? findIconComponent(parent, \"BIcon\".concat(icon)) || BIconBlank : BIconBlank, a(data, {\n props: pluckProps(iconProps, props)\n }));\n }\n });\n\n var CODE_BACKSPACE = 8;\n var CODE_DELETE = 46;\n var CODE_DOWN = 40;\n var CODE_END = 35;\n var CODE_ENTER = 13;\n var CODE_ESC = 27;\n var CODE_HOME = 36;\n var CODE_LEFT = 37;\n var CODE_PAGEDOWN = 34;\n var CODE_PAGEUP = 33;\n var CODE_RIGHT = 39;\n var CODE_SPACE = 32;\n var CODE_UP = 38;\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 var isEmpty = function isEmpty(value) {\n return !value || keys(value).length === 0;\n };\n\n var makePropWatcher = function makePropWatcher(propName) {\n return {\n handler: function handler(newValue, oldValue) {\n if (looseEqual(newValue, oldValue)) {\n return;\n }\n\n if (isEmpty(newValue) || isEmpty(oldValue)) {\n this[propName] = cloneDeep(newValue);\n return;\n }\n\n for (var key in oldValue) {\n if (!hasOwnProperty(newValue, key)) {\n this.$delete(this.$data[propName], key);\n }\n }\n\n for (var _key in newValue) {\n this.$set(this.$data[propName], _key, newValue[_key]);\n }\n }\n };\n };\n var makePropCacheMixin = function makePropCacheMixin(propName, proxyPropName) {\n return extend({\n data: function data() {\n return _defineProperty({}, proxyPropName, cloneDeep(this[propName]));\n },\n watch: _defineProperty({}, propName, makePropWatcher(proxyPropName))\n });\n };\n\n var attrsMixinVue2 = makePropCacheMixin('$attrs', 'bvAttrs');\n var attrsMixinVue3 = extend({\n computed: {\n bvAttrs: function bvAttrs() {\n var bvAttrs = _objectSpread2$3({}, this.$attrs);\n\n Object.keys(bvAttrs).forEach(function (key) {\n if (bvAttrs[key] === undefined) {\n delete bvAttrs[key];\n }\n });\n return bvAttrs;\n }\n }\n });\n var attrsMixin = isVue3 ? attrsMixinVue3 : attrsMixinVue2;\n\n var getEventRoot = function getEventRoot(vm) {\n return vm.$root.$options.bvEventRoot || vm.$root;\n };\n\n var PROP$3 = '$_rootListeners'; // --- Mixin ---\n // @vue/component\n\n var listenOnRootMixin = extend({\n computed: {\n bvEventRoot: function bvEventRoot() {\n return getEventRoot(this);\n }\n },\n created: function created() {\n // Define non-reactive property\n // Object of arrays, keyed by event name,\n // where value is an array of callbacks\n this[PROP$3] = {};\n },\n beforeDestroy: function beforeDestroy() {\n var _this = this;\n\n // Unregister all registered listeners\n keys(this[PROP$3] || {}).forEach(function (event) {\n _this[PROP$3][event].forEach(function (callback) {\n _this.listenOffRoot(event, callback);\n });\n });\n this[PROP$3] = null;\n },\n methods: {\n registerRootListener: function registerRootListener(event, callback) {\n if (this[PROP$3]) {\n this[PROP$3][event] = this[PROP$3][event] || [];\n\n if (!arrayIncludes(this[PROP$3][event], callback)) {\n this[PROP$3][event].push(callback);\n }\n }\n },\n unregisterRootListener: function unregisterRootListener(event, callback) {\n if (this[PROP$3] && this[PROP$3][event]) {\n this[PROP$3][event] = this[PROP$3][event].filter(function (cb) {\n return cb !== callback;\n });\n }\n },\n\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, but the `$root`\n * does not clear the callback\n *\n * When registering a `$root` listener, it also registers the listener\n * to be removed in the component's `beforeDestroy()` hook\n *\n * @param {string} event\n * @param {function} callback\n */\n listenOnRoot: function listenOnRoot(event, callback) {\n if (this.bvEventRoot) {\n this.bvEventRoot.$on(event, callback);\n this.registerRootListener(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, but the `$root`\n * does not clear the callback\n *\n * When registering a `$root` listener, it also registers the listener\n * to be removed in the component's `beforeDestroy()` hook\n *\n * @param {string} event\n * @param {function} callback\n */\n listenOnRootOnce: function listenOnRootOnce(event, callback) {\n var _this2 = this;\n\n if (this.bvEventRoot) {\n var _callback = function _callback() {\n _this2.unregisterRootListener(_callback); // eslint-disable-next-line node/no-callback-literal\n\n\n callback.apply(void 0, arguments);\n };\n\n this.bvEventRoot.$once(event, _callback);\n this.registerRootListener(event, _callback);\n }\n },\n\n /**\n * Safely unregister event listeners from the root Vue node\n *\n * @param {string} event\n * @param {function} callback\n */\n listenOffRoot: function listenOffRoot(event, callback) {\n this.unregisterRootListener(event, callback);\n\n if (this.bvEventRoot) {\n this.bvEventRoot.$off(event, callback);\n }\n },\n\n /**\n * Convenience method for calling `vm.$emit()` on `$root`\n *\n * @param {string} event\n * @param {*} args\n */\n emitOnRoot: function emitOnRoot(event) {\n if (this.bvEventRoot) {\n var _this$bvEventRoot;\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$bvEventRoot = this.bvEventRoot).$emit.apply(_this$bvEventRoot, [event].concat(args));\n }\n }\n }\n });\n\n var listenersMixinVue2 = makePropCacheMixin('$listeners', 'bvListeners');\n var listenersMixinVue3 = extend({\n data: function data() {\n return {\n bvListeners: {}\n };\n },\n created: function created() {\n this.bvListeners = _objectSpread2$3({}, this.$listeners);\n },\n beforeUpdate: function beforeUpdate() {\n this.bvListeners = _objectSpread2$3({}, this.$listeners);\n }\n });\n var listenersMixin = isVue3 ? listenersMixinVue3 : listenersMixinVue2;\n\n var ROOT_EVENT_NAME_CLICKED = getRootEventName(NAME_LINK, 'clicked'); // --- Props ---\n // `<router-link>` specific props\n\n var routerLinkProps = {\n activeClass: makeProp(PROP_TYPE_STRING),\n append: makeProp(PROP_TYPE_BOOLEAN, false),\n event: makeProp(PROP_TYPE_ARRAY_STRING),\n exact: makeProp(PROP_TYPE_BOOLEAN, false),\n exactActiveClass: makeProp(PROP_TYPE_STRING),\n exactPath: makeProp(PROP_TYPE_BOOLEAN, false),\n exactPathActiveClass: makeProp(PROP_TYPE_STRING),\n replace: makeProp(PROP_TYPE_BOOLEAN, false),\n routerTag: makeProp(PROP_TYPE_STRING),\n to: makeProp(PROP_TYPE_OBJECT_STRING)\n }; // `<nuxt-link>` specific props\n\n var nuxtLinkProps = {\n noPrefetch: makeProp(PROP_TYPE_BOOLEAN, false),\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\n // Vue treats `undefined` as default of `false` for Boolean props,\n // so we must set it as `null` here to be a true tri-state prop\n prefetch: makeProp(PROP_TYPE_BOOLEAN, null)\n }; // All `<b-link>` props\n\n var props$2f = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, nuxtLinkProps), routerLinkProps), {}, {\n active: makeProp(PROP_TYPE_BOOLEAN, false),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n href: makeProp(PROP_TYPE_STRING),\n // Must be `null` if no value provided\n rel: makeProp(PROP_TYPE_STRING, null),\n // To support 3rd party router links based on `<router-link>` (i.e. `g-link` for Gridsome)\n // Default is to auto choose between `<router-link>` and `<nuxt-link>`\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: makeProp(PROP_TYPE_STRING),\n target: makeProp(PROP_TYPE_STRING, '_self')\n })), NAME_LINK); // --- Main component ---\n // @vue/component\n\n var BLink = /*#__PURE__*/extend({\n name: NAME_LINK,\n // Mixin order is important!\n mixins: [attrsMixin, listenersMixin, listenOnRootMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props$2f,\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 var target = this.target,\n rel = this.rel;\n return computeRel({\n target: target,\n rel: 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 var to = this.to,\n href = this.href;\n return computeHref({\n to: to,\n href: href\n }, this.computedTag);\n },\n computedProps: function computedProps() {\n var event = this.event,\n prefetch = this.prefetch,\n routerTag = this.routerTag;\n return this.isRouterLink ? _objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, pluckProps(omit(_objectSpread2$3(_objectSpread2$3({}, routerLinkProps), this.computedTag === 'nuxt-link' ? nuxtLinkProps : {}), ['event', 'prefetch', 'routerTag']), this)), event ? {\n event: event\n } : {}), isBoolean(prefetch) ? {\n prefetch: prefetch\n } : {}), routerTag ? {\n tag: 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$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, bvAttrs), href ? {\n href: href\n } : {}), isRouterLink && routerTag && !isTag(routerTag, 'a') ? {} : {\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$3(_objectSpread2$3({}, 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(event) {\n var _arguments = arguments;\n var eventIsEvent = isEvent(event);\n var isRouterLink = this.isRouterLink;\n var suppliedHandler = this.bvListeners.click;\n\n if (eventIsEvent && this.disabled) {\n // Stop event from bubbling up\n // Kill the event loop attached to this specific `EventTarget`\n // Needed to prevent `vue-router` for doing its thing\n stopEvent(event, {\n immediatePropagation: true\n });\n } else {\n // Router links do not emit instance `click` events, so we\n // add in an `$emit('click', event)` on its Vue instance\n //\n // seems not to be required for Vue3 compat build\n\n /* istanbul ignore next: difficult to test, but we know it works */\n if (isRouterLink) {\n var _event$currentTarget$;\n\n (_event$currentTarget$ = event.currentTarget.__vue__) === null || _event$currentTarget$ === void 0 ? void 0 : _event$currentTarget$.$emit(EVENT_NAME_CLICK, event);\n } // Call the suppliedHandler(s), if any provided\n\n\n concat(suppliedHandler).filter(function (h) {\n return isFunction$1(h);\n }).forEach(function (handler) {\n handler.apply(void 0, _toConsumableArray$1(_arguments));\n }); // Emit the global `$root` click event\n\n this.emitOnRoot(ROOT_EVENT_NAME_CLICKED, event); // TODO: Remove deprecated 'clicked::link' event with next major release\n\n this.emitOnRoot('clicked::link', event);\n } // Stop scroll-to-top behavior or navigation on\n // regular links when href is just '#'\n\n\n if (eventIsEvent && !isRouterLink && this.computedHref === '#') {\n stopEvent(event, {\n propagation: false\n });\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());\n }\n });\n\n var linkProps$7 = omit(props$2f, ['event', 'routerTag']);\n delete linkProps$7.href.default;\n delete linkProps$7.to.default;\n var props$2e = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, linkProps$7), {}, {\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n pill: makeProp(PROP_TYPE_BOOLEAN, false),\n // Tri-state: `true`, `false` or `null`\n // => On, off, not a toggle\n pressed: makeProp(PROP_TYPE_BOOLEAN, null),\n size: makeProp(PROP_TYPE_STRING),\n squared: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'button'),\n type: makeProp(PROP_TYPE_STRING, 'button'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n })), NAME_BUTTON); // --- Helper methods ---\n // Focus handler for toggle buttons\n // Needs class of 'focus' when focused\n\n var handleFocus = function handleFocus(event) {\n if (event.type === 'focusin') {\n addClass(event.target, 'focus');\n } else if (event.type === 'focusout') {\n removeClass(event.target, 'focus');\n }\n }; // Is the requested button a link?\n // If tag prop is set to `a`, we use a <b-link> to get proper disabled handling\n\n\n var isLink = function isLink(props) {\n return isLink$1(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(props) || props.tag && !isTag(props.tag, 'button'));\n }; // Is the requested tag not a button or link?\n\n\n var isNonStandardTag$1 = function isNonStandardTag(props) {\n return !isLink(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 || 'secondary'), (_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(props) ? pluckProps(linkProps$7, 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(props);\n var toggle = isToggle(props);\n var nonStandardTag = isNonStandardTag$1(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__*/extend({\n name: NAME_BUTTON,\n functional: true,\n props: props$2e,\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(props);\n var nonStandardTag = isNonStandardTag$1(props);\n var hashLink = link && props.href === '#';\n var on = {\n keydown: function keydown(event) {\n // When the link is a `href=\"#\"` or a non-standard tag (has `role=\"button\"`),\n // we add a keydown handlers for CODE_SPACE/CODE_ENTER\n\n /* istanbul ignore next */\n if (props.disabled || !(nonStandardTag || hashLink)) {\n return;\n }\n\n var keyCode = event.keyCode; // Add CODE_SPACE handler for `href=\"#\"` and CODE_ENTER handler for non-standard tags\n\n if (keyCode === CODE_SPACE || keyCode === CODE_ENTER && nonStandardTag) {\n var target = event.currentTarget || event.target;\n stopEvent(event, {\n propagation: false\n });\n target.click();\n }\n },\n click: function click(event) {\n /* istanbul ignore if: blink/button disabled should handle this */\n if (props.disabled && isEvent(event)) {\n stopEvent(event);\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$1(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(_objectSpread2$3(_objectSpread2$3({}, data), {}, {\n props: undefined\n }), componentData), children);\n }\n });\n\n var CLASS_NAME$2 = 'b-avatar';\n var SIZES = ['sm', null, 'lg'];\n var FONT_SIZE_SCALE = 0.4;\n var BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7; // --- Helper methods ---\n\n var computeSize = function computeSize(value) {\n // Parse to number when value is a float-like string\n value = isString(value) && isNumeric$1(value) ? toFloat(value, 0) : value; // Convert all numbers to pixel values\n\n return isNumber(value) ? \"\".concat(value, \"px\") : value || null;\n }; // --- Props ---\n\n var linkProps$6 = omit(props$2f, ['active', 'event', 'routerTag']);\n var props$2d = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, linkProps$6), {}, {\n alt: makeProp(PROP_TYPE_STRING, 'avatar'),\n ariaLabel: makeProp(PROP_TYPE_STRING),\n badge: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n badgeLeft: makeProp(PROP_TYPE_BOOLEAN, false),\n badgeOffset: makeProp(PROP_TYPE_STRING),\n badgeTop: makeProp(PROP_TYPE_BOOLEAN, false),\n badgeVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n button: makeProp(PROP_TYPE_BOOLEAN, false),\n buttonType: makeProp(PROP_TYPE_STRING, 'button'),\n icon: makeProp(PROP_TYPE_STRING),\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n size: makeProp(PROP_TYPE_NUMBER_STRING),\n square: makeProp(PROP_TYPE_BOOLEAN, false),\n src: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n })), NAME_AVATAR); // --- Main component ---\n // @vue/component\n\n var BAvatar = /*#__PURE__*/extend({\n name: NAME_AVATAR,\n mixins: [normalizeSlotMixin],\n inject: {\n getBvAvatarGroup: {\n default: function _default() {\n return function () {\n return null;\n };\n }\n }\n },\n props: props$2d,\n data: function data() {\n return {\n localSrc: this.src || null\n };\n },\n computed: {\n bvAvatarGroup: function bvAvatarGroup() {\n return this.getBvAvatarGroup();\n },\n computedSize: function computedSize() {\n // Always use the avatar group size\n var bvAvatarGroup = this.bvAvatarGroup;\n return computeSize(bvAvatarGroup ? bvAvatarGroup.size : this.size);\n },\n computedVariant: function computedVariant() {\n var bvAvatarGroup = this.bvAvatarGroup;\n return bvAvatarGroup && bvAvatarGroup.variant ? bvAvatarGroup.variant : this.variant;\n },\n computedRounded: function computedRounded() {\n var bvAvatarGroup = this.bvAvatarGroup;\n var square = bvAvatarGroup && bvAvatarGroup.square ? true : this.square;\n var rounded = bvAvatarGroup && bvAvatarGroup.rounded ? bvAvatarGroup.rounded : this.rounded;\n return square ? '0' : rounded === '' ? true : rounded || 'circle';\n },\n fontStyle: function fontStyle() {\n var size = this.computedSize;\n var fontSize = SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(FONT_SIZE_SCALE, \")\") : null;\n return fontSize ? {\n fontSize: fontSize\n } : {};\n },\n marginStyle: function marginStyle() {\n var size = this.computedSize,\n bvAvatarGroup = this.bvAvatarGroup;\n var overlapScale = bvAvatarGroup ? bvAvatarGroup.overlapScale : 0;\n var value = size && overlapScale ? \"calc(\".concat(size, \" * -\").concat(overlapScale, \")\") : null;\n return value ? {\n marginLeft: value,\n marginRight: value\n } : {};\n },\n badgeStyle: function badgeStyle() {\n var size = this.computedSize,\n badgeTop = this.badgeTop,\n badgeLeft = this.badgeLeft,\n badgeOffset = this.badgeOffset;\n var offset = badgeOffset || '0px';\n return {\n fontSize: SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(BADGE_FONT_SIZE_SCALE, \" )\") : null,\n top: badgeTop ? offset : null,\n bottom: badgeTop ? null : offset,\n left: badgeLeft ? offset : null,\n right: badgeLeft ? null : offset\n };\n }\n },\n watch: {\n src: function src(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localSrc = newValue || null;\n }\n }\n },\n methods: {\n onImgError: function onImgError(event) {\n this.localSrc = null;\n this.$emit(EVENT_NAME_IMG_ERROR, event);\n },\n onClick: function onClick(event) {\n this.$emit(EVENT_NAME_CLICK, event);\n }\n },\n render: function render(h) {\n var _class2;\n\n var variant = this.computedVariant,\n disabled = this.disabled,\n rounded = this.computedRounded,\n icon = this.icon,\n src = this.localSrc,\n text = this.text,\n fontStyle = this.fontStyle,\n marginStyle = this.marginStyle,\n size = this.computedSize,\n button = this.button,\n type = this.buttonType,\n badge = this.badge,\n badgeVariant = this.badgeVariant,\n badgeStyle = this.badgeStyle;\n var link = !button && isLink$1(this);\n var tag = button ? BButton : link ? BLink : 'span';\n var alt = this.alt;\n var ariaLabel = this.ariaLabel || null;\n var $content = null;\n\n if (this.hasNormalizedSlot()) {\n // Default slot overrides props\n $content = h('span', {\n staticClass: 'b-avatar-custom'\n }, [this.normalizeSlot()]);\n } else if (src) {\n $content = h('img', {\n style: variant ? {} : {\n width: '100%',\n height: '100%'\n },\n attrs: {\n src: src,\n alt: alt\n },\n on: {\n error: this.onImgError\n }\n });\n $content = h('span', {\n staticClass: 'b-avatar-img'\n }, [$content]);\n } else if (icon) {\n $content = h(BIcon, {\n props: {\n icon: icon\n },\n attrs: {\n 'aria-hidden': 'true',\n alt: alt\n }\n });\n } else if (text) {\n $content = h('span', {\n staticClass: 'b-avatar-text',\n style: fontStyle\n }, [h('span', text)]);\n } else {\n // Fallback default avatar content\n $content = h(BIconPersonFill, {\n attrs: {\n 'aria-hidden': 'true',\n alt: alt\n }\n });\n }\n\n var $badge = h();\n var hasBadgeSlot = this.hasNormalizedSlot(SLOT_NAME_BADGE);\n\n if (badge || badge === '' || hasBadgeSlot) {\n var badgeText = badge === true ? '' : badge;\n $badge = h('span', {\n staticClass: 'b-avatar-badge',\n class: _defineProperty({}, \"badge-\".concat(badgeVariant), badgeVariant),\n style: badgeStyle\n }, [hasBadgeSlot ? this.normalizeSlot(SLOT_NAME_BADGE) : badgeText]);\n }\n\n var componentData = {\n staticClass: CLASS_NAME$2,\n class: (_class2 = {}, _defineProperty(_class2, \"\".concat(CLASS_NAME$2, \"-\").concat(size), size && SIZES.indexOf(size) !== -1), _defineProperty(_class2, \"badge-\".concat(variant), !button && variant), _defineProperty(_class2, \"rounded\", rounded === true), _defineProperty(_class2, \"rounded-\".concat(rounded), rounded && rounded !== true), _defineProperty(_class2, \"disabled\", disabled), _class2),\n style: _objectSpread2$3(_objectSpread2$3({}, marginStyle), {}, {\n width: size,\n height: size\n }),\n attrs: {\n 'aria-label': ariaLabel || null\n },\n props: button ? {\n variant: variant,\n disabled: disabled,\n type: type\n } : link ? pluckProps(linkProps$6, this) : {},\n on: button || link ? {\n click: this.onClick\n } : {}\n };\n return h(tag, componentData, [$content, $badge]);\n }\n });\n\n var props$2c = makePropsConfigurable({\n overlap: makeProp(PROP_TYPE_NUMBER_STRING, 0.3),\n // Child avatars will prefer this prop (if set) over their own\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n // Child avatars will always use this over their own size\n size: makeProp(PROP_TYPE_STRING),\n // Child avatars will prefer this prop (if set) over their own\n square: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n // Child avatars will prefer this variant over their own\n variant: makeProp(PROP_TYPE_STRING)\n }, NAME_AVATAR_GROUP); // --- Main component ---\n // @vue/component\n\n var BAvatarGroup = /*#__PURE__*/extend({\n name: NAME_AVATAR_GROUP,\n mixins: [normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvAvatarGroup: function getBvAvatarGroup() {\n return _this;\n }\n };\n },\n props: props$2c,\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());\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 linkProps$5 = omit(props$2f, ['event', 'routerTag']);\n delete linkProps$5.href.default;\n delete linkProps$5.to.default;\n var props$2b = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, linkProps$5), {}, {\n pill: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n })), NAME_BADGE); // --- Main component ---\n // @vue/component\n\n var BBadge = /*#__PURE__*/extend({\n name: NAME_BADGE,\n functional: true,\n props: props$2b,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var active = props.active,\n disabled = props.disabled;\n var link = isLink$1(props);\n var tag = link ? BLink : props.tag;\n var variant = props.variant || 'secondary';\n return h(tag, a(data, {\n staticClass: 'badge',\n class: [\"badge-\".concat(variant), {\n 'badge-pill': props.pill,\n active: active,\n disabled: disabled\n }],\n props: link ? pluckProps(linkProps$5, props) : {}\n }), children);\n }\n });\n\n var BadgePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BBadge: BBadge\n }\n });\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$2a = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, omit(props$2f, ['event', 'routerTag'])), {}, {\n ariaCurrent: makeProp(PROP_TYPE_STRING, 'location'),\n html: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING)\n })), NAME_BREADCRUMB_LINK); // --- Main component ---\n // @vue/component\n\n var BBreadcrumbLink = /*#__PURE__*/extend({\n name: NAME_BREADCRUMB_LINK,\n functional: true,\n props: props$2a,\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$2a, 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 props$29 = makePropsConfigurable(props$2a, NAME_BREADCRUMB_ITEM); // --- Main component ---\n // @vue/component\n\n var BBreadcrumbItem = /*#__PURE__*/extend({\n name: NAME_BREADCRUMB_ITEM,\n functional: true,\n props: props$29,\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$28 = makePropsConfigurable({\n items: makeProp(PROP_TYPE_ARRAY)\n }, NAME_BREADCRUMB); // --- Main component ---\n // @vue/component\n\n var BBreadcrumb = /*#__PURE__*/extend({\n name: NAME_BREADCRUMB,\n functional: true,\n props: props$28,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var items = props.items; // Build child nodes from items, if given\n\n var childNodes = children;\n\n if (isArray(items)) {\n var activeDefined = false;\n childNodes = items.map(function (item, idx) {\n if (!isObject(item)) {\n item = {\n text: toString(item)\n };\n } // Copy the value here so we can normalize it\n\n\n var _item = item,\n active = _item.active;\n\n if (active) {\n activeDefined = true;\n } // Auto-detect active by position in list\n\n\n if (!active && !activeDefined) {\n active = idx + 1 === items.length;\n }\n\n return h(BBreadcrumbItem, {\n props: _objectSpread2$3(_objectSpread2$3({}, 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 props$27 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, pick$1(props$2e, ['size'])), {}, {\n ariaRole: makeProp(PROP_TYPE_STRING, 'group'),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_BUTTON_GROUP); // --- Main component ---\n // @vue/component\n\n var BButtonGroup = /*#__PURE__*/extend({\n name: NAME_BUTTON_GROUP,\n functional: true,\n props: props$27,\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(','); // --- Props ---\n\n var props$26 = makePropsConfigurable({\n justify: makeProp(PROP_TYPE_BOOLEAN, false),\n keyNav: makeProp(PROP_TYPE_BOOLEAN, false)\n }, NAME_BUTTON_TOOLBAR); // --- Main component ---\n // @vue/component\n\n var BButtonToolbar = /*#__PURE__*/extend({\n name: NAME_BUTTON_TOOLBAR,\n mixins: [normalizeSlotMixin],\n props: props$26,\n mounted: function mounted() {\n // Pre-set the tabindexes if the markup does not include\n // `tabindex=\"-1\"` on the toolbar items\n if (this.keyNav) {\n this.getItems();\n }\n },\n methods: {\n getItems: function getItems() {\n var items = selectAll(ITEM_SELECTOR, this.$el); // Ensure `tabindex=\"-1\"` is set on every item\n\n items.forEach(function (item) {\n item.tabIndex = -1;\n });\n return items.filter(function (el) {\n return isVisible(el);\n });\n },\n focusFirst: function focusFirst() {\n var items = this.getItems();\n attemptFocus(items[0]);\n },\n focusPrev: function focusPrev(event) {\n var items = this.getItems();\n var index = items.indexOf(event.target);\n\n if (index > -1) {\n items = items.slice(0, index).reverse();\n attemptFocus(items[0]);\n }\n },\n focusNext: function focusNext(event) {\n var items = this.getItems();\n var index = items.indexOf(event.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 onFocusin: function onFocusin(event) {\n var $el = this.$el;\n\n if (event.target === $el && !contains($el, event.relatedTarget)) {\n stopEvent(event);\n this.focusFirst(event);\n }\n },\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n\n if (keyCode === CODE_UP || keyCode === CODE_LEFT) {\n stopEvent(event);\n shiftKey ? this.focusFirst(event) : this.focusPrev(event);\n } else if (keyCode === CODE_DOWN || keyCode === CODE_RIGHT) {\n stopEvent(event);\n shiftKey ? this.focusLast(event) : this.focusNext(event);\n }\n }\n },\n render: function render(h) {\n var keyNav = this.keyNav;\n return h('div', {\n staticClass: 'btn-toolbar',\n class: {\n 'justify-content-between': this.justify\n },\n attrs: {\n role: 'toolbar',\n tabindex: keyNav ? '0' : null\n },\n on: keyNav ? {\n focusin: this.onFocusin,\n keydown: this.onKeydown\n } : {}\n }, [this.normalizeSlot()]);\n }\n });\n\n var ButtonToolbarPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BButtonToolbar: BButtonToolbar,\n BBtnToolbar: BButtonToolbar\n }\n });\n\n var CALENDAR_GREGORY = 'gregory';\n var CALENDAR_LONG = 'long';\n var CALENDAR_NARROW = 'narrow';\n var CALENDAR_SHORT = 'short';\n var DATE_FORMAT_2_DIGIT = '2-digit';\n var DATE_FORMAT_NUMERIC = 'numeric';\n\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] : CALENDAR_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 }); // 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(locale).toLowerCase().replace(RX_STRIP_LOCALE_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\n var props$25 = {\n id: makeProp(PROP_TYPE_STRING)\n }; // --- Mixin ---\n // @vue/component\n\n var idMixin = extend({\n props: props$25,\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[COMPONENT_UID_KEY]);\n });\n }\n });\n\n var _watch$j;\n\n var _makeModelMixin$j = makeModelMixin('value', {\n type: PROP_TYPE_DATE_STRING\n }),\n modelMixin$i = _makeModelMixin$j.mixin,\n modelProps$i = _makeModelMixin$j.props,\n MODEL_PROP_NAME$i = _makeModelMixin$j.prop,\n MODEL_EVENT_NAME$i = _makeModelMixin$j.event; // --- Props ---\n\n\n var props$24 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$i), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n // Makes calendar the full width of its parent container\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n dateDisabledFn: makeProp(PROP_TYPE_FUNCTION),\n // `Intl.DateTimeFormat` object\n dateFormatOptions: makeProp(PROP_TYPE_OBJECT, {\n year: DATE_FORMAT_NUMERIC,\n month: CALENDAR_LONG,\n day: DATE_FORMAT_NUMERIC,\n weekday: CALENDAR_LONG\n }),\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 dateInfoFn: makeProp(PROP_TYPE_FUNCTION),\n // 'ltr', 'rtl', or `null` (for auto detect)\n direction: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n // When `true`, renders a comment node, but keeps the component instance active\n // Mainly for <b-form-date>, so that we can get the component's value and locale\n // But we might just use separate date formatters, using the resolved locale\n // (adjusted for the gregorian calendar)\n hidden: makeProp(PROP_TYPE_BOOLEAN, false),\n // When `true` makes the selected date header `sr-only`\n hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\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 initialDate: makeProp(PROP_TYPE_DATE_STRING),\n // Labels for buttons and keyboard shortcuts\n labelCalendar: makeProp(PROP_TYPE_STRING, 'Calendar'),\n labelCurrentMonth: makeProp(PROP_TYPE_STRING, 'Current month'),\n labelHelp: makeProp(PROP_TYPE_STRING, 'Use cursor keys to navigate calendar dates'),\n labelNav: makeProp(PROP_TYPE_STRING, 'Calendar navigation'),\n labelNextDecade: makeProp(PROP_TYPE_STRING, 'Next decade'),\n labelNextMonth: makeProp(PROP_TYPE_STRING, 'Next month'),\n labelNextYear: makeProp(PROP_TYPE_STRING, 'Next year'),\n labelNoDateSelected: makeProp(PROP_TYPE_STRING, 'No date selected'),\n labelPrevDecade: makeProp(PROP_TYPE_STRING, 'Previous decade'),\n labelPrevMonth: makeProp(PROP_TYPE_STRING, 'Previous month'),\n labelPrevYear: makeProp(PROP_TYPE_STRING, 'Previous year'),\n labelSelected: makeProp(PROP_TYPE_STRING, 'Selected date'),\n labelToday: makeProp(PROP_TYPE_STRING, 'Today'),\n // Locale(s) to use\n // Default is to use page/browser default setting\n locale: makeProp(PROP_TYPE_ARRAY_STRING),\n max: makeProp(PROP_TYPE_DATE_STRING),\n min: makeProp(PROP_TYPE_DATE_STRING),\n // Variant color to use for the navigation buttons\n navButtonVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n // Disable highlighting today's date\n noHighlightToday: makeProp(PROP_TYPE_BOOLEAN, false),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n roleDescription: makeProp(PROP_TYPE_STRING),\n // Variant color to use for the selected date\n selectedVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n // When `true` enables the decade navigation buttons\n showDecadeNav: makeProp(PROP_TYPE_BOOLEAN, false),\n // Day of week to start calendar on\n // `0` (Sunday), `1` (Monday), ... `6` (Saturday)\n startWeekday: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n // Variant color to use for today's date (defaults to `selectedVariant`)\n todayVariant: makeProp(PROP_TYPE_STRING),\n // Always return the `v-model` value as a date object\n valueAsDate: makeProp(PROP_TYPE_BOOLEAN, false),\n // Format of the weekday names at the top of the calendar\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 weekdayHeaderFormat: makeProp(PROP_TYPE_STRING, CALENDAR_SHORT, function (value) {\n return arrayIncludes([CALENDAR_LONG, CALENDAR_SHORT, CALENDAR_NARROW], value);\n }),\n // Has no effect if prop `block` is set\n width: makeProp(PROP_TYPE_STRING, '270px')\n })), NAME_CALENDAR); // --- Main component ---\n // @vue/component\n\n var BCalendar = extend({\n name: NAME_CALENDAR,\n // Mixin order is important!\n mixins: [attrsMixin, idMixin, modelMixin$i, normalizeSlotMixin],\n props: props$24,\n data: function data() {\n var selected = formatYMD(this[MODEL_PROP_NAME$i]) || '';\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), CALENDAR_GREGORY);\n },\n computedDateDisabledFn: function computedDateDisabledFn() {\n var dateDisabledFn = this.dateDisabledFn;\n return hasPropFunction(dateDisabledFn) ? dateDisabledFn : function () {\n return false;\n };\n },\n // TODO: Change `dateInfoFn` to handle events and notes as well as classes\n computedDateInfoFn: function computedDateInfoFn() {\n var dateInfoFn = this.dateInfoFn;\n return hasPropFunction(dateInfoFn) ? dateInfoFn : function () {\n return {};\n };\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: CALENDAR_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 !== CALENDAR_GREGORY) {\n // Ensure the locale requests the gregorian calendar\n // Mainly for IE 11, and currently we can't handle non-gregorian calendars\n // TODO: Should we always return this value?\n locale = locale.replace(/-u-.+$/i, '').concat('-u-ca-gregory');\n }\n\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 // We set the time for this date to 12pm to work around\n // date formatting issues in Firefox and Safari\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/5818\n return createDate(this.calendarYear, this.calendarMonth, 1, 12);\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 computedNavButtonVariant: function computedNavButtonVariant() {\n return \"btn-outline-\".concat(this.navButtonVariant || 'primary');\n },\n isRTL: function isRTL() {\n // `true` if the language requested is RTL\n var dir = toString(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 activeYMD = this.activeYMD;\n var selectedDate = parseYMD(selectedYMD);\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 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 var _this = this;\n\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; // 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) || _this.computedDateDisabledFn(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$3(_objectSpread2$3({\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: DATE_FORMAT_NUMERIC,\n month: DATE_FORMAT_2_DIGIT,\n day: DATE_FORMAT_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: CALENDAR_GREGORY\n }));\n },\n formatYearMonth: function formatYearMonth() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, {\n year: DATE_FORMAT_NUMERIC,\n month: CALENDAR_LONG,\n calendar: CALENDAR_GREGORY\n });\n },\n formatWeekdayName: function formatWeekdayName() {\n // Long weekday name for weekday header aria-label\n return createDateFormatter(this.calendarLocale, {\n weekday: CALENDAR_LONG,\n calendar: CALENDAR_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 || CALENDAR_SHORT,\n calendar: CALENDAR_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; // 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 = this.computedDateInfoFn(dayYMD, parseYMD(dayYMD));\n dateInfo = isString(dateInfo) || isArray(dateInfo) ?\n /* istanbul ignore next */\n {\n class: dateInfo\n } : isPlainObject(dateInfo) ? _objectSpread2$3({\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 _this2 = this;\n\n return this.calendar[0].map(function (d) {\n return {\n text: _this2.formatWeekdayNameShort(parseYMD(d.ymd)),\n label: _this2.formatWeekdayName(parseYMD(d.ymd))\n };\n });\n }\n },\n watch: (_watch$j = {}, _defineProperty(_watch$j, MODEL_PROP_NAME$i, function (newValue, oldValue) {\n var selected = formatYMD(newValue) || '';\n var old = formatYMD(oldValue) || '';\n\n if (!datesEqual(selected, old)) {\n this.activeYMD = selected || this.activeYMD;\n this.selectedYMD = selected;\n }\n }), _defineProperty(_watch$j, \"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(MODEL_EVENT_NAME$i, this.valueAsDate ? parseYMD(newYMD) || null : newYMD || '');\n }\n }), _defineProperty(_watch$j, \"context\", function context(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT, newValue);\n }\n }), _defineProperty(_watch$j, \"hidden\", function hidden(newValue) {\n // Reset the active focused day when hidden\n this.activeYMD = this.selectedYMD || formatYMD(this[MODEL_PROP_NAME$i] || this.constrainDate(this.initialDate || this.getToday())); // Enable/disable the live regions\n\n this.setLive(!newValue);\n }), _watch$j),\n created: function created() {\n var _this3 = this;\n\n this.$nextTick(function () {\n _this3.$emit(EVENT_NAME_CONTEXT, _this3.context);\n });\n },\n mounted: function mounted() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\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 _this4 = this;\n\n if (on) {\n this.$nextTick(function () {\n requestAF(function () {\n _this4.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 _this5 = this;\n\n // Performed in a `$nextTick()` to (probably) ensure\n // the input event has emitted first\n this.$nextTick(function () {\n _this5.$emit(EVENT_NAME_SELECTED, formatYMD(date) || '', parseYMD(date) || null);\n });\n },\n // Event handlers\n setGridFocusFlag: function setGridFocusFlag(event) {\n // Sets the gridHasFocus flag to make date \"button\" look focused\n this.gridHasFocus = !this.disabled && event.type === 'focus';\n },\n onKeydownWrapper: function onKeydownWrapper(event) {\n // Calendar keyboard navigation\n // Handles PAGEUP/PAGEDOWN/END/HOME/LEFT/UP/RIGHT/DOWN\n // Focuses grid after updating\n if (this.noKeyNav) {\n /* istanbul ignore next */\n return;\n }\n\n var altKey = event.altKey,\n ctrlKey = event.ctrlKey,\n keyCode = event.keyCode;\n\n if (!arrayIncludes([CODE_PAGEUP, CODE_PAGEDOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_UP, CODE_RIGHT, CODE_DOWN], keyCode)) {\n /* istanbul ignore next */\n return;\n }\n\n stopEvent(event);\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 === CODE_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 === CODE_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 === CODE_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 === CODE_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 === CODE_UP) {\n // UP - Previous week\n activeDate.setDate(day - 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_DOWN) {\n // DOWN - Next week\n activeDate.setDate(day + 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_HOME) {\n // HOME - Today\n activeDate = constrainedToday;\n checkDate = activeDate;\n } else if (keyCode === CODE_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(event) {\n // Pressing enter/space on grid to select active date\n var keyCode = event.keyCode;\n var activeDate = this.activeDate;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n stopEvent(event);\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 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 _this6 = 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 disabled = this.disabled,\n noKeyNav = this.noKeyNav,\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': disabled,\n readonly: this.readonly || disabled\n },\n attrs: {\n id: valueId,\n for: gridId,\n role: 'status',\n tabindex: 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(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 <BDI> at all (equivalent to a span)\n h('bdi', {\n staticClass: 'sr-only'\n }, \" (\".concat(toString(this.labelSelected), \") \")), h('bdi', this.formatDateString(this.selectedDate))] : this.labelNoDateSelected || \"\\xA0\" // ' '\n );\n $header = h(this.headerTag, {\n staticClass: 'b-calendar-header',\n class: {\n 'sr-only': this.hideHeader\n },\n attrs: {\n title: this.selectedDate ? this.labelSelected || 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$3(_objectSpread2$3({}, navProps), {}, {\n flipH: isRTL\n });\n\n var navNextProps = _objectSpread2$3(_objectSpread2$3({}, navProps), {}, {\n flipH: !isRTL\n });\n\n var $prevDecadeIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_DECADE, navScope) || h(BIconChevronBarLeft, {\n props: navPrevProps\n });\n var $prevYearIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_YEAR, navScope) || h(BIconChevronDoubleLeft, {\n props: navPrevProps\n });\n var $prevMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_MONTH, navScope) || h(BIconChevronLeft, {\n props: navPrevProps\n });\n var $thisMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_THIS_MONTH, navScope) || h(BIconCircleFill, {\n props: navProps\n });\n var $nextMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_MONTH, navScope) || h(BIconChevronLeft, {\n props: navNextProps\n });\n var $nextYearIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_YEAR, navScope) || h(BIconChevronDoubleLeft, {\n props: navNextProps\n });\n var $nextDecadeIcon = this.normalizeSlot(SLOT_NAME_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 border-0 flex-fill',\n class: [_this6.computedNavButtonVariant, {\n disabled: btnDisabled\n }],\n attrs: {\n title: label || null,\n type: 'button',\n tabindex: noKeyNav ? '-1' : null,\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 tabindex: noKeyNav ? '-1' : null,\n 'aria-hidden': 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('div', {\n staticClass: 'b-calendar-grid-caption text-center font-weight-bold',\n class: {\n 'text-muted': disabled\n },\n attrs: {\n id: gridCaptionId,\n 'aria-live': isLive ? 'polite' : null,\n 'aria-atomic': isLive ? 'true' : null\n },\n key: 'grid-caption'\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 staticClass: 'col text-truncate',\n class: {\n 'text-muted': disabled\n },\n attrs: {\n title: d.label === d.text ? null : d.label,\n 'aria-label': d.label\n },\n key: idx\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 && _this6.gridHasFocus,\n // Styling\n disabled: day.isDisabled || disabled,\n active: isSelected\n }, _defineProperty(_class, _this6.computedVariant, isSelected), _defineProperty(_class, _this6.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 _this6.onClickDay(day);\n }\n }\n }, day.day);\n return h('div', // Cell with button\n {\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 || disabled ? 'true' : null,\n 'aria-label': [day.label, isSelected ? \"(\".concat(_this6.labelSelected, \")\") : null, isToday ? \"(\".concat(_this6.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 key: dIndex\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 staticClass: 'row no-gutters',\n key: week[0].ymd\n }, $cells);\n });\n $gridBody = h('div', {\n // A key is only required on the body if we add in transition support\n staticClass: 'b-calendar-grid-body',\n style: disabled ? {\n pointerEvents: 'none'\n } : {} // key: this.activeYMD.slice(0, -3)\n\n }, $gridBody);\n var $gridHelp = h('div', {\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 staticClass: 'b-calendar-grid form-control h-auto text-center',\n attrs: {\n id: gridId,\n role: 'application',\n tabindex: noKeyNav ? '-1' : 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 && !disabled ? 'true' : null,\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-activedescendant': activeId\n },\n on: {\n keydown: this.onKeydownGrid,\n focus: this.setGridFocusFlag,\n blur: this.setGridFocusFlag\n },\n ref: 'grid'\n }, [$gridCaption, $gridWeekDays, $gridBody, $gridHelp]); // Optional bottom slot\n\n var $slot = this.normalizeSlot();\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': 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 var props$23 = makePropsConfigurable({\n bgVariant: makeProp(PROP_TYPE_STRING),\n borderVariant: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING)\n }, NAME_CARD); // --- Mixin ---\n // @vue/component\n\n extend({\n props: props$23\n });\n\n var props$22 = makePropsConfigurable({\n title: makeProp(PROP_TYPE_STRING),\n titleTag: makeProp(PROP_TYPE_STRING, 'h4')\n }, NAME_CARD_TITLE); // --- Main component ---\n // @vue/component\n\n var BCardTitle = /*#__PURE__*/extend({\n name: NAME_CARD_TITLE,\n functional: true,\n props: props$22,\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(props.title));\n }\n });\n\n var props$21 = makePropsConfigurable({\n subTitle: makeProp(PROP_TYPE_STRING),\n subTitleTag: makeProp(PROP_TYPE_STRING, 'h6'),\n subTitleTextVariant: makeProp(PROP_TYPE_STRING, 'muted')\n }, NAME_CARD_SUB_TITLE); // --- Main component ---\n // @vue/component\n\n var BCardSubTitle = /*#__PURE__*/extend({\n name: NAME_CARD_SUB_TITLE,\n functional: true,\n props: props$21,\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(props.subTitle));\n }\n });\n\n var props$20 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$22), props$21), copyProps(props$23, prefixPropName.bind(null, 'body'))), {}, {\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n overlay: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_CARD_BODY); // --- Main component ---\n // @vue/component\n\n var BCardBody = /*#__PURE__*/extend({\n name: NAME_CARD_BODY,\n functional: true,\n props: props$20,\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 bodyBgVariant = props.bodyBgVariant,\n bodyBorderVariant = props.bodyBorderVariant,\n bodyTextVariant = props.bodyTextVariant;\n var $title = h();\n\n if (props.title) {\n $title = h(BCardTitle, {\n props: pluckProps(props$22, props)\n });\n }\n\n var $subTitle = h();\n\n if (props.subTitle) {\n $subTitle = h(BCardSubTitle, {\n props: pluckProps(props$21, 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(bodyBgVariant), bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(bodyBorderVariant), bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(bodyTextVariant), bodyTextVariant), _ref2), props.bodyClass]\n }), [$title, $subTitle, children]);\n }\n });\n\n var props$1$ = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, copyProps(props$23, prefixPropName.bind(null, 'header'))), {}, {\n header: makeProp(PROP_TYPE_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerHtml: makeProp(PROP_TYPE_STRING)\n })), NAME_CARD_HEADER); // --- Main component ---\n // @vue/component\n\n var BCardHeader = /*#__PURE__*/extend({\n name: NAME_CARD_HEADER,\n functional: true,\n props: props$1$,\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$1_ = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, copyProps(props$23, prefixPropName.bind(null, 'footer'))), {}, {\n footer: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerHtml: makeProp(PROP_TYPE_STRING)\n })), NAME_CARD_FOOTER); // --- Main component ---\n // @vue/component\n\n var BCardFooter = /*#__PURE__*/extend({\n name: NAME_CARD_FOOTER,\n functional: true,\n props: props$1_,\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 // Blank image with fill template\n\n var BLANK_TEMPLATE = '<svg width=\"%{w}\" height=\"%{h}\" ' + 'xmlns=\"http://www.w3.org/2000/svg\" ' + 'viewBox=\"0 0 %{w} %{h}\" preserveAspectRatio=\"none\">' + '<rect width=\"100%\" height=\"100%\" style=\"fill:%{f};\"></rect>' + '</svg>'; // --- Helper methods ---\n\n var makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n }; // --- Props ---\n\n\n var props$1Z = makePropsConfigurable({\n alt: makeProp(PROP_TYPE_STRING),\n blank: makeProp(PROP_TYPE_BOOLEAN, false),\n blankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n center: makeProp(PROP_TYPE_BOOLEAN, false),\n fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Gives fluid images class `w-100` to make them grow to fit container\n fluidGrow: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_NUMBER_STRING),\n left: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n // Possible values:\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 rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sizes: makeProp(PROP_TYPE_ARRAY_STRING),\n src: makeProp(PROP_TYPE_STRING),\n srcset: makeProp(PROP_TYPE_ARRAY_STRING),\n thumbnail: makeProp(PROP_TYPE_BOOLEAN, false),\n width: makeProp(PROP_TYPE_NUMBER_STRING)\n }, NAME_IMG); // --- Main component ---\n // @vue/component\n\n var BImg = /*#__PURE__*/extend({\n name: NAME_IMG,\n functional: true,\n props: props$1Z,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data;\n var alt = props.alt,\n src = props.src,\n block = props.block,\n fluidGrow = props.fluidGrow,\n rounded = props.rounded;\n var width = toInteger(props.width) || null;\n var height = toInteger(props.height) || null;\n var align = null;\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: alt,\n width: width ? toString(width) : null,\n height: height ? toString(height) : null,\n srcset: srcset || null,\n sizes: sizes || null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || fluidGrow,\n 'w-100': fluidGrow,\n rounded: rounded === '' || rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(rounded), isString(rounded) && rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n });\n\n var props$1Y = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, pick$1(props$1Z, ['src', 'alt', 'width', 'height', 'left', 'right'])), {}, {\n bottom: makeProp(PROP_TYPE_BOOLEAN, false),\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n start: makeProp(PROP_TYPE_BOOLEAN, false),\n top: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_CARD_IMG); // --- Main component ---\n // @vue/component\n\n var BCardImg = /*#__PURE__*/extend({\n name: NAME_CARD_IMG,\n functional: true,\n props: props$1Y,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var src = props.src,\n alt = props.alt,\n width = props.width,\n height = props.height;\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: src,\n alt: alt,\n width: width,\n height: height\n }\n }));\n }\n });\n\n var cardImgProps = copyProps(props$1Y, prefixPropName.bind(null, 'img'));\n cardImgProps.imgSrc.required = false;\n var props$1X = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$20), props$1$), props$1_), cardImgProps), props$23), {}, {\n align: makeProp(PROP_TYPE_STRING),\n noBody: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_CARD); // --- Main component ---\n // @vue/component\n\n var BCard = /*#__PURE__*/extend({\n name: NAME_CARD,\n functional: true,\n props: props$1X,\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 imgSrc = props.imgSrc,\n imgLeft = props.imgLeft,\n imgRight = props.imgRight,\n imgStart = props.imgStart,\n imgEnd = props.imgEnd,\n imgBottom = props.imgBottom,\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 (imgSrc) {\n var $img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n });\n\n if (imgBottom) {\n $imgLast = $img;\n } else {\n $imgFirst = $img;\n }\n }\n\n var $header = h();\n var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n if (hasHeaderSlot || header || headerHtml) {\n $header = h(BCardHeader, {\n props: pluckProps(props$1$, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n }\n\n var $content = normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots); // Wrap content in `<card-body>` when `noBody` prop set\n\n if (!props.noBody) {\n $content = h(BCardBody, {\n props: pluckProps(props$20, props)\n }, $content); // When the `overlap` prop is set we need to wrap the `<b-card-img>` and `<b-card-body>`\n // into a relative positioned wrapper to don't distract a potential header or footer\n\n if (props.overlay && imgSrc) {\n $content = h('div', {\n staticClass: 'position-relative'\n }, [$imgFirst, $content, $imgLast]); // Reset image variables since they are already in the wrapper\n\n $imgFirst = h();\n $imgLast = h();\n }\n }\n\n var $footer = h();\n var hasFooterSlot = hasNormalizedSlot(SLOT_NAME_FOOTER, $scopedSlots, $slots);\n\n if (hasFooterSlot || footer || footerHtml) {\n $footer = h(BCardFooter, {\n props: pluckProps(props$1_, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n }, normalizeSlot(SLOT_NAME_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\n var VisibilityObserver = /*#__PURE__*/function () {\n function VisibilityObserver(el, options) {\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();\n }\n\n _createClass(VisibilityObserver, [{\n key: \"createObserver\",\n value: function createObserver() {\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$1(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 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 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$1 = 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$1 = function bind(el, _ref) {\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 <b-img-lazy> is switched to use this directive */\n if (RX_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$1(el); // Create new observer\n\n el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options); // 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$1 = 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$1(el, {\n value: value,\n modifiers: modifiers\n });\n }\n }; // When directive un-binds from element\n\n\n var unbind$1 = function unbind(el) {\n // Remove the observer\n destroy$1(el);\n }; // Export the directive\n\n\n var VBVisible = {\n bind: bind$1,\n componentUpdated: componentUpdated$1,\n unbind: unbind$1\n };\n\n var _watch$i;\n\n var MODEL_PROP_NAME_SHOW$1 = 'show';\n var MODEL_EVENT_NAME_SHOW$1 = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SHOW$1; // --- Props ---\n\n var imgProps$1 = omit(props$1Z, ['blank']);\n var props$1W = makePropsConfigurable(_objectSpread2$3(_objectSpread2$3({}, imgProps$1), {}, _defineProperty({\n blankHeight: makeProp(PROP_TYPE_NUMBER_STRING),\n // If `null`, a blank image is generated\n blankSrc: makeProp(PROP_TYPE_STRING, null),\n blankWidth: makeProp(PROP_TYPE_NUMBER_STRING),\n // Distance away from viewport (in pixels)\n // before being considered \"visible\"\n offset: makeProp(PROP_TYPE_NUMBER_STRING, 360)\n }, MODEL_PROP_NAME_SHOW$1, makeProp(PROP_TYPE_BOOLEAN, false))), NAME_IMG_LAZY); // --- Main component ---\n // @vue/component\n\n var BImgLazy = /*#__PURE__*/extend({\n name: NAME_IMG_LAZY,\n directives: {\n 'b-visible': VBVisible\n },\n props: props$1W,\n data: function data() {\n return {\n isShown: this[MODEL_PROP_NAME_SHOW$1]\n };\n },\n computed: {\n computedSrc: function computedSrc() {\n var blankSrc = this.blankSrc;\n return !blankSrc || this.isShown ? this.src : blankSrc;\n },\n computedBlank: function computedBlank() {\n return !(this.isShown || this.blankSrc);\n },\n computedWidth: function computedWidth() {\n var width = this.width;\n return this.isShown ? width : this.blankWidth || width;\n },\n computedHeight: function computedHeight() {\n var height = this.height;\n return this.isShown ? height : this.blankHeight || height;\n },\n computedSrcset: function computedSrcset() {\n var srcset = concat(this.srcset).filter(identity).join(',');\n return srcset && (!this.blankSrc || this.isShown) ? srcset : null;\n },\n computedSizes: function computedSizes() {\n var sizes = concat(this.sizes).filter(identity).join(',');\n return sizes && (!this.blankSrc || this.isShown) ? sizes : null;\n }\n },\n watch: (_watch$i = {}, _defineProperty(_watch$i, MODEL_PROP_NAME_SHOW$1, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n // If `IntersectionObserver` support is not available, image is always shown\n var visible = HAS_INTERACTION_OBSERVER_SUPPORT ? newValue : true;\n this.isShown = visible; // Ensure the show prop is synced (when no `IntersectionObserver`)\n\n if (newValue !== visible) {\n this.$nextTick(this.updateShowProp);\n }\n }\n }), _defineProperty(_watch$i, \"isShown\", function isShown(newValue, oldValue) {\n // Update synched show prop\n if (newValue !== oldValue) {\n this.updateShowProp();\n }\n }), _watch$i),\n mounted: function mounted() {\n var _this = this;\n\n // If `IntersectionObserver` is not available, image is always shown\n this.$nextTick(function () {\n _this.isShown = HAS_INTERACTION_OBSERVER_SUPPORT ? _this[MODEL_PROP_NAME_SHOW$1] : true;\n });\n },\n methods: {\n updateShowProp: function updateShowProp() {\n this.$emit(MODEL_EVENT_NAME_SHOW$1, this.isShown);\n },\n doShow: function doShow(visible) {\n var _this2 = this;\n\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 // In a `requestAF()` to render the `blank` placeholder properly\n // for fast loading images in some browsers (i.e. Firefox)\n requestAF(function () {\n _this2.isShown = true;\n });\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: _objectSpread2$3(_objectSpread2$3({}, pluckProps(imgProps$1, this.$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,\n sizes: this.computedSizes\n })\n });\n }\n });\n\n var props$1V = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, omit(props$1W, keys(props$1Z))), omit(props$1Y, ['src', 'alt', 'width', 'height']))), NAME_CARD_IMG_LAZY); // --- Main component ---\n // @vue/component\n\n var BCardImgLazy = /*#__PURE__*/extend({\n name: NAME_CARD_IMG_LAZY,\n functional: true,\n props: props$1V,\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(BImgLazy, a(data, {\n class: [baseClass],\n // Exclude `left` and `right` props before passing to `<b-img-lazy>`\n props: omit(props, ['left', 'right'])\n }));\n }\n });\n\n var props$1U = makePropsConfigurable({\n textTag: makeProp(PROP_TYPE_STRING, 'p')\n }, NAME_CARD_TEXT); // --- Main component ---\n // @vue/component\n\n var BCardText = /*#__PURE__*/extend({\n name: NAME_CARD_TEXT,\n functional: true,\n props: props$1U,\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$1T = makePropsConfigurable({\n columns: makeProp(PROP_TYPE_BOOLEAN, false),\n deck: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }, NAME_CARD_GROUP); // --- Main component ---\n // @vue/component\n\n var BCardGroup = /*#__PURE__*/extend({\n name: NAME_CARD_GROUP,\n functional: true,\n props: props$1T,\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$3({\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 _watch$h;\n\n var _makeModelMixin$i = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER,\n defaultValue: 0\n }),\n modelMixin$h = _makeModelMixin$i.mixin,\n modelProps$h = _makeModelMixin$i.props,\n MODEL_PROP_NAME$h = _makeModelMixin$i.prop,\n MODEL_EVENT_NAME$h = _makeModelMixin$i.event; // Slide directional classes\n\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$1 = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'otransitionend oTransitionEnd',\n transition: 'transitionend'\n }; // --- Helper methods ---\n // Return the browser specific transitionEnd event name\n\n var getTransitionEndEvent = function getTransitionEndEvent(el) {\n for (var name in TransitionEndEvents$1) {\n if (!isUndefined(el.style[name])) {\n return TransitionEndEvents$1[name];\n }\n } // Fallback\n\n /* istanbul ignore next */\n\n\n return null;\n }; // --- Props ---\n\n\n var props$1S = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$h), {}, {\n background: makeProp(PROP_TYPE_STRING),\n controls: makeProp(PROP_TYPE_BOOLEAN, false),\n // Enable cross-fade animation instead of slide animation\n fade: makeProp(PROP_TYPE_BOOLEAN, false),\n // Sniffed by carousel-slide\n imgHeight: makeProp(PROP_TYPE_NUMBER_STRING),\n // Sniffed by carousel-slide\n imgWidth: makeProp(PROP_TYPE_NUMBER_STRING),\n indicators: makeProp(PROP_TYPE_BOOLEAN, false),\n interval: makeProp(PROP_TYPE_NUMBER, 5000),\n labelGotoSlide: makeProp(PROP_TYPE_STRING, 'Goto slide'),\n labelIndicators: makeProp(PROP_TYPE_STRING, 'Select a slide to display'),\n labelNext: makeProp(PROP_TYPE_STRING, 'Next slide'),\n labelPrev: makeProp(PROP_TYPE_STRING, 'Previous slide'),\n // Disable slide/fade animation\n noAnimation: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable pause on hover\n noHoverPause: makeProp(PROP_TYPE_BOOLEAN, false),\n // Sniffed by carousel-slide\n noTouch: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable wrapping/looping when start/end is reached\n noWrap: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_CAROUSEL); // --- Main component ---\n // @vue/component\n\n var BCarousel = /*#__PURE__*/extend({\n name: NAME_CAROUSEL,\n mixins: [idMixin, modelMixin$h, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvCarousel: function getBvCarousel() {\n return _this;\n }\n };\n },\n props: props$1S,\n data: function data() {\n return {\n index: this[MODEL_PROP_NAME$h] || 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: (_watch$h = {}, _defineProperty(_watch$h, MODEL_PROP_NAME$h, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.setSlide(toInteger(newValue, 0));\n }\n }), _defineProperty(_watch$h, \"interval\", function interval(newValue, oldValue) {\n /* istanbul ignore next */\n if (newValue === oldValue) {\n return;\n }\n\n if (!newValue) {\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 }), _defineProperty(_watch$h, \"isPaused\", function isPaused(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(newValue ? EVENT_NAME_PAUSED : EVENT_NAME_UNPAUSED);\n }\n }), _defineProperty(_watch$h, \"index\", function index(to, from) {\n /* istanbul ignore next */\n if (to === from || this.isSliding) {\n return;\n }\n\n this.doSlide(to, from);\n }), _watch$h),\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 _this2 = 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 (IS_BROWSER && 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(EVENT_NAME_SLIDING_END, function () {\n // Wrap in `requestAF()` to allow the slide to properly finish to avoid glitching\n requestAF(function () {\n return _this2.setSlide(slide, direction);\n });\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[MODEL_PROP_NAME$h]) {\n this.$emit(MODEL_EVENT_NAME$h, 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(event) {\n if (!event) {\n this.isPaused = true;\n }\n\n this.clearInterval();\n },\n // Start auto rotate slides\n start: function start(event) {\n if (!event) {\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 if (!this.$el.contains(getActiveElement())) {\n this.start();\n }\n },\n doSlide: function doSlide(to, from) {\n var _this3 = 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(EVENT_NAME_SLIDING_START, to); // Update v-model\n\n this.$emit(MODEL_EVENT_NAME$h, 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 _this3.$emit(EVENT_NAME_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 (_this3.transitionEndEvent) {\n var events = _this3.transitionEndEvent.split(/\\s+/);\n\n events.forEach(function (event) {\n return eventOff(nextSlide, event, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE);\n });\n }\n\n _this3.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 _this3.isSliding = false;\n _this3.direction = null; // Notify ourselves that we're done sliding (slid)\n\n _this3.$nextTick(function () {\n return _this3.$emit(EVENT_NAME_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(event, fn) {\n var keyCode = event.keyCode;\n\n if (event.type === 'click' || keyCode === CODE_SPACE || keyCode === CODE_ENTER) {\n stopEvent(event);\n fn();\n }\n },\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n handleSwipe: function handleSwipe() {\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: JSDOM doesn't support touch events */\n touchStart: function touchStart(event) {\n if (HAS_POINTER_EVENT_SUPPORT && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX;\n } else if (!HAS_POINTER_EVENT_SUPPORT) {\n this.touchStartX = event.touches[0].clientX;\n }\n },\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n touchMove: function touchMove(event) {\n // Ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0;\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX;\n }\n },\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n touchEnd: function touchEnd(event) {\n if (HAS_POINTER_EVENT_SUPPORT && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.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 _this4 = this;\n\n var indicators = this.indicators,\n background = this.background,\n noAnimation = this.noAnimation,\n noHoverPause = this.noHoverPause,\n noTouch = this.noTouch,\n index = this.index,\n isSliding = this.isSliding,\n pause = this.pause,\n restart = this.restart,\n touchStart = this.touchStart,\n touchEnd = this.touchEnd;\n var idInner = this.safeId('__BV_inner_'); // Wrapper for slides\n\n var $inner = h('div', {\n staticClass: 'carousel-inner',\n attrs: {\n id: idInner,\n role: 'list'\n },\n ref: 'inner'\n }, [this.normalizeSlot()]); // Prev and next controls\n\n var $controls = h();\n\n if (this.controls) {\n var makeControl = function makeControl(direction, label, handler) {\n var handlerWrapper = function handlerWrapper(event) {\n /* istanbul ignore next */\n if (!isSliding) {\n _this4.handleClick(event, handler);\n } else {\n stopEvent(event, {\n propagation: false\n });\n }\n };\n\n return h('a', {\n staticClass: \"carousel-control-\".concat(direction),\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': idInner,\n 'aria-disabled': isSliding ? 'true' : null\n },\n on: {\n click: handlerWrapper,\n keydown: handlerWrapper\n }\n }, [h('span', {\n staticClass: \"carousel-control-\".concat(direction, \"-icon\"),\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: 'sr-only'\n }, [label])]);\n };\n\n $controls = [makeControl('prev', this.labelPrev, this.prev), makeControl('next', this.labelNext, this.next)];\n } // Indicators\n\n\n var $indicators = h('ol', {\n staticClass: 'carousel-indicators',\n directives: [{\n name: 'show',\n value: indicators\n }],\n attrs: {\n id: this.safeId('__BV_indicators_'),\n 'aria-hidden': indicators ? 'false' : 'true',\n 'aria-label': this.labelIndicators,\n 'aria-owns': idInner\n }\n }, this.slides.map(function (slide, i) {\n var handler = function handler(event) {\n _this4.handleClick(event, function () {\n _this4.setSlide(i);\n });\n };\n\n return h('li', {\n class: {\n active: i === index\n },\n attrs: {\n role: 'button',\n id: _this4.safeId(\"__BV_indicator_\".concat(i + 1, \"_\")),\n tabindex: indicators ? '0' : '-1',\n 'aria-current': i === index ? 'true' : 'false',\n 'aria-label': \"\".concat(_this4.labelGotoSlide, \" \").concat(i + 1),\n 'aria-describedby': slide.id || null,\n 'aria-controls': idInner\n },\n on: {\n click: handler,\n keydown: handler\n },\n key: \"slide_\".concat(i)\n });\n }));\n var on = {\n mouseenter: noHoverPause ? noop : pause,\n mouseleave: noHoverPause ? noop : restart,\n focusin: pause,\n focusout: restart,\n keydown: function keydown(event) {\n /* istanbul ignore next */\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_LEFT || keyCode === CODE_RIGHT) {\n stopEvent(event);\n\n _this4[keyCode === CODE_LEFT ? 'prev' : 'next']();\n }\n }\n }; // Touch support event handlers for environment\n\n if (HAS_TOUCH_SUPPORT && !noTouch) {\n // Attach appropriate listeners (prepend event name with '&' for passive mode)\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n if (HAS_POINTER_EVENT_SUPPORT) {\n on['&pointerdown'] = touchStart;\n on['&pointerup'] = touchEnd;\n } else {\n on['&touchstart'] = touchStart;\n on['&touchmove'] = this.touchMove;\n on['&touchend'] = touchEnd;\n }\n } // Return the carousel\n\n\n return h('div', {\n staticClass: 'carousel',\n class: {\n slide: !noAnimation,\n 'carousel-fade': !noAnimation && this.fade,\n 'pointer-event': HAS_TOUCH_SUPPORT && HAS_POINTER_EVENT_SUPPORT && !noTouch\n },\n style: {\n background: background\n },\n attrs: {\n role: 'region',\n id: this.safeId(),\n 'aria-busy': isSliding ? 'true' : 'false'\n },\n on: on\n }, [$inner, $controls, $indicators]);\n }\n });\n\n var imgProps = {\n imgAlt: makeProp(PROP_TYPE_STRING),\n imgBlank: makeProp(PROP_TYPE_BOOLEAN, false),\n imgBlankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n imgHeight: makeProp(PROP_TYPE_NUMBER_STRING),\n imgSrc: makeProp(PROP_TYPE_STRING),\n imgWidth: makeProp(PROP_TYPE_NUMBER_STRING)\n };\n var props$1R = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), imgProps), {}, {\n background: makeProp(PROP_TYPE_STRING),\n caption: makeProp(PROP_TYPE_STRING),\n captionHtml: makeProp(PROP_TYPE_STRING),\n captionTag: makeProp(PROP_TYPE_STRING, 'h3'),\n contentTag: makeProp(PROP_TYPE_STRING, 'div'),\n contentVisibleUp: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING),\n textHtml: makeProp(PROP_TYPE_STRING),\n textTag: makeProp(PROP_TYPE_STRING, 'p')\n })), NAME_CAROUSEL_SLIDE); // --- Main component ---\n // @vue/component\n\n var BCarouselSlide = /*#__PURE__*/extend({\n name: NAME_CAROUSEL_SLIDE,\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n getBvCarousel: {\n // Explicitly disable touch if not a child of carousel\n default: function _default() {\n return function () {\n return {\n noTouch: true\n };\n };\n }\n }\n },\n props: props$1R,\n computed: {\n bvCarousel: function bvCarousel() {\n return this.getBvCarousel();\n },\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(SLOT_NAME_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 && HAS_TOUCH_SUPPORT) {\n on.dragstart = function (event) {\n return stopEvent(event, {\n propagation: false\n });\n };\n }\n\n $img = h(BImg, {\n props: _objectSpread2$3(_objectSpread2$3({}, 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() || false];\n var $content = h();\n\n if ($contentChildren.some(identity)) {\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 var CLASS_NAME_SHOW = 'show';\n\n // Generic collapse transion helper component\n // Transition event handler helpers\n\n var onEnter = function onEnter(el) {\n setStyle(el, 'height', 0); // In a `requestAF()` for `appear` to work\n\n requestAF(function () {\n reflow(el);\n setStyle(el, 'height', \"\".concat(el.scrollHeight, \"px\"));\n });\n };\n\n var onAfterEnter = function onAfterEnter(el) {\n removeStyle(el, 'height');\n };\n\n var onLeave = function onLeave(el) {\n setStyle(el, 'height', 'auto');\n setStyle(el, 'display', 'block');\n setStyle(el, 'height', \"\".concat(getBCR(el).height, \"px\"));\n reflow(el);\n setStyle(el, 'height', 0);\n };\n\n var onAfterLeave = function onAfterLeave(el) {\n removeStyle(el, 'height');\n }; // --- Constants ---\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 }; // --- Main component ---\n\n var props$1Q = {\n // // If `true` (and `visible` is `true` on mount), animate initially visible\n appear: makeProp(PROP_TYPE_BOOLEAN, false)\n }; // --- Main component ---\n // @vue/component\n\n var BVCollapse = /*#__PURE__*/extend({\n name: NAME_COLLAPSE_HELPER,\n functional: true,\n props: props$1Q,\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: `<transition>` supports a single root element only\n children);\n }\n });\n\n var _watch$g;\n\n var ROOT_ACTION_EVENT_NAME_TOGGLE$2 = getRootActionEventName(NAME_COLLAPSE, 'toggle');\n var ROOT_ACTION_EVENT_NAME_REQUEST_STATE$2 = getRootActionEventName(NAME_COLLAPSE, 'request-state');\n var ROOT_EVENT_NAME_ACCORDION = getRootEventName(NAME_COLLAPSE, 'accordion');\n var ROOT_EVENT_NAME_STATE$3 = getRootEventName(NAME_COLLAPSE, 'state');\n var ROOT_EVENT_NAME_SYNC_STATE$3 = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\n var _makeModelMixin$h = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false\n }),\n modelMixin$g = _makeModelMixin$h.mixin,\n modelProps$g = _makeModelMixin$h.props,\n MODEL_PROP_NAME$g = _makeModelMixin$h.prop,\n MODEL_EVENT_NAME$g = _makeModelMixin$h.event; // --- Props ---\n\n\n var props$1P = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$g), {}, {\n // If `true` (and `visible` is `true` on mount), animate initially visible\n accordion: makeProp(PROP_TYPE_STRING),\n appear: makeProp(PROP_TYPE_BOOLEAN, false),\n isNav: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_COLLAPSE); // --- Main component ---\n // @vue/component\n\n var BCollapse = /*#__PURE__*/extend({\n name: NAME_COLLAPSE,\n mixins: [idMixin, modelMixin$g, normalizeSlotMixin, listenOnRootMixin],\n props: props$1P,\n data: function data() {\n return {\n show: this[MODEL_PROP_NAME$g],\n transitioning: false\n };\n },\n computed: {\n classObject: function classObject() {\n var transitioning = this.transitioning;\n return {\n 'navbar-collapse': this.isNav,\n collapse: !transitioning,\n show: this.show && !transitioning\n };\n },\n slotScope: function slotScope() {\n var _this = this;\n\n return {\n visible: this.show,\n close: function close() {\n _this.show = false;\n }\n };\n }\n },\n watch: (_watch$g = {}, _defineProperty(_watch$g, MODEL_PROP_NAME$g, function (newValue) {\n if (newValue !== this.show) {\n this.show = newValue;\n }\n }), _defineProperty(_watch$g, \"show\", function show(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState();\n }\n }), _watch$g),\n created: function created() {\n this.show = this[MODEL_PROP_NAME$g];\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.show = this[MODEL_PROP_NAME$g]; // Listen for toggle events to open/close us\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE$2, this.handleToggleEvent); // Listen to other collapses for accordion events\n\n this.listenOnRoot(ROOT_EVENT_NAME_ACCORDION, this.handleAccordionEvent);\n\n if (this.isNav) {\n // Set up handlers\n this.setWindowEvents(true);\n this.handleResize();\n }\n\n this.$nextTick(function () {\n _this2.emitState();\n }); // Listen for \"Sync state\" requests from `v-b-toggle`\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE$2, function (id) {\n if (id === _this2.safeId()) {\n _this2.$nextTick(_this2.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 if (this.isNav) {\n this.setWindowEvents(false);\n }\n },\n\n /* istanbul ignore next */\n activated: function activated() {\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 && IS_BROWSER) {\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(EVENT_NAME_SHOW);\n },\n onAfterEnter: function onAfterEnter() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_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(EVENT_NAME_HIDE);\n },\n onAfterLeave: function onAfterLeave() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n emitState: function emitState() {\n var show = this.show,\n accordion = this.accordion;\n var id = this.safeId();\n this.$emit(MODEL_EVENT_NAME$g, show); // Let `v-b-toggle` know the state of this collapse\n\n this.emitOnRoot(ROOT_EVENT_NAME_STATE$3, id, show);\n\n if (accordion && show) {\n // Tell the other collapses in this accordion to close\n this.emitOnRoot(ROOT_EVENT_NAME_ACCORDION, id, 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(ROOT_EVENT_NAME_SYNC_STATE$3, 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 $el = this.$el;\n var restore = hasClass($el, CLASS_NAME_SHOW);\n removeClass($el, CLASS_NAME_SHOW);\n var isBlock = getCS($el).display === 'block';\n\n if (restore) {\n addClass($el, CLASS_NAME_SHOW);\n }\n\n return isBlock;\n },\n clickHandler: function clickHandler(event) {\n var el = event.target; // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n\n /* istanbul ignore next: can't test `getComputedStyle()` in JSDOM */\n\n if (!this.isNav || !el || getCS(this.$el).display !== 'block') {\n return;\n } // Only close the collapse if it is not forced to be `display: block !important`\n\n\n if ((matches(el, '.nav-link,.dropdown-item') || closest('.nav-link,.dropdown-item', el)) && !this.checkDisplayBlock()) {\n this.show = false;\n }\n },\n handleToggleEvent: function handleToggleEvent(id) {\n if (id === this.safeId()) {\n this.toggle();\n }\n },\n handleAccordionEvent: function handleAccordionEvent(openedId, openAccordion) {\n var accordion = this.accordion,\n show = this.show;\n\n if (!accordion || accordion !== openAccordion) {\n return;\n }\n\n var isThis = openedId === this.safeId(); // Open this collapse if not shown or\n // close this collapse if shown\n\n if (isThis && !show || !isThis && show) {\n this.toggle();\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 appear = this.appear;\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(SLOT_NAME_DEFAULT, this.slotScope));\n return h(BVCollapse, {\n props: {\n appear: 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 getInstanceFromDirective = function getInstanceFromDirective(vnode, bindings) {\n return isVue3 ? bindings.instance : vnode.context;\n };\n\n // 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'; // Commonly used style properties\n\n var STYLE_OVERFLOW_ANCHOR = 'overflow-anchor'; // Emitted control event for collapse (emitted to collapse)\n\n var ROOT_ACTION_EVENT_NAME_TOGGLE$1 = getRootActionEventName(NAME_COLLAPSE, 'toggle'); // Listen to event for toggle state update (emitted by collapse)\n\n var ROOT_EVENT_NAME_STATE$2 = getRootEventName(NAME_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 ROOT_EVENT_NAME_SYNC_STATE$2 = getRootEventName(NAME_COLLAPSE, 'sync-state'); // Private event we send to collapse to request state update sync event\n\n var ROOT_ACTION_EVENT_NAME_REQUEST_STATE$1 = getRootActionEventName(NAME_COLLAPSE, 'request-state');\n var KEYDOWN_KEY_CODES = [CODE_ENTER, CODE_SPACE]; // --- Helper methods ---\n\n var isNonStandardTag = 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_SPACE_SPLIT) : 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, EVENT_OPTIONS_PASSIVE);\n eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n\n el[BV_TOGGLE_CLICK_HANDLER] = null;\n };\n\n var addClickListener = function addClickListener(el, instance) {\n removeClickListener(el);\n\n if (instance) {\n var handler = function handler(event) {\n if (!(event.type === 'keydown' && !arrayIncludes(KEYDOWN_KEY_CODES, event.keyCode)) && !isDisabled(el)) {\n var targets = el[BV_TOGGLE_TARGETS] || [];\n targets.forEach(function (target) {\n getEventRoot(instance).$emit(ROOT_ACTION_EVENT_NAME_TOGGLE$1, target);\n });\n }\n };\n\n el[BV_TOGGLE_CLICK_HANDLER] = handler;\n eventOn(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n\n if (isNonStandardTag(el)) {\n eventOn(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n }\n };\n\n var removeRootListeners = function removeRootListeners(el, instance) {\n if (el[BV_TOGGLE_ROOT_HANDLER] && instance) {\n getEventRoot(instance).$off([ROOT_EVENT_NAME_STATE$2, ROOT_EVENT_NAME_SYNC_STATE$2], el[BV_TOGGLE_ROOT_HANDLER]);\n }\n\n el[BV_TOGGLE_ROOT_HANDLER] = null;\n };\n\n var addRootListeners = function addRootListeners(el, instance) {\n removeRootListeners(el, instance);\n\n if (instance) {\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 getEventRoot(instance).$on([ROOT_EVENT_NAME_STATE$2, ROOT_EVENT_NAME_SYNC_STATE$2], 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 (!IS_BROWSER || !getInstanceFromDirective(vnode, binding)) {\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(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); // Ensure the `aria-controls` hasn't been overwritten\n // or removed when vnode updates\n // Also ensure to set `overflow-anchor` to `none` to prevent\n // the browser's scroll anchoring behavior\n\n /* istanbul ignore else */\n\n if (targets.length > 0) {\n setAttr(el, ATTR_ARIA_CONTROLS, targets.join(' '));\n setStyle(el, STYLE_OVERFLOW_ANCHOR, 'none');\n } else {\n removeAttr(el, ATTR_ARIA_CONTROLS);\n removeStyle(el, STYLE_OVERFLOW_ANCHOR);\n } // Add/Update our click listener(s)\n // Wrap in a `requestAF()` to allow any previous\n // click handling to occur first\n\n\n requestAF(function () {\n addClickListener(el, getInstanceFromDirective(vnode, binding));\n }); // 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 getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_REQUEST_STATE$1, 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, getInstanceFromDirective(vnode, binding)); // 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, getInstanceFromDirective(vnode, binding)); // 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/styles\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 removeStyle(el, STYLE_OVERFLOW_ANCHOR);\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 = 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 && 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 && 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(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 && !!(window.MSInputMethodContext && document.documentMode);\n var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n /**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n }\n\n /**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n }\n\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(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(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 = 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(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(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()) {\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(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n }\n\n /**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\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() {\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 && /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 <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n }\n\n /**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\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(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n }\n\n /**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\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.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\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(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({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n }\n\n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\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({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n }\n\n /**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\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.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n /**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n var modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n };\n\n /**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n /**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\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.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n };\n\n /**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n /**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n // Utils\n // Methods\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(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n }();\n\n /**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\n Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n Popper.placements = placements;\n Popper.Defaults = Defaults;\n\n var PLACEMENT_TOP_START = 'top-start';\n var PLACEMENT_TOP_END = 'top-end';\n var PLACEMENT_BOTTOM_START = 'bottom-start';\n var PLACEMENT_BOTTOM_END = 'bottom-end';\n var PLACEMENT_RIGHT_START = 'right-start';\n var PLACEMENT_LEFT_START = 'left-start';\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$1(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 }();\n\n var clickOutMixin = extend({\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 eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n isClickOut: function isClickOut(event) {\n return !contains(this.$el, event.target);\n },\n _clickOutHandler: function _clickOutHandler(event) {\n if (this.clickOutHandler && this.isClickOut(event)) {\n this.clickOutHandler(event);\n }\n }\n }\n });\n\n var focusInMixin = extend({\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 eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n _focusInHandler: function _focusInHandler(event) {\n if (this.focusInHandler) {\n this.focusInHandler(event);\n }\n }\n }\n });\n\n var registry = null;\n\n if (isVue3) {\n registry = new WeakMap();\n }\n\n var registerElementToInstance = function registerElementToInstance(element, instance) {\n if (!isVue3) {\n return;\n }\n\n registry.set(element, instance);\n };\n var removeElementToInstance = function removeElementToInstance(element) {\n if (!isVue3) {\n return;\n }\n\n registry.delete(element);\n };\n var getInstanceFromElement = function getInstanceFromElement(element) {\n if (!isVue3) {\n return element.__vue__;\n }\n\n var currentElement = element;\n\n while (currentElement) {\n if (registry.has(currentElement)) {\n /* istanbul ignore next */\n return registry.get(currentElement);\n }\n\n currentElement = currentElement.parentNode;\n }\n\n return null;\n };\n\n var ROOT_EVENT_NAME_SHOWN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_SHOWN);\n var ROOT_EVENT_NAME_HIDDEN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_HIDDEN); // CSS selectors\n\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_ITEM = ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n }).join(', '); // --- Helper methods ---\n // Return an array of visible items\n\n var filterVisibles = function filterVisibles(els) {\n return (els || []).filter(isVisible);\n }; // --- Props ---\n\n\n var props$1O = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$25), {}, {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place left if possible\n dropleft: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place right if possible\n dropright: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place on top if possible\n dropup: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable auto-flipping of menu from bottom <=> top\n noFlip: makeProp(PROP_TYPE_BOOLEAN, false),\n // Number of pixels or a CSS unit value to offset menu\n // (i.e. `1px`, `1rem`, etc.)\n offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n popperOpts: makeProp(PROP_TYPE_OBJECT, {}),\n // Right align menu (default is left align)\n right: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_DROPDOWN); // --- Mixin ---\n // @vue/component\n\n var dropdownMixin = extend({\n mixins: [idMixin, listenOnRootMixin, clickOutMixin, focusInMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvDropdown: function getBvDropdown() {\n return _this;\n }\n };\n },\n inject: {\n getBvNavbar: {\n default: function _default() {\n return function () {\n return null;\n };\n }\n }\n },\n props: props$1O,\n data: function data() {\n return {\n visible: false,\n visibleChangePrevented: false\n };\n },\n computed: {\n bvNavbar: function bvNavbar() {\n return this.getBvNavbar();\n },\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 boundaryClass: function boundaryClass() {\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 return this.boundary !== 'scrollParent' && !this.inNavbar ? 'position-static' : '';\n },\n hideDelay: function hideDelay() {\n return this.inNavbar ? HAS_TOUCH_SUPPORT ? 300 : 50 : 0;\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 eventName = newValue ? EVENT_NAME_SHOW : EVENT_NAME_HIDE;\n var bvEvent = new BvEvent(eventName, {\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(bvEvent);\n\n if (bvEvent.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(EVENT_NAME_HIDDEN, this.focusToggler);\n return;\n }\n\n if (newValue) {\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 this.$_hideTimeout = null;\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // In case we are inside a `<keep-alive>`\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n },\n mounted: function mounted() {\n registerElementToInstance(this.$el, this);\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n this.clearHideTimeout();\n removeElementToInstance(this.$el);\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvent) {\n var type = bvEvent.type;\n this.emitOnRoot(getRootEventName(NAME_DROPDOWN, type), bvEvent);\n this.$emit(type, bvEvent);\n },\n showMenu: function showMenu() {\n var _this2 = this;\n\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Only instantiate Popper.js when dropdown is not in `<b-navbar>`\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', NAME_DROPDOWN);\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.emitOnRoot(ROOT_EVENT_NAME_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 _this2.focusMenu(); // Emit the shown event\n\n\n _this2.$emit(EVENT_NAME_SHOWN);\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.emitOnRoot(ROOT_EVENT_NAME_HIDDEN, this);\n this.$emit(EVENT_NAME_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 try {\n this.$_popper.scheduleUpdate();\n } catch (_unused) {}\n },\n clearHideTimeout: function clearHideTimeout() {\n clearTimeout(this.$_hideTimeout);\n this.$_hideTimeout = null;\n },\n getPopperConfig: function getPopperConfig() {\n var placement = PLACEMENT_BOTTOM_START;\n\n if (this.dropup) {\n placement = this.right ? PLACEMENT_TOP_END : PLACEMENT_TOP_START;\n } else if (this.dropright) {\n placement = PLACEMENT_RIGHT_START;\n } else if (this.dropleft) {\n placement = PLACEMENT_LEFT_START;\n } else if (this.right) {\n placement = PLACEMENT_BOTTOM_END;\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 var boundariesElement = this.boundary;\n\n if (boundariesElement) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: boundariesElement\n };\n }\n\n return mergeDeep(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 ? 'listenOnRoot' : 'listenOffRoot';\n this[method](ROOT_EVENT_NAME_SHOWN, this.rootCloseListener);\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n // Public method to show dropdown\n show: function show() {\n var _this3 = this;\n\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 _this3.visible = true;\n });\n },\n // Public method to hide dropdown\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n /* istanbul ignore next */\n if (this.disabled) {\n return;\n }\n\n this.visible = false;\n\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only by a button that toggles the menu\n toggle: function toggle(event) {\n event = event || {}; // Early exit when not a click event or ENTER, SPACE or DOWN were pressed\n\n var _event = event,\n type = _event.type,\n keyCode = _event.keyCode;\n\n if (type !== 'click' && !(type === 'keydown' && [CODE_ENTER, CODE_SPACE, CODE_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(EVENT_NAME_TOGGLE, event);\n stopEvent(event); // 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(event) {\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 stopEvent(event, {\n propagation: false\n });\n },\n // Called from dropdown menu context\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ESC) {\n // Close on ESC\n this.onEsc(event);\n } else if (keyCode === CODE_DOWN) {\n // Down Arrow\n this.focusNext(event, false);\n } else if (keyCode === CODE_UP) {\n // Up Arrow\n this.focusNext(event, true);\n }\n },\n // If user presses ESC, close the menu\n onEsc: function onEsc(event) {\n if (this.visible) {\n this.visible = false;\n stopEvent(event); // Return focus to original trigger button\n\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only in split button mode, for the split button\n onSplitClick: function onSplitClick(event) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit(EVENT_NAME_CLICK, event);\n },\n // Shared hide handler between click-out and focus-in events\n hideHandler: function hideHandler(event) {\n var _this4 = this;\n\n var target = event.target;\n\n if (this.visible && !contains(this.$refs.menu, target) && !contains(this.toggler, target)) {\n this.clearHideTimeout();\n this.$_hideTimeout = setTimeout(function () {\n return _this4.hide();\n }, this.hideDelay);\n }\n },\n // Document click-out listener\n clickOutHandler: function clickOutHandler(event) {\n this.hideHandler(event);\n },\n // Document focus-in listener\n focusInHandler: function focusInHandler(event) {\n this.hideHandler(event);\n },\n // Keyboard nav\n focusNext: function focusNext(event, up) {\n var _this5 = this;\n\n // Ignore key up/down on form elements\n var target = event.target;\n\n if (!this.visible || event && closest(SELECTOR_FORM_CHILD, target)) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n stopEvent(event);\n this.$nextTick(function () {\n var items = _this5.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 _this5.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, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n attemptFocus(this.$refs.menu);\n },\n focusToggler: function focusToggler() {\n var _this6 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this6.toggler);\n });\n }\n }\n });\n\n var props$1N = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), props$1O), {}, {\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n html: makeProp(PROP_TYPE_STRING),\n // If `true`, only render menu contents when open\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n menuClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n noCaret: makeProp(PROP_TYPE_BOOLEAN, false),\n role: makeProp(PROP_TYPE_STRING, 'menu'),\n size: makeProp(PROP_TYPE_STRING),\n split: makeProp(PROP_TYPE_BOOLEAN, false),\n splitButtonType: makeProp(PROP_TYPE_STRING, 'button', function (value) {\n return arrayIncludes(['button', 'submit', 'reset'], value);\n }),\n splitClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n splitHref: makeProp(PROP_TYPE_STRING),\n splitTo: makeProp(PROP_TYPE_OBJECT_STRING),\n splitVariant: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING),\n toggleAttrs: makeProp(PROP_TYPE_OBJECT, {}),\n toggleClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n toggleTag: makeProp(PROP_TYPE_STRING, 'button'),\n // TODO: This really should be `toggleLabel`\n toggleText: makeProp(PROP_TYPE_STRING, 'Toggle dropdown'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n })), NAME_DROPDOWN); // --- Main component ---\n // @vue/component\n\n var BDropdown = /*#__PURE__*/extend({\n name: NAME_DROPDOWN,\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props: props$1N,\n computed: {\n dropdownClasses: function dropdownClasses() {\n var block = this.block,\n split = this.split;\n return [this.directionClass, this.boundaryClass, {\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 }];\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 visible = this.visible,\n variant = this.variant,\n size = this.size,\n block = this.block,\n disabled = this.disabled,\n split = this.split,\n role = this.role,\n hide = this.hide,\n toggle = this.toggle;\n var commonProps = {\n variant: variant,\n size: size,\n block: block,\n disabled: disabled\n };\n var $buttonChildren = this.normalizeSlot(SLOT_NAME_BUTTON_CONTENT);\n var buttonContentDomProps = this.hasNormalizedSlot(SLOT_NAME_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$3(_objectSpread2$3({}, commonProps), {}, {\n variant: this.splitVariant || variant\n }); // We add these as needed due to <router-link> 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: buttonContentDomProps,\n on: {\n click: this.onSplitClick\n },\n ref: 'button'\n }, $buttonChildren); // Overwrite button content for the toggle when in `split` mode\n\n $buttonChildren = [h('span', {\n class: ['sr-only']\n }, [this.toggleText])];\n buttonContentDomProps = {};\n }\n\n var ariaHasPopupRoles = ['menu', 'listbox', 'tree', 'grid', 'dialog'];\n var $toggle = h(BButton, {\n staticClass: 'dropdown-toggle',\n class: this.toggleClasses,\n attrs: _objectSpread2$3(_objectSpread2$3({}, this.toggleAttrs), {}, {\n // Must have attributes\n id: this.safeId('_BV_toggle_'),\n 'aria-haspopup': ariaHasPopupRoles.includes(role) ? role : 'false',\n 'aria-expanded': toString(visible)\n }),\n props: _objectSpread2$3(_objectSpread2$3({}, commonProps), {}, {\n tag: this.toggleTag,\n block: block && !split\n }),\n domProps: buttonContentDomProps,\n on: {\n mousedown: this.onMousedown,\n click: toggle,\n keydown: toggle // Handle ENTER, SPACE and DOWN\n\n },\n ref: 'toggle'\n }, $buttonChildren);\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 || visible ? this.normalizeSlot(SLOT_NAME_DEFAULT, {\n hide: 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 linkProps$4 = omit(props$2f, ['event', 'routerTag']);\n var props$1M = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, linkProps$4), {}, {\n linkClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n variant: makeProp(PROP_TYPE_STRING)\n })), NAME_DROPDOWN_ITEM); // --- Main component ---\n // @vue/component\n\n var BDropdownItem = /*#__PURE__*/extend({\n name: NAME_DROPDOWN_ITEM,\n mixins: [attrsMixin, normalizeSlotMixin],\n inject: {\n getBvDropdown: {\n default: function _default() {\n return function () {\n return null;\n };\n }\n }\n },\n inheritAttrs: false,\n props: props$1M,\n computed: {\n bvDropdown: function bvDropdown() {\n return this.getBvDropdown();\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread2$3(_objectSpread2$3({}, 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 <b-link> time to process\n requestAF(function () {\n if (_this.bvDropdown) {\n _this.bvDropdown.hide(true);\n }\n });\n },\n onClick: function onClick(event) {\n this.$emit(EVENT_NAME_CLICK, event);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var linkClass = this.linkClass,\n variant = this.variant,\n active = this.active,\n disabled = this.disabled,\n onClick = this.onClick,\n bvAttrs = this.bvAttrs;\n return h('li', {\n class: bvAttrs.class,\n style: bvAttrs.style,\n attrs: {\n role: 'presentation'\n }\n }, [h(BLink, {\n staticClass: 'dropdown-item',\n class: [linkClass, _defineProperty({}, \"text-\".concat(variant), variant && !(active || disabled))],\n props: pluckProps(linkProps$4, this.$props),\n attrs: this.computedAttrs,\n on: {\n click: onClick\n },\n ref: 'item'\n }, this.normalizeSlot())]);\n }\n });\n\n var props$1L = makePropsConfigurable({\n active: makeProp(PROP_TYPE_BOOLEAN, false),\n activeClass: makeProp(PROP_TYPE_STRING, 'active'),\n buttonClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING)\n }, NAME_DROPDOWN_ITEM_BUTTON); // --- Main component ---\n // @vue/component\n\n var BDropdownItemButton = /*#__PURE__*/extend({\n name: NAME_DROPDOWN_ITEM_BUTTON,\n mixins: [attrsMixin, normalizeSlotMixin],\n inject: {\n getBvDropdown: {\n default: function _default() {\n return function () {\n return null;\n };\n }\n }\n },\n inheritAttrs: false,\n props: props$1L,\n computed: {\n bvDropdown: function bvDropdown() {\n return this.getBvDropdown();\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread2$3(_objectSpread2$3({}, 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(event) {\n this.$emit(EVENT_NAME_CLICK, event);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var _ref;\n\n var active = this.active,\n variant = this.variant,\n bvAttrs = this.bvAttrs;\n return h('li', {\n class: bvAttrs.class,\n style: bvAttrs.style,\n attrs: {\n role: 'presentation'\n }\n }, [h('button', {\n staticClass: 'dropdown-item',\n class: [this.buttonClass, (_ref = {}, _defineProperty(_ref, this.activeClass, active), _defineProperty(_ref, \"text-\".concat(variant), variant && !(active || this.disabled)), _ref)],\n attrs: this.computedAttrs,\n on: {\n click: this.onClick\n },\n ref: 'button'\n }, this.normalizeSlot())]);\n }\n });\n\n var props$1K = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'header'),\n variant: makeProp(PROP_TYPE_STRING)\n }, NAME_DROPDOWN_HEADER); // --- Main component ---\n // @vue/component\n\n var BDropdownHeader = /*#__PURE__*/extend({\n name: NAME_DROPDOWN_HEADER,\n functional: true,\n props: props$1K,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = props.tag,\n variant = props.variant;\n return h('li', a(omit(data, ['attrs']), {\n attrs: {\n role: 'presentation'\n }\n }), [h(tag, {\n staticClass: 'dropdown-header',\n class: _defineProperty({}, \"text-\".concat(variant), variant),\n attrs: _objectSpread2$3(_objectSpread2$3({}, data.attrs || {}), {}, {\n id: props.id || null,\n role: isTag(tag, 'header') ? null : 'heading'\n }),\n ref: 'header'\n }, children)]);\n }\n });\n\n var props$1J = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'hr')\n }, NAME_DROPDOWN_DIVIDER); // --- Main component ---\n // @vue/component\n\n var BDropdownDivider = /*#__PURE__*/extend({\n name: NAME_DROPDOWN_DIVIDER,\n functional: true,\n props: props$1J,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n return h('li', a(omit(data, ['attrs']), {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'dropdown-divider',\n attrs: _objectSpread2$3(_objectSpread2$3({}, data.attrs || {}), {}, {\n role: 'separator',\n 'aria-orientation': 'horizontal'\n }),\n ref: 'divider'\n })]);\n }\n });\n\n var props$1I = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n }, NAME_FORM); // --- Main component ---\n // @vue/component\n\n var BForm = /*#__PURE__*/extend({\n name: NAME_FORM,\n functional: true,\n props: props$1I,\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 props$1H = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$1I), {}, {\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n formClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n })), NAME_DROPDOWN_FORM); // --- Main component ---\n // @vue/component\n\n var BDropdownForm = /*#__PURE__*/extend({\n name: NAME_DROPDOWN_FORM,\n functional: true,\n props: props$1H,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n listeners = _ref.listeners,\n children = _ref.children;\n return h('li', a(omit(data, ['attrs', 'on']), {\n attrs: {\n role: 'presentation'\n }\n }), [h(BForm, {\n staticClass: 'b-dropdown-form',\n class: [props.formClass, {\n disabled: props.disabled\n }],\n props: props,\n attrs: _objectSpread2$3(_objectSpread2$3({}, data.attrs || {}), {}, {\n disabled: props.disabled,\n // Tab index of -1 for keyboard navigation\n tabindex: props.disabled ? null : '-1'\n }),\n on: listeners,\n ref: 'form'\n }, children)]);\n }\n });\n\n var props$1G = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'p'),\n textClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n variant: makeProp(PROP_TYPE_STRING)\n }, NAME_DROPDOWN_TEXT); // --- Main component ---\n // @vue/component\n\n var BDropdownText = /*#__PURE__*/extend({\n name: NAME_DROPDOWN_TEXT,\n functional: true,\n props: props$1G,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = props.tag,\n textClass = props.textClass,\n variant = props.variant;\n return h('li', a(omit(data, ['attrs']), {\n attrs: {\n role: 'presentation'\n }\n }), [h(tag, {\n staticClass: 'b-dropdown-text',\n class: [textClass, _defineProperty({}, \"text-\".concat(variant), variant)],\n props: props,\n attrs: data.attrs || {},\n ref: 'text'\n }, children)]);\n }\n });\n\n var props$1F = makePropsConfigurable({\n ariaDescribedby: makeProp(PROP_TYPE_STRING),\n header: makeProp(PROP_TYPE_STRING),\n headerClasses: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n headerVariant: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING)\n }, NAME_DROPDOWN_GROUP); // --- Main component ---\n // @vue/component\n\n var BDropdownGroup = /*#__PURE__*/extend({\n name: NAME_DROPDOWN_GROUP,\n functional: true,\n props: props$1F,\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 id = props.id,\n variant = props.variant,\n header = props.header,\n headerTag = props.headerTag;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var slotScope = {};\n var headerId = id ? \"_bv_\".concat(id, \"_group_dd_header\") : null;\n var $header = h();\n\n if (hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots) || header) {\n $header = h(headerTag, {\n staticClass: 'dropdown-header',\n class: [props.headerClasses, _defineProperty({}, \"text-\".concat(variant), variant)],\n attrs: {\n id: headerId,\n role: isTag(headerTag, 'header') ? null : 'heading'\n }\n }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots) || header);\n }\n\n return h('li', a(omit(data, ['attrs']), {\n attrs: {\n role: 'presentation'\n }\n }), [$header, h('ul', {\n staticClass: 'list-unstyled',\n attrs: _objectSpread2$3(_objectSpread2$3({}, data.attrs || {}), {}, {\n id: id,\n role: 'group',\n 'aria-describedby': [headerId, props.ariaDescribedBy].filter(identity).join(' ').trim() || null\n })\n }, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $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 TYPES$2 = ['iframe', 'embed', 'video', 'object', 'img', 'b-img', 'b-img-lazy']; // --- Props ---\n\n var props$1E = makePropsConfigurable({\n aspect: makeProp(PROP_TYPE_STRING, '16by9'),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n type: makeProp(PROP_TYPE_STRING, 'iframe', function (value) {\n return arrayIncludes(TYPES$2, value);\n })\n }, NAME_EMBED); // --- Main component ---\n // @vue/component\n\n var BEmbed = /*#__PURE__*/extend({\n name: NAME_EMBED,\n functional: true,\n props: props$1E,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var aspect = props.aspect;\n return h(props.tag, {\n staticClass: 'embed-responsive',\n class: _defineProperty({}, \"embed-responsive-\".concat(aspect), aspect),\n ref: data.ref\n }, [h(props.type, a(omit(data, ['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.'; // --- Props ---\n\n var props$1D = makePropsConfigurable({\n disabledField: makeProp(PROP_TYPE_STRING, 'disabled'),\n htmlField: makeProp(PROP_TYPE_STRING, 'html'),\n options: makeProp(PROP_TYPE_ARRAY_OBJECT, []),\n textField: makeProp(PROP_TYPE_STRING, 'text'),\n valueField: makeProp(PROP_TYPE_STRING, 'value')\n }, 'formOptionControls'); // --- Mixin ---\n // @vue/component\n\n var formOptionsMixin = extend({\n props: props$1D,\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 `<option>` object from the given value\n\n\n return {\n value: key || option,\n text: stripTags(String(option)),\n disabled: false\n };\n },\n normalizeOptions: function normalizeOptions(options) {\n var _this = this;\n\n // Normalize the given options array\n if (isArray(options)) {\n return options.map(function (option) {\n return _this.normalizeOption(option);\n });\n } else if (isPlainObject(options)) {\n // Deprecate the object options format\n warn(OPTIONS_OBJECT_DEPRECATED_MSG, this.$options.name); // Normalize a `options` object to an array of options\n\n return keys(options).map(function (key) {\n return _this.normalizeOption(options[key] || {}, key);\n });\n } // If not an array or object, return an empty array\n\n /* istanbul ignore next */\n\n\n return [];\n }\n }\n });\n\n var props$1C = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$1D), {}, {\n id: makeProp(PROP_TYPE_STRING, undefined, true) // Required\n\n })), NAME_FORM_DATALIST); // --- Main component ---\n // @vue/component\n\n var BFormDatalist = /*#__PURE__*/extend({\n name: NAME_FORM_DATALIST,\n mixins: [formOptionsMixin, normalizeSlotMixin],\n props: props$1C,\n render: function render(h) {\n var id = this.id;\n var $options = this.formOptions.map(function (option, index) {\n var value = option.value,\n text = option.text,\n html = option.html,\n disabled = option.disabled;\n return h('option', {\n attrs: {\n value: value,\n disabled: disabled\n },\n domProps: htmlOrText(html, text),\n key: \"option_\".concat(index)\n });\n });\n return h('datalist', {\n attrs: {\n id: id\n }\n }, [$options, this.normalizeSlot()]);\n }\n });\n\n var props$1B = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'small'),\n textVariant: makeProp(PROP_TYPE_STRING, 'muted')\n }, NAME_FORM_TEXT); // --- Main component ---\n // @vue/component\n\n var BFormText = /*#__PURE__*/extend({\n name: NAME_FORM_TEXT,\n functional: true,\n props: props$1B,\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 'form-text': !props.inline\n }, \"text-\".concat(props.textVariant), props.textVariant),\n attrs: {\n id: props.id\n }\n }), children);\n }\n });\n\n var props$1A = makePropsConfigurable({\n ariaLive: makeProp(PROP_TYPE_STRING),\n forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING),\n // Tri-state prop: `true`, `false`, or `null`\n state: makeProp(PROP_TYPE_BOOLEAN, null),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n }, NAME_FORM_INVALID_FEEDBACK); // --- Main component ---\n // @vue/component\n\n var BFormInvalidFeedback = /*#__PURE__*/extend({\n name: NAME_FORM_INVALID_FEEDBACK,\n functional: true,\n props: props$1A,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tooltip = props.tooltip,\n ariaLive = props.ariaLive;\n var show = props.forceShow === true || props.state === false;\n return h(props.tag, a(data, {\n class: {\n 'd-block': show,\n 'invalid-feedback': !tooltip,\n 'invalid-tooltip': tooltip\n },\n attrs: {\n id: props.id || null,\n role: props.role || null,\n 'aria-live': ariaLive || null,\n 'aria-atomic': ariaLive ? 'true' : null\n }\n }), children);\n }\n });\n\n var props$1z = makePropsConfigurable({\n ariaLive: makeProp(PROP_TYPE_STRING),\n forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING),\n // Tri-state prop: `true`, `false`, or `null`\n state: makeProp(PROP_TYPE_BOOLEAN, null),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n }, NAME_FORM_VALID_FEEDBACK); // --- Main component ---\n // @vue/component\n\n var BFormValidFeedback = /*#__PURE__*/extend({\n name: NAME_FORM_VALID_FEEDBACK,\n functional: true,\n props: props$1z,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tooltip = props.tooltip,\n ariaLive = props.ariaLive;\n var show = props.forceShow === true || props.state === true;\n return h(props.tag, a(data, {\n class: {\n 'd-block': show,\n 'valid-feedback': !tooltip,\n 'valid-tooltip': tooltip\n },\n attrs: {\n id: props.id || null,\n role: props.role || null,\n 'aria-live': ariaLive || null,\n 'aria-atomic': ariaLive ? 'true' : null\n }\n }), children);\n }\n });\n\n var props$1y = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }, NAME_FORM_ROW); // --- Main component ---\n // @vue/component\n\n var BFormRow = /*#__PURE__*/extend({\n name: NAME_FORM_ROW,\n functional: true,\n props: props$1y,\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 staticClass: 'form-row'\n }), children);\n }\n });\n\n var FormPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BForm: BForm,\n BFormDatalist: BFormDatalist,\n BDatalist: BFormDatalist,\n BFormText: BFormText,\n BFormInvalidFeedback: BFormInvalidFeedback,\n BFormFeedback: BFormInvalidFeedback,\n BFormValidFeedback: BFormValidFeedback,\n // Added here for convenience\n BFormRow: BFormRow\n }\n }); // BFormRow is not exported here as a named export, as it is exported by Layout\n\n var looseIndexOf = function looseIndexOf(array, value) {\n for (var i = 0; i < array.length; i++) {\n if (looseEqual(array[i], value)) {\n return i;\n }\n }\n\n return -1;\n };\n\n var SELECTOR = 'input, textarea, select'; // --- Props ---\n\n var props$1x = makePropsConfigurable({\n autofocus: makeProp(PROP_TYPE_BOOLEAN, false),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n form: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n name: makeProp(PROP_TYPE_STRING),\n required: makeProp(PROP_TYPE_BOOLEAN, false)\n }, 'formControls'); // --- Mixin ---\n // @vue/component\n\n var formControlMixin = extend({\n props: props$1x,\n mounted: function mounted() {\n this.handleAutofocus();\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.handleAutofocus();\n },\n methods: {\n handleAutofocus: function handleAutofocus() {\n var _this = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n var el = _this.$el;\n\n if (_this.autofocus && isVisible(el)) {\n if (!matches(el, SELECTOR)) {\n el = select(SELECTOR, el);\n }\n\n attemptFocus(el);\n }\n });\n });\n }\n }\n });\n\n var props$1w = makePropsConfigurable({\n plain: makeProp(PROP_TYPE_BOOLEAN, false)\n }, 'formControls'); // --- Mixin ---\n // @vue/component\n\n var formCustomMixin = extend({\n props: props$1w,\n computed: {\n custom: function custom() {\n return !this.plain;\n }\n }\n });\n\n var props$1v = makePropsConfigurable({\n size: makeProp(PROP_TYPE_STRING)\n }, 'formControls'); // --- Mixin ---\n // @vue/component\n\n var formSizeMixin = extend({\n props: props$1v,\n computed: {\n sizeFormClass: function sizeFormClass() {\n return [this.size ? \"form-control-\".concat(this.size) : null];\n }\n }\n });\n\n /* Form control contextual state class computation\n *\n * Returned class is either 'is-valid' or 'is-invalid' based on the 'state' prop\n * state can be one of five values:\n * - true for is-valid\n * - false for is-invalid\n * - null for no contextual state\n */\n\n var props$1u = makePropsConfigurable({\n // Tri-state prop: true, false, null (or undefined)\n state: makeProp(PROP_TYPE_BOOLEAN, null)\n }, 'formState'); // --- Mixin ---\n // @vue/component\n\n var formStateMixin = extend({\n props: props$1u,\n computed: {\n computedState: function computedState() {\n // If not a boolean, ensure that value is null\n return isBoolean(this.state) ? this.state : null;\n },\n stateClass: function stateClass() {\n var state = this.computedState;\n return state === true ? 'is-valid' : state === false ? 'is-invalid' : null;\n },\n computedAriaInvalid: function computedAriaInvalid() {\n var ariaInvalid = safeVueInstance(this).ariaInvalid;\n\n if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {\n return 'true';\n }\n\n return this.computedState === false ? 'true' : ariaInvalid;\n }\n }\n });\n\n var _watch$f, _methods;\n\n var _makeModelMixin$g = makeModelMixin('checked', {\n defaultValue: null\n }),\n modelMixin$f = _makeModelMixin$g.mixin,\n modelProps$f = _makeModelMixin$g.props,\n MODEL_PROP_NAME$f = _makeModelMixin$g.prop,\n MODEL_EVENT_NAME$f = _makeModelMixin$g.event;\n\n var props$1t = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$f), props$1x), props$1v), props$1u), props$1w), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // Only applicable in standalone mode (non group)\n button: makeProp(PROP_TYPE_BOOLEAN, false),\n // Only applicable when rendered with button style\n buttonVariant: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n value: makeProp(PROP_TYPE_ANY)\n })), 'formRadioCheckControls'); // --- Mixin ---\n // @vue/component\n\n var formRadioCheckMixin = extend({\n mixins: [attrsMixin, idMixin, modelMixin$f, normalizeSlotMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin],\n inheritAttrs: false,\n props: props$1t,\n data: function data() {\n return {\n localChecked: this.isGroup ? this.bvGroup[MODEL_PROP_NAME$f] : this[MODEL_PROP_NAME$f],\n hasFocus: false\n };\n },\n computed: {\n computedLocalChecked: {\n get: function get() {\n return this.isGroup ? this.bvGroup.localChecked : this.localChecked;\n },\n set: function set(value) {\n if (this.isGroup) {\n this.bvGroup.localChecked = value;\n } else {\n this.localChecked = value;\n }\n }\n },\n isChecked: function isChecked() {\n return looseEqual(this.value, this.computedLocalChecked);\n },\n isRadio: function isRadio() {\n return true;\n },\n isGroup: function isGroup() {\n // Is this check/radio a child of check-group or radio-group?\n return !!this.bvGroup;\n },\n isBtnMode: function isBtnMode() {\n // Support button style in single input mode\n return this.isGroup ? this.bvGroup.buttons : this.button;\n },\n isPlain: function isPlain() {\n return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain;\n },\n isCustom: function isCustom() {\n return this.isBtnMode ? false : !this.isPlain;\n },\n isSwitch: function isSwitch() {\n // Custom switch styling (checkboxes only)\n return this.isBtnMode || this.isRadio || this.isPlain ? false : this.isGroup ? this.bvGroup.switches : this.switch;\n },\n isInline: function isInline() {\n return this.isGroup ? this.bvGroup.inline : this.inline;\n },\n isDisabled: function isDisabled() {\n // Child can be disabled while parent isn't, but is always disabled if group is\n return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled;\n },\n isRequired: function isRequired() {\n // Required only works when a name is provided for the input(s)\n // Child can only be required when parent is\n // Groups will always have a name (either user supplied or auto generated)\n return this.computedName && (this.isGroup ? this.bvGroup.required : this.required);\n },\n computedName: function computedName() {\n // Group name preferred over local name\n return (this.isGroup ? this.bvGroup.groupName : this.name) || null;\n },\n computedForm: function computedForm() {\n return (this.isGroup ? this.bvGroup.form : this.form) || null;\n },\n computedSize: function computedSize() {\n return (this.isGroup ? this.bvGroup.size : this.size) || '';\n },\n computedState: function computedState() {\n return this.isGroup ? this.bvGroup.computedState : isBoolean(this.state) ? this.state : null;\n },\n computedButtonVariant: function computedButtonVariant() {\n // Local variant preferred over group variant\n var buttonVariant = this.buttonVariant;\n\n if (buttonVariant) {\n return buttonVariant;\n }\n\n if (this.isGroup && this.bvGroup.buttonVariant) {\n return this.bvGroup.buttonVariant;\n }\n\n return 'secondary';\n },\n buttonClasses: function buttonClasses() {\n var _ref;\n\n var computedSize = this.computedSize;\n return ['btn', \"btn-\".concat(this.computedButtonVariant), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(computedSize), computedSize), _defineProperty(_ref, \"disabled\", this.isDisabled), _defineProperty(_ref, \"active\", this.isChecked), _defineProperty(_ref, \"focus\", this.hasFocus), _ref)];\n },\n computedAttrs: function computedAttrs() {\n var disabled = this.isDisabled,\n required = this.isRequired;\n return _objectSpread2$3(_objectSpread2$3({}, this.bvAttrs), {}, {\n id: this.safeId(),\n type: this.isRadio ? 'radio' : 'checkbox',\n name: this.computedName,\n form: this.computedForm,\n disabled: disabled,\n required: required,\n 'aria-required': required || null,\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || null\n });\n }\n },\n watch: (_watch$f = {}, _defineProperty(_watch$f, MODEL_PROP_NAME$f, function () {\n this[\"\".concat(MODEL_PROP_NAME$f, \"Watcher\")].apply(this, arguments);\n }), _defineProperty(_watch$f, \"computedLocalChecked\", function computedLocalChecked() {\n this.computedLocalCheckedWatcher.apply(this, arguments);\n }), _watch$f),\n methods: (_methods = {}, _defineProperty(_methods, \"\".concat(MODEL_PROP_NAME$f, \"Watcher\"), function Watcher(newValue) {\n if (!looseEqual(newValue, this.computedLocalChecked)) {\n this.computedLocalChecked = newValue;\n }\n }), _defineProperty(_methods, \"computedLocalCheckedWatcher\", function computedLocalCheckedWatcher(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME$f, newValue);\n }\n }), _defineProperty(_methods, \"handleChange\", function handleChange(_ref2) {\n var _this = this;\n\n var checked = _ref2.target.checked;\n var value = this.value;\n var localChecked = checked ? value : null;\n this.computedLocalChecked = value; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n this.$nextTick(function () {\n // Change is only emitted on user interaction\n _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n if (_this.isGroup) {\n _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n }\n });\n }), _defineProperty(_methods, \"handleFocus\", function handleFocus(event) {\n // When in buttons mode, we need to add 'focus' class to label when input focused\n // As it is the hidden input which has actual focus\n if (event.target) {\n if (event.type === 'focus') {\n this.hasFocus = true;\n } else if (event.type === 'blur') {\n this.hasFocus = false;\n }\n }\n }), _defineProperty(_methods, \"focus\", function focus() {\n if (!this.isDisabled) {\n attemptFocus(this.$refs.input);\n }\n }), _defineProperty(_methods, \"blur\", function blur() {\n if (!this.isDisabled) {\n attemptBlur(this.$refs.input);\n }\n }), _methods),\n render: function render(h) {\n var isRadio = this.isRadio,\n isBtnMode = this.isBtnMode,\n isPlain = this.isPlain,\n isCustom = this.isCustom,\n isInline = this.isInline,\n isSwitch = this.isSwitch,\n computedSize = this.computedSize,\n bvAttrs = this.bvAttrs;\n var $content = this.normalizeSlot();\n var $input = h('input', {\n class: [{\n 'form-check-input': isPlain,\n 'custom-control-input': isCustom,\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n 'position-static': isPlain && !$content\n }, isBtnMode ? '' : this.stateClass],\n directives: [{\n name: 'model',\n value: this.computedLocalChecked\n }],\n attrs: this.computedAttrs,\n domProps: {\n value: this.value,\n checked: this.isChecked\n },\n on: _objectSpread2$3({\n change: this.handleChange\n }, isBtnMode ? {\n focus: this.handleFocus,\n blur: this.handleFocus\n } : {}),\n key: 'input',\n ref: 'input'\n });\n\n if (isBtnMode) {\n var $button = h('label', {\n class: this.buttonClasses\n }, [$input, $content]);\n\n if (!this.isGroup) {\n // Standalone button mode, so wrap in 'btn-group-toggle'\n // and flag it as inline-block to mimic regular buttons\n $button = h('div', {\n class: ['btn-group-toggle', 'd-inline-block']\n }, [$button]);\n }\n\n return $button;\n } // If no label content in plain mode we dont render the label\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n\n\n var $label = h();\n\n if (!(isPlain && !$content)) {\n $label = h('label', {\n class: {\n 'form-check-label': isPlain,\n 'custom-control-label': isCustom\n },\n attrs: {\n for: this.safeId()\n }\n }, $content);\n }\n\n return h('div', {\n class: [_defineProperty({\n 'form-check': isPlain,\n 'form-check-inline': isPlain && isInline,\n 'custom-control': isCustom,\n 'custom-control-inline': isCustom && isInline,\n 'custom-checkbox': isCustom && !isRadio && !isSwitch,\n 'custom-switch': isSwitch,\n 'custom-radio': isCustom && isRadio\n }, \"b-custom-control-\".concat(computedSize), computedSize && !isBtnMode), bvAttrs.class],\n style: bvAttrs.style\n }, [$input, $label]);\n }\n });\n\n var _objectSpread2$2;\n\n var MODEL_PROP_NAME_INDETERMINATE = 'indeterminate';\n var MODEL_EVENT_NAME_INDETERMINATE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_INDETERMINATE; // --- Props ---\n\n var props$1s = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$1t), {}, (_objectSpread2$2 = {}, _defineProperty(_objectSpread2$2, MODEL_PROP_NAME_INDETERMINATE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2$2, \"switch\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2$2, \"uncheckedValue\", makeProp(PROP_TYPE_ANY, false)), _defineProperty(_objectSpread2$2, \"value\", makeProp(PROP_TYPE_ANY, true)), _objectSpread2$2))), NAME_FORM_CHECKBOX); // --- Main component ---\n // @vue/component\n\n var BFormCheckbox = /*#__PURE__*/extend({\n name: NAME_FORM_CHECKBOX,\n mixins: [formRadioCheckMixin],\n inject: {\n getBvGroup: {\n from: 'getBvCheckGroup',\n default: function _default() {\n return function () {\n return null;\n };\n }\n }\n },\n props: props$1s,\n computed: {\n bvGroup: function bvGroup() {\n return this.getBvGroup();\n },\n isChecked: function isChecked() {\n var value = this.value,\n checked = this.computedLocalChecked;\n return isArray(checked) ? looseIndexOf(checked, value) > -1 : looseEqual(checked, value);\n },\n isRadio: function isRadio() {\n return false;\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME_INDETERMINATE, function (newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.setIndeterminate(newValue);\n }\n }),\n mounted: function mounted() {\n // Set initial indeterminate state\n this.setIndeterminate(this[MODEL_PROP_NAME_INDETERMINATE]);\n },\n methods: {\n computedLocalCheckedWatcher: function computedLocalCheckedWatcher(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME$f, newValue);\n var $input = this.$refs.input;\n\n if ($input) {\n this.$emit(MODEL_EVENT_NAME_INDETERMINATE, $input.indeterminate);\n }\n }\n },\n handleChange: function handleChange(_ref) {\n var _this = this;\n\n var _ref$target = _ref.target,\n checked = _ref$target.checked,\n indeterminate = _ref$target.indeterminate;\n var value = this.value,\n uncheckedValue = this.uncheckedValue; // Update `computedLocalChecked`\n\n var localChecked = this.computedLocalChecked;\n\n if (isArray(localChecked)) {\n var index = looseIndexOf(localChecked, value);\n\n if (checked && index < 0) {\n // Add value to array\n localChecked = localChecked.concat(value);\n } else if (!checked && index > -1) {\n // Remove value from array\n localChecked = localChecked.slice(0, index).concat(localChecked.slice(index + 1));\n }\n } else {\n localChecked = checked ? value : uncheckedValue;\n }\n\n this.computedLocalChecked = localChecked; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n this.$nextTick(function () {\n // Change is only emitted on user interaction\n _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n if (_this.isGroup) {\n _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n }\n\n _this.$emit(MODEL_EVENT_NAME_INDETERMINATE, indeterminate);\n });\n },\n setIndeterminate: function setIndeterminate(state) {\n // Indeterminate only supported in single checkbox mode\n if (isArray(this.computedLocalChecked)) {\n state = false;\n }\n\n var $input = this.$refs.input;\n\n if ($input) {\n $input.indeterminate = state; // Emit update event to prop\n\n this.$emit(MODEL_EVENT_NAME_INDETERMINATE, state);\n }\n }\n }\n });\n\n var props$1r = makePropsConfigurable(props$1t, NAME_FORM_RADIO); // --- Main component ---\n // @vue/component\n\n var BFormRadio = /*#__PURE__*/extend({\n name: NAME_FORM_RADIO,\n mixins: [formRadioCheckMixin],\n inject: {\n getBvGroup: {\n from: 'getBvRadioGroup',\n default: function _default() {\n return function () {\n return null;\n };\n }\n }\n },\n props: props$1r,\n computed: {\n bvGroup: function bvGroup() {\n return this.getBvGroup();\n }\n }\n });\n\n var _watch$e;\n // Attributes to pass down to checks/radios instead of applying them to the group\n\n var PASS_DOWN_ATTRS = ['aria-describedby', 'aria-labelledby'];\n\n var _makeModelMixin$f = makeModelMixin('checked'),\n modelMixin$e = _makeModelMixin$f.mixin,\n modelProps$e = _makeModelMixin$f.props,\n MODEL_PROP_NAME$e = _makeModelMixin$f.prop,\n MODEL_EVENT_NAME$e = _makeModelMixin$f.event;\n\n var props$1q = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$e), props$1x), props$1D), props$1v), props$1u), props$1w), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n // Only applicable when rendered with button style\n buttonVariant: makeProp(PROP_TYPE_STRING),\n // Render as button style\n buttons: makeProp(PROP_TYPE_BOOLEAN, false),\n stacked: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n })), 'formRadioCheckGroups'); // --- Mixin ---\n // @vue/component\n\n var formRadioCheckGroupMixin = extend({\n mixins: [idMixin, modelMixin$e, normalizeSlotMixin, formControlMixin, formOptionsMixin, formSizeMixin, formStateMixin, formCustomMixin],\n inheritAttrs: false,\n props: props$1q,\n data: function data() {\n return {\n localChecked: this[MODEL_PROP_NAME$e]\n };\n },\n computed: {\n inline: function inline() {\n return !this.stacked;\n },\n groupName: function groupName() {\n // Checks/Radios tied to the same model must have the same name,\n // especially for ARIA accessibility\n return this.name || this.safeId();\n },\n groupClasses: function groupClasses() {\n var inline = this.inline,\n size = this.size,\n validated = this.validated;\n var classes = {\n 'was-validated': validated\n };\n\n if (this.buttons) {\n classes = [classes, 'btn-group-toggle', _defineProperty({\n 'btn-group': inline,\n 'btn-group-vertical': !inline\n }, \"btn-group-\".concat(size), size)];\n }\n\n return classes;\n }\n },\n watch: (_watch$e = {}, _defineProperty(_watch$e, MODEL_PROP_NAME$e, function (newValue) {\n if (!looseEqual(newValue, this.localChecked)) {\n this.localChecked = newValue;\n }\n }), _defineProperty(_watch$e, \"localChecked\", function localChecked(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME$e, newValue);\n }\n }), _watch$e),\n render: function render(h) {\n var _this = this;\n\n var isRadioGroup = this.isRadioGroup;\n var attrs = pick$1(this.$attrs, PASS_DOWN_ATTRS);\n var optionComponent = isRadioGroup ? BFormRadio : BFormCheckbox;\n var $inputs = this.formOptions.map(function (option, index) {\n var key = \"BV_option_\".concat(index);\n return h(optionComponent, {\n props: {\n // Individual radios or checks can be disabled in a group\n disabled: option.disabled || false,\n id: _this.safeId(key),\n value: option.value // We don't need to include these, since the input's will know they are inside here\n // form: this.form || null,\n // name: this.groupName,\n // required: Boolean(this.name && this.required),\n // state: this.state\n\n },\n attrs: attrs,\n key: key\n }, [h('span', {\n domProps: htmlOrText(option.html, option.text)\n })]);\n });\n return h('div', {\n class: [this.groupClasses, 'bv-no-focus-ring'],\n attrs: _objectSpread2$3(_objectSpread2$3({}, omit(this.$attrs, PASS_DOWN_ATTRS)), {}, {\n 'aria-invalid': this.computedAriaInvalid,\n 'aria-required': this.required ? 'true' : null,\n id: this.safeId(),\n role: isRadioGroup ? 'radiogroup' : 'group',\n // Add `tabindex=\"-1\"` to allow group to be focused if needed by screen readers\n tabindex: '-1'\n })\n }, [this.normalizeSlot(SLOT_NAME_FIRST), $inputs, this.normalizeSlot()]);\n }\n });\n\n var _objectSpread2$1;\n\n var props$1p = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$1q), {}, (_objectSpread2$1 = {}, _defineProperty(_objectSpread2$1, MODEL_PROP_NAME$e, makeProp(PROP_TYPE_ARRAY, [])), _defineProperty(_objectSpread2$1, \"switches\", makeProp(PROP_TYPE_BOOLEAN, false)), _objectSpread2$1))), NAME_FORM_CHECKBOX_GROUP); // --- Main component ---\n // @vue/component\n\n var BFormCheckboxGroup = /*#__PURE__*/extend({\n name: NAME_FORM_CHECKBOX_GROUP,\n // Includes render function\n mixins: [formRadioCheckGroupMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvCheckGroup: function getBvCheckGroup() {\n return _this;\n }\n };\n },\n props: props$1p,\n computed: {\n isRadioGroup: function isRadioGroup() {\n return false;\n }\n }\n });\n\n var FormCheckboxPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormCheckbox: BFormCheckbox,\n BCheckbox: BFormCheckbox,\n BCheck: BFormCheckbox,\n BFormCheckboxGroup: BFormCheckboxGroup,\n BCheckboxGroup: BFormCheckboxGroup,\n BCheckGroup: BFormCheckboxGroup\n }\n });\n\n // v-b-hover directive\n\n var PROP$2 = '__BV_hover_handler__';\n var MOUSEENTER = 'mouseenter';\n var MOUSELEAVE = 'mouseleave'; // --- Helper methods ---\n\n var createListener = function createListener(handler) {\n var listener = function listener(event) {\n handler(event.type === MOUSEENTER, event);\n };\n\n listener.fn = handler;\n return listener;\n };\n\n var updateListeners = function updateListeners(on, el, listener) {\n eventOnOff(on, el, MOUSEENTER, listener, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, el, MOUSELEAVE, listener, EVENT_OPTIONS_NO_CAPTURE);\n }; // --- Directive bind/unbind/update handler ---\n\n\n var directive = function directive(el, _ref) {\n var _ref$value = _ref.value,\n handler = _ref$value === void 0 ? null : _ref$value;\n\n if (IS_BROWSER) {\n var listener = el[PROP$2];\n var hasListener = isFunction$1(listener);\n var handlerChanged = !(hasListener && listener.fn === handler);\n\n if (hasListener && handlerChanged) {\n updateListeners(false, el, listener);\n delete el[PROP$2];\n }\n\n if (isFunction$1(handler) && handlerChanged) {\n el[PROP$2] = createListener(handler);\n updateListeners(true, el, el[PROP$2]);\n }\n }\n }; // VBHover directive\n\n\n var VBHover = {\n bind: directive,\n componentUpdated: directive,\n unbind: function unbind(el) {\n directive(el, {\n value: null\n });\n }\n };\n\n var props$1o = sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), props$1v), props$1u), omit(props$1O, ['disabled'])), omit(props$1x, ['autofocus'])), {}, {\n // When `true`, renders a `btn-group` wrapper and visually hides the label\n buttonOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n // Applicable in button mode only\n buttonVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n // This is the value shown in the label\n // Defaults back to `value`\n formattedValue: makeProp(PROP_TYPE_STRING),\n // Value placed in `.sr-only` span inside label when value is present\n labelSelected: makeProp(PROP_TYPE_STRING),\n lang: makeProp(PROP_TYPE_STRING),\n // Extra classes to apply to the `dropdown-menu` div\n menuClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // This is the value placed on the hidden input when no value selected\n placeholder: makeProp(PROP_TYPE_STRING),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n // Tri-state prop: `true`, `false` or `null`\n rtl: makeProp(PROP_TYPE_BOOLEAN, null),\n value: makeProp(PROP_TYPE_STRING, '')\n })); // --- Main component ---\n // @vue/component\n\n var BVFormBtnLabelControl = /*#__PURE__*/extend({\n name: NAME_FORM_BUTTON_LABEL_CONTROL,\n directives: {\n 'b-hover': VBHover\n },\n mixins: [idMixin, formSizeMixin, formStateMixin, dropdownMixin, normalizeSlotMixin],\n props: props$1o,\n data: function data() {\n return {\n isHovered: false,\n hasFocus: false\n };\n },\n computed: {\n idButton: function idButton() {\n return this.safeId();\n },\n idLabel: function idLabel() {\n return this.safeId('_value_');\n },\n idMenu: function idMenu() {\n return this.safeId('_dialog_');\n },\n idWrapper: function idWrapper() {\n return this.safeId('_outer_');\n },\n computedDir: function computedDir() {\n return this.rtl === true ? 'rtl' : this.rtl === false ? 'ltr' : null;\n }\n },\n methods: {\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.toggle);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.toggle);\n }\n },\n setFocus: function setFocus(event) {\n this.hasFocus = event.type === 'focus';\n },\n handleHover: function handleHover(hovered) {\n this.isHovered = hovered;\n }\n },\n render: function render(h) {\n var _class;\n\n var idButton = this.idButton,\n idLabel = this.idLabel,\n idMenu = this.idMenu,\n idWrapper = this.idWrapper,\n disabled = this.disabled,\n readonly = this.readonly,\n required = this.required,\n name = this.name,\n state = this.state,\n visible = this.visible,\n size = this.size,\n isHovered = this.isHovered,\n hasFocus = this.hasFocus,\n labelSelected = this.labelSelected,\n buttonVariant = this.buttonVariant,\n buttonOnly = this.buttonOnly;\n var value = toString(this.value) || '';\n var invalid = state === false || required && !value;\n var btnScope = {\n isHovered: isHovered,\n hasFocus: hasFocus,\n state: state,\n opened: visible\n };\n var $button = h('button', {\n staticClass: 'btn',\n 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),\n attrs: {\n id: idButton,\n type: 'button',\n disabled: disabled,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': visible ? 'true' : 'false',\n 'aria-invalid': invalid ? 'true' : null,\n 'aria-required': required ? 'true' : null\n },\n directives: [{\n name: 'b-hover',\n value: this.handleHover\n }],\n on: {\n mousedown: this.onMousedown,\n click: this.toggle,\n keydown: this.toggle,\n // Handle ENTER, SPACE and DOWN\n '!focus': this.setFocus,\n '!blur': this.setFocus\n },\n ref: 'toggle'\n }, [this.hasNormalizedSlot(SLOT_NAME_BUTTON_CONTENT) ? this.normalizeSlot(SLOT_NAME_BUTTON_CONTENT, btnScope) :\n /* istanbul ignore next */\n h(BIconChevronDown, {\n props: {\n scale: 1.25\n }\n })]); // Hidden input\n\n var $hidden = h();\n\n if (name && !disabled) {\n $hidden = h('input', {\n attrs: {\n type: 'hidden',\n name: name || null,\n form: this.form || null,\n value: value\n }\n });\n } // Dropdown content\n\n\n var $menu = h('div', {\n staticClass: 'dropdown-menu',\n class: [this.menuClass, {\n show: visible,\n 'dropdown-menu-right': this.right\n }],\n attrs: {\n id: idMenu,\n role: 'dialog',\n tabindex: '-1',\n 'aria-modal': 'false',\n 'aria-labelledby': idLabel\n },\n on: {\n keydown: this.onKeydown // Handle ESC\n\n },\n ref: 'menu'\n }, [this.normalizeSlot(SLOT_NAME_DEFAULT, {\n opened: visible\n })]); // Value label\n\n var $label = h('label', {\n class: buttonOnly ? 'sr-only' // Hidden in button only mode\n : ['form-control', // Mute the text if showing the placeholder\n {\n 'text-muted': !value\n }, this.stateClass, this.sizeFormClass],\n attrs: {\n id: idLabel,\n for: idButton,\n 'aria-invalid': invalid ? 'true' : null,\n 'aria-required': required ? 'true' : null\n },\n directives: [{\n name: 'b-hover',\n value: this.handleHover\n }],\n on: {\n // Disable bubbling of the click event to\n // prevent menu from closing and re-opening\n '!click':\n /* istanbul ignore next */\n function click(event) {\n stopEvent(event, {\n preventDefault: false\n });\n }\n }\n }, [value ? this.formattedValue || value : this.placeholder || '', // Add the selected label for screen readers when a value is provided\n value && labelSelected ? h('bdi', {\n staticClass: 'sr-only'\n }, labelSelected) : '']); // Return the custom form control wrapper\n\n return h('div', {\n staticClass: 'b-form-btn-label-control dropdown',\n class: [this.directionClass, this.boundaryClass, [{\n 'btn-group': buttonOnly,\n 'form-control': !buttonOnly,\n focus: hasFocus && !buttonOnly,\n show: visible,\n 'is-valid': state === true,\n 'is-invalid': state === false\n }, buttonOnly ? null : this.sizeFormClass]],\n attrs: {\n id: idWrapper,\n role: buttonOnly ? null : 'group',\n lang: this.lang || null,\n dir: this.computedDir,\n 'aria-disabled': disabled,\n 'aria-readonly': readonly && !disabled,\n 'aria-labelledby': idLabel,\n 'aria-invalid': state === false || required && !value ? 'true' : null,\n 'aria-required': required ? 'true' : null\n }\n }, [$button, $hidden, $menu, $label]);\n }\n });\n\n var _watch$d;\n\n var _makeModelMixin$e = makeModelMixin('value', {\n type: PROP_TYPE_DATE_STRING\n }),\n modelMixin$d = _makeModelMixin$e.mixin,\n modelProps$d = _makeModelMixin$e.props,\n MODEL_PROP_NAME$d = _makeModelMixin$e.prop,\n MODEL_EVENT_NAME$d = _makeModelMixin$e.event; // --- Props ---\n\n\n var calendarProps = omit(props$24, ['block', 'hidden', 'id', 'noKeyNav', 'roleDescription', 'value', 'width']);\n var formBtnLabelControlProps$1 = omit(props$1o, ['formattedValue', 'id', 'lang', 'rtl', 'value']);\n var props$1n = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$d), calendarProps), formBtnLabelControlProps$1), {}, {\n // Width of the calendar dropdown\n calendarWidth: makeProp(PROP_TYPE_STRING, '270px'),\n closeButton: makeProp(PROP_TYPE_BOOLEAN, false),\n closeButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-secondary'),\n // Dark mode\n dark: makeProp(PROP_TYPE_BOOLEAN, false),\n labelCloseButton: makeProp(PROP_TYPE_STRING, 'Close'),\n labelResetButton: makeProp(PROP_TYPE_STRING, 'Reset'),\n labelTodayButton: makeProp(PROP_TYPE_STRING, 'Select today'),\n noCloseOnSelect: makeProp(PROP_TYPE_BOOLEAN, false),\n resetButton: makeProp(PROP_TYPE_BOOLEAN, false),\n resetButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-danger'),\n resetValue: makeProp(PROP_TYPE_DATE_STRING),\n todayButton: makeProp(PROP_TYPE_BOOLEAN, false),\n todayButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-primary')\n })), NAME_FORM_DATEPICKER); // --- Main component ---\n // @vue/component\n\n var BFormDatepicker = /*#__PURE__*/extend({\n name: NAME_FORM_DATEPICKER,\n mixins: [idMixin, modelMixin$d],\n props: props$1n,\n data: function data() {\n return {\n // We always use `YYYY-MM-DD` value internally\n localYMD: formatYMD(this[MODEL_PROP_NAME$d]) || '',\n // If the popup is open\n isVisible: false,\n // Context data from BCalendar\n localLocale: null,\n isRTL: false,\n formattedValue: '',\n activeYMD: ''\n };\n },\n computed: {\n calendarYM: function calendarYM() {\n // Returns the calendar year/month\n // Returns the `YYYY-MM` portion of the active calendar date\n return this.activeYMD.slice(0, -3);\n },\n computedLang: function computedLang() {\n return (this.localLocale || '').replace(/-u-.*$/i, '') || null;\n },\n computedResetValue: function computedResetValue() {\n return formatYMD(constrainDate(this.resetValue)) || '';\n }\n },\n watch: (_watch$d = {}, _defineProperty(_watch$d, MODEL_PROP_NAME$d, function (newValue) {\n this.localYMD = formatYMD(newValue) || '';\n }), _defineProperty(_watch$d, \"localYMD\", function localYMD(newValue) {\n // We only update the v-model when the datepicker is open\n if (this.isVisible) {\n this.$emit(MODEL_EVENT_NAME$d, this.valueAsDate ? parseYMD(newValue) || null : newValue || '');\n }\n }), _defineProperty(_watch$d, \"calendarYM\", function calendarYM(newValue, oldValue) {\n // Displayed calendar month has changed\n // So possibly the calendar height has changed...\n // We need to update popper computed position\n if (newValue !== oldValue && oldValue) {\n try {\n this.$refs.control.updatePopper();\n } catch (_unused) {}\n }\n }), _watch$d),\n methods: {\n // Public methods\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.control);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.control);\n }\n },\n // Private methods\n setAndClose: function setAndClose(ymd) {\n var _this = this;\n\n this.localYMD = ymd; // Close calendar popup, unless `noCloseOnSelect`\n\n if (!this.noCloseOnSelect) {\n this.$nextTick(function () {\n _this.$refs.control.hide(true);\n });\n }\n },\n onSelected: function onSelected(ymd) {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setAndClose(ymd);\n });\n },\n onInput: function onInput(ymd) {\n if (this.localYMD !== ymd) {\n this.localYMD = ymd;\n }\n },\n onContext: function onContext(ctx) {\n var activeYMD = ctx.activeYMD,\n isRTL = ctx.isRTL,\n locale = ctx.locale,\n selectedYMD = ctx.selectedYMD,\n selectedFormatted = ctx.selectedFormatted;\n this.isRTL = isRTL;\n this.localLocale = locale;\n this.formattedValue = selectedFormatted;\n this.localYMD = selectedYMD;\n this.activeYMD = activeYMD; // Re-emit the context event\n\n this.$emit(EVENT_NAME_CONTEXT, ctx);\n },\n onTodayButton: function onTodayButton() {\n // Set to today (or min/max if today is out of range)\n this.setAndClose(formatYMD(constrainDate(createDate(), this.min, this.max)));\n },\n onResetButton: function onResetButton() {\n this.setAndClose(this.computedResetValue);\n },\n onCloseButton: function onCloseButton() {\n this.$refs.control.hide(true);\n },\n // Menu handlers\n onShow: function onShow() {\n this.isVisible = true;\n },\n onShown: function onShown() {\n var _this3 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this3.$refs.calendar);\n\n _this3.$emit(EVENT_NAME_SHOWN);\n });\n },\n onHidden: function onHidden() {\n this.isVisible = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n // Render helpers\n defaultButtonFn: function defaultButtonFn(_ref) {\n var isHovered = _ref.isHovered,\n hasFocus = _ref.hasFocus;\n return this.$createElement(isHovered || hasFocus ? BIconCalendarFill : BIconCalendar, {\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n }\n },\n render: function render(h) {\n var localYMD = this.localYMD,\n disabled = this.disabled,\n readonly = this.readonly,\n dark = this.dark,\n $props = this.$props,\n $scopedSlots = this.$scopedSlots;\n var placeholder = isUndefinedOrNull(this.placeholder) ? this.labelNoDateSelected : this.placeholder; // Optional footer buttons\n\n var $footer = [];\n\n if (this.todayButton) {\n var label = this.labelTodayButton;\n $footer.push(h(BButton, {\n props: {\n disabled: disabled || readonly,\n size: 'sm',\n variant: this.todayButtonVariant\n },\n attrs: {\n 'aria-label': label || null\n },\n on: {\n click: this.onTodayButton\n }\n }, label));\n }\n\n if (this.resetButton) {\n var _label = this.labelResetButton;\n $footer.push(h(BButton, {\n props: {\n disabled: disabled || readonly,\n size: 'sm',\n variant: this.resetButtonVariant\n },\n attrs: {\n 'aria-label': _label || null\n },\n on: {\n click: this.onResetButton\n }\n }, _label));\n }\n\n if (this.closeButton) {\n var _label2 = this.labelCloseButton;\n $footer.push(h(BButton, {\n props: {\n disabled: disabled,\n size: 'sm',\n variant: this.closeButtonVariant\n },\n attrs: {\n 'aria-label': _label2 || null\n },\n on: {\n click: this.onCloseButton\n }\n }, _label2));\n }\n\n if ($footer.length > 0) {\n $footer = [h('div', {\n staticClass: 'b-form-date-controls d-flex flex-wrap',\n class: {\n 'justify-content-between': $footer.length > 1,\n 'justify-content-end': $footer.length < 2\n }\n }, $footer)];\n }\n\n var $calendar = h(BCalendar, {\n staticClass: 'b-form-date-calendar w-100',\n props: _objectSpread2$3(_objectSpread2$3({}, pluckProps(calendarProps, $props)), {}, {\n hidden: !this.isVisible,\n value: localYMD,\n valueAsDate: false,\n width: this.calendarWidth\n }),\n on: {\n selected: this.onSelected,\n input: this.onInput,\n context: this.onContext\n },\n scopedSlots: pick$1($scopedSlots, ['nav-prev-decade', 'nav-prev-year', 'nav-prev-month', 'nav-this-month', 'nav-next-month', 'nav-next-year', 'nav-next-decade']),\n key: 'calendar',\n ref: 'calendar'\n }, $footer);\n return h(BVFormBtnLabelControl, {\n staticClass: 'b-form-datepicker',\n props: _objectSpread2$3(_objectSpread2$3({}, pluckProps(formBtnLabelControlProps$1, $props)), {}, {\n formattedValue: localYMD ? this.formattedValue : '',\n id: this.safeId(),\n lang: this.computedLang,\n menuClass: [{\n 'bg-dark': dark,\n 'text-light': dark\n }, this.menuClass],\n placeholder: placeholder,\n rtl: this.isRTL,\n value: localYMD\n }),\n on: {\n show: this.onShow,\n shown: this.onShown,\n hidden: this.onHidden\n },\n scopedSlots: _defineProperty({}, SLOT_NAME_BUTTON_CONTENT, $scopedSlots[SLOT_NAME_BUTTON_CONTENT] || this.defaultButtonFn),\n ref: 'control'\n }, [$calendar]);\n }\n });\n\n var FormDatepickerPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormDatepicker: BFormDatepicker,\n BDatepicker: BFormDatepicker\n }\n });\n\n var _watch$c;\n\n var _makeModelMixin$d = makeModelMixin('value', {\n type: [PROP_TYPE_ARRAY, File],\n defaultValue: null,\n validator: function validator(value) {\n /* istanbul ignore next */\n if (value === '') {\n warn(VALUE_EMPTY_DEPRECATED_MSG, NAME_FORM_FILE);\n return true;\n }\n\n return isUndefinedOrNull(value) || isValidValue(value);\n }\n }),\n modelMixin$c = _makeModelMixin$d.mixin,\n modelProps$c = _makeModelMixin$d.props,\n MODEL_PROP_NAME$c = _makeModelMixin$d.prop,\n MODEL_EVENT_NAME$c = _makeModelMixin$d.event;\n\n var VALUE_EMPTY_DEPRECATED_MSG = 'Setting \"value\"/\"v-model\" to an empty string for reset is deprecated. Set to \"null\" instead.'; // --- Helper methods ---\n\n var isValidValue = function isValidValue(value) {\n return isFile(value) || isArray(value) && value.every(function (v) {\n return isValidValue(v);\n });\n }; // Helper method to \"safely\" get the entry from a data-transfer item\n\n /* istanbul ignore next: not supported in JSDOM */\n\n\n var getDataTransferItemEntry = function getDataTransferItemEntry(item) {\n return isFunction$1(item.getAsEntry) ? item.getAsEntry() : isFunction$1(item.webkitGetAsEntry) ? item.webkitGetAsEntry() : null;\n }; // Drop handler function to get all files\n\n /* istanbul ignore next: not supported in JSDOM */\n\n\n var getAllFileEntries = function getAllFileEntries(dataTransferItemList) {\n var traverseDirectories = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return Promise.all(from(dataTransferItemList).filter(function (item) {\n return item.kind === 'file';\n }).map(function (item) {\n var entry = getDataTransferItemEntry(item);\n\n if (entry) {\n if (entry.isDirectory && traverseDirectories) {\n return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(entry.name, \"/\"));\n } else if (entry.isFile) {\n return new Promise(function (resolve) {\n entry.file(function (file) {\n file.$path = '';\n resolve(file);\n });\n });\n }\n }\n\n return null;\n }).filter(identity));\n }; // Get all the file entries (recursive) in a directory\n\n /* istanbul ignore next: not supported in JSDOM */\n\n\n var getAllFileEntriesInDirectory = function getAllFileEntriesInDirectory(directoryReader) {\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return new Promise(function (resolve) {\n var entryPromises = [];\n\n var readDirectoryEntries = function readDirectoryEntries() {\n directoryReader.readEntries(function (entries) {\n if (entries.length === 0) {\n resolve(Promise.all(entryPromises).then(function (entries) {\n return flatten(entries);\n }));\n } else {\n entryPromises.push(Promise.all(entries.map(function (entry) {\n if (entry) {\n if (entry.isDirectory) {\n return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(path).concat(entry.name, \"/\"));\n } else if (entry.isFile) {\n return new Promise(function (resolve) {\n entry.file(function (file) {\n file.$path = \"\".concat(path).concat(file.name);\n resolve(file);\n });\n });\n }\n }\n\n return null;\n }).filter(identity)));\n readDirectoryEntries();\n }\n });\n };\n\n readDirectoryEntries();\n });\n }; // --- Props ---\n\n\n var props$1m = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$c), props$1x), props$1w), props$1u), props$1v), {}, {\n accept: makeProp(PROP_TYPE_STRING, ''),\n browseText: makeProp(PROP_TYPE_STRING, 'Browse'),\n // Instruct input to capture from camera\n capture: makeProp(PROP_TYPE_BOOLEAN, false),\n directory: makeProp(PROP_TYPE_BOOLEAN, false),\n dropPlaceholder: makeProp(PROP_TYPE_STRING, 'Drop files here'),\n fileNameFormatter: makeProp(PROP_TYPE_FUNCTION),\n multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n noDrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noDropPlaceholder: makeProp(PROP_TYPE_STRING, 'Not allowed'),\n // TODO:\n // Should we deprecate this and only support flat file structures?\n // Nested file structures are only supported when files are dropped\n // A Chromium \"bug\" prevents `webkitEntries` from being populated\n // on the file input's `change` event and is marked as \"WontFix\"\n // Mozilla implemented the behavior the same way as Chromium\n // See: https://bugs.chromium.org/p/chromium/issues/detail?id=138987\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1326031\n noTraverse: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING, 'No file chosen')\n })), NAME_FORM_FILE); // --- Main component ---\n // @vue/component\n\n var BFormFile = /*#__PURE__*/extend({\n name: NAME_FORM_FILE,\n mixins: [attrsMixin, idMixin, modelMixin$c, normalizeSlotMixin, formControlMixin, formStateMixin, formCustomMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props$1m,\n data: function data() {\n return {\n files: [],\n dragging: false,\n // IE 11 doesn't respect setting `event.dataTransfer.dropEffect`,\n // so we handle it ourselves as well\n // https://stackoverflow.com/a/46915971/2744776\n dropAllowed: !this.noDrop,\n hasFocus: false\n };\n },\n computed: {\n // Convert `accept` to an array of `[{ RegExpr, isMime }, ...]`\n computedAccept: function computedAccept() {\n var accept = this.accept;\n accept = (accept || '').trim().split(/[,\\s]+/).filter(identity); // Allow any file type/extension\n\n if (accept.length === 0) {\n return null;\n }\n\n return accept.map(function (extOrType) {\n var prop = 'name';\n var startMatch = '^';\n var endMatch = '$';\n\n if (RX_EXTENSION.test(extOrType)) {\n // File extension /\\.ext$/\n startMatch = '';\n } else {\n // MIME type /^mime\\/.+$/ or /^mime\\/type$/\n prop = 'type';\n\n if (RX_STAR.test(extOrType)) {\n endMatch = '.+$'; // Remove trailing `*`\n\n extOrType = extOrType.slice(0, -1);\n }\n } // Escape all RegExp special chars\n\n\n extOrType = escapeRegExp(extOrType);\n var rx = new RegExp(\"\".concat(startMatch).concat(extOrType).concat(endMatch));\n return {\n rx: rx,\n prop: prop\n };\n });\n },\n computedCapture: function computedCapture() {\n var capture = this.capture;\n return capture === true || capture === '' ? true : capture || null;\n },\n computedAttrs: function computedAttrs() {\n var name = this.name,\n disabled = this.disabled,\n required = this.required,\n form = this.form,\n computedCapture = this.computedCapture,\n accept = this.accept,\n multiple = this.multiple,\n directory = this.directory;\n return _objectSpread2$3(_objectSpread2$3({}, this.bvAttrs), {}, {\n type: 'file',\n id: this.safeId(),\n name: name,\n disabled: disabled,\n required: required,\n form: form || null,\n capture: computedCapture,\n accept: accept || null,\n multiple: multiple,\n directory: directory,\n webkitdirectory: directory,\n 'aria-required': required ? 'true' : null\n });\n },\n computedFileNameFormatter: function computedFileNameFormatter() {\n var fileNameFormatter = this.fileNameFormatter;\n return hasPropFunction(fileNameFormatter) ? fileNameFormatter : this.defaultFileNameFormatter;\n },\n clonedFiles: function clonedFiles() {\n return cloneDeep(this.files);\n },\n flattenedFiles: function flattenedFiles() {\n return flattenDeep(this.files);\n },\n fileNames: function fileNames() {\n return this.flattenedFiles.map(function (file) {\n return file.name;\n });\n },\n labelContent: function labelContent() {\n // Draging active\n\n /* istanbul ignore next: used by drag/drop which can't be tested easily */\n if (this.dragging && !this.noDrop) {\n return (// TODO: Add additional scope with file count, and other not-allowed reasons\n this.normalizeSlot(SLOT_NAME_DROP_PLACEHOLDER, {\n allowed: this.dropAllowed\n }) || (this.dropAllowed ? this.dropPlaceholder : this.$createElement('span', {\n staticClass: 'text-danger'\n }, this.noDropPlaceholder))\n );\n } // No file chosen\n\n\n if (this.files.length === 0) {\n return this.normalizeSlot(SLOT_NAME_PLACEHOLDER) || this.placeholder;\n }\n\n var flattenedFiles = this.flattenedFiles,\n clonedFiles = this.clonedFiles,\n fileNames = this.fileNames,\n computedFileNameFormatter = this.computedFileNameFormatter; // There is a slot for formatting the files/names\n\n if (this.hasNormalizedSlot(SLOT_NAME_FILE_NAME)) {\n return this.normalizeSlot(SLOT_NAME_FILE_NAME, {\n files: flattenedFiles,\n filesTraversed: clonedFiles,\n names: fileNames\n });\n }\n\n return computedFileNameFormatter(flattenedFiles, clonedFiles, fileNames);\n }\n },\n watch: (_watch$c = {}, _defineProperty(_watch$c, MODEL_PROP_NAME$c, function (newValue) {\n if (!newValue || isArray(newValue) && newValue.length === 0) {\n this.reset();\n }\n }), _defineProperty(_watch$c, \"files\", function files(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n var multiple = this.multiple,\n noTraverse = this.noTraverse;\n var files = !multiple || noTraverse ? flattenDeep(newValue) : newValue;\n this.$emit(MODEL_EVENT_NAME$c, multiple ? files : files[0] || null);\n }\n }), _watch$c),\n created: function created() {\n // Create private non-reactive props\n this.$_form = null;\n },\n mounted: function mounted() {\n // Listen for form reset events, to reset the file input\n var $form = closest('form', this.$el);\n\n if ($form) {\n eventOn($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n this.$_form = $form;\n }\n },\n beforeDestroy: function beforeDestroy() {\n var $form = this.$_form;\n\n if ($form) {\n eventOff($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n }\n },\n methods: {\n isFileValid: function isFileValid(file) {\n if (!file) {\n return false;\n }\n\n var accept = this.computedAccept;\n return accept ? accept.some(function (a) {\n return a.rx.test(file[a.prop]);\n }) : true;\n },\n isFilesArrayValid: function isFilesArrayValid(files) {\n var _this = this;\n\n return isArray(files) ? files.every(function (file) {\n return _this.isFileValid(file);\n }) : this.isFileValid(files);\n },\n defaultFileNameFormatter: function defaultFileNameFormatter(flattenedFiles, clonedFiles, fileNames) {\n return fileNames.join(', ');\n },\n setFiles: function setFiles(files) {\n // Reset the dragging flags\n this.dropAllowed = !this.noDrop;\n this.dragging = false; // Set the selected files\n\n this.files = this.multiple ? this.directory ? files : flattenDeep(files) : flattenDeep(files).slice(0, 1);\n },\n\n /* istanbul ignore next: used by Drag/Drop */\n setInputFiles: function setInputFiles(files) {\n // Try an set the file input files array so that `required`\n // constraint works for dropped files (will fail in IE11 though)\n // To be used only when dropping files\n try {\n // Firefox < 62 workaround exploiting https://bugzilla.mozilla.org/show_bug.cgi?id=1422655\n var dataTransfer = new ClipboardEvent('').clipboardData || new DataTransfer(); // Add flattened files to temp `dataTransfer` object to get a true `FileList` array\n\n flattenDeep(cloneDeep(files)).forEach(function (file) {\n // Make sure to remove the custom `$path` attribute\n delete file.$path;\n dataTransfer.items.add(file);\n });\n this.$refs.input.files = dataTransfer.files;\n } catch (_unused) {}\n },\n reset: function reset() {\n // IE 11 doesn't support setting `$input.value` to `''` or `null`\n // So we use this little extra hack to reset the value, just in case\n // This also appears to work on modern browsers as well\n // Wrapped in try in case IE 11 or mobile Safari crap out\n try {\n var $input = this.$refs.input;\n $input.value = '';\n $input.type = '';\n $input.type = 'file';\n } catch (_unused2) {}\n\n this.files = [];\n },\n handleFiles: function handleFiles(files) {\n var isDrop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isDrop) {\n // When dropped, make sure to filter files with the internal `accept` logic\n var filteredFiles = files.filter(this.isFilesArrayValid); // Only update files when we have any after filtering\n\n if (filteredFiles.length > 0) {\n this.setFiles(filteredFiles); // Try an set the file input's files array so that `required`\n // constraint works for dropped files (will fail in IE 11 though)\n\n this.setInputFiles(filteredFiles);\n }\n } else {\n // We always update the files from the `change` event\n this.setFiles(files);\n }\n },\n focusHandler: function focusHandler(event) {\n // Bootstrap v4 doesn't have focus styling for custom file input\n // Firefox has a `[type=file]:focus ~ sibling` selector issue,\n // so we add a `focus` class to get around these bugs\n if (this.plain || event.type === 'focusout') {\n this.hasFocus = false;\n } else {\n // Add focus styling for custom file input\n this.hasFocus = true;\n }\n },\n onChange: function onChange(event) {\n var _this2 = this;\n\n var type = event.type,\n target = event.target,\n _event$dataTransfer = event.dataTransfer,\n dataTransfer = _event$dataTransfer === void 0 ? {} : _event$dataTransfer;\n var isDrop = type === 'drop'; // Always emit original event\n\n this.$emit(EVENT_NAME_CHANGE, event);\n var items = from(dataTransfer.items || []);\n\n if (HAS_PROMISE_SUPPORT && items.length > 0 && !isNull(getDataTransferItemEntry(items[0]))) {\n // Drop handling for modern browsers\n // Supports nested directory structures in `directory` mode\n\n /* istanbul ignore next: not supported in JSDOM */\n getAllFileEntries(items, this.directory).then(function (files) {\n return _this2.handleFiles(files, isDrop);\n });\n } else {\n // Standard file input handling (native file input change event),\n // or fallback drop mode (IE 11 / Opera) which don't support `directory` mode\n var files = from(target.files || dataTransfer.files || []).map(function (file) {\n // Add custom `$path` property to each file (to be consistent with drop mode)\n file.$path = file.webkitRelativePath || '';\n return file;\n });\n this.handleFiles(files, isDrop);\n }\n },\n onDragenter: function onDragenter(event) {\n stopEvent(event);\n this.dragging = true;\n var _event$dataTransfer2 = event.dataTransfer,\n dataTransfer = _event$dataTransfer2 === void 0 ? {} : _event$dataTransfer2; // Early exit when the input or dropping is disabled\n\n if (this.noDrop || this.disabled || !this.dropAllowed) {\n // Show deny feedback\n\n /* istanbul ignore next: not supported in JSDOM */\n dataTransfer.dropEffect = 'none';\n this.dropAllowed = false;\n return;\n }\n /* istanbul ignore next: not supported in JSDOM */\n\n\n dataTransfer.dropEffect = 'copy';\n },\n // Note this event fires repeatedly while the mouse is over the dropzone at\n // intervals in the milliseconds, so avoid doing much processing in here\n onDragover: function onDragover(event) {\n stopEvent(event);\n this.dragging = true;\n var _event$dataTransfer3 = event.dataTransfer,\n dataTransfer = _event$dataTransfer3 === void 0 ? {} : _event$dataTransfer3; // Early exit when the input or dropping is disabled\n\n if (this.noDrop || this.disabled || !this.dropAllowed) {\n // Show deny feedback\n\n /* istanbul ignore next: not supported in JSDOM */\n dataTransfer.dropEffect = 'none';\n this.dropAllowed = false;\n return;\n }\n /* istanbul ignore next: not supported in JSDOM */\n\n\n dataTransfer.dropEffect = 'copy';\n },\n onDragleave: function onDragleave(event) {\n var _this3 = this;\n\n stopEvent(event);\n this.$nextTick(function () {\n _this3.dragging = false; // Reset `dropAllowed` to default\n\n _this3.dropAllowed = !_this3.noDrop;\n });\n },\n // Triggered by a file drop onto drop target\n onDrop: function onDrop(event) {\n var _this4 = this;\n\n stopEvent(event);\n this.dragging = false; // Early exit when the input or dropping is disabled\n\n if (this.noDrop || this.disabled || !this.dropAllowed) {\n this.$nextTick(function () {\n // Reset `dropAllowed` to default\n _this4.dropAllowed = !_this4.noDrop;\n });\n return;\n }\n\n this.onChange(event);\n }\n },\n render: function render(h) {\n var custom = this.custom,\n plain = this.plain,\n size = this.size,\n dragging = this.dragging,\n stateClass = this.stateClass,\n bvAttrs = this.bvAttrs; // Form Input\n\n var $input = h('input', {\n class: [{\n 'form-control-file': plain,\n 'custom-file-input': custom,\n focus: custom && this.hasFocus\n }, stateClass],\n // With IE 11, the input gets in the \"way\" of the drop events,\n // so we move it out of the way by putting it behind the label\n // Bootstrap v4 has it in front\n style: custom ? {\n zIndex: -5\n } : {},\n attrs: this.computedAttrs,\n on: {\n change: this.onChange,\n focusin: this.focusHandler,\n focusout: this.focusHandler,\n reset: this.reset\n },\n ref: 'input'\n });\n\n if (plain) {\n return $input;\n } // Overlay label\n\n\n var $label = h('label', {\n staticClass: 'custom-file-label',\n class: {\n dragging: dragging\n },\n attrs: {\n for: this.safeId(),\n // This goes away in Bootstrap v5\n 'data-browse': this.browseText || null\n }\n }, [h('span', {\n staticClass: 'd-block form-file-text',\n // `pointer-events: none` is used to make sure\n // the drag events fire only on the label\n style: {\n pointerEvents: 'none'\n }\n }, [this.labelContent])]); // Return rendered custom file input\n\n return h('div', {\n staticClass: 'custom-file b-form-file',\n class: [_defineProperty({}, \"b-custom-control-\".concat(size), size), stateClass, bvAttrs.class],\n style: bvAttrs.style,\n attrs: {\n id: this.safeId('_BV_file_outer_')\n },\n on: {\n dragenter: this.onDragenter,\n dragover: this.onDragover,\n dragleave: this.onDragleave,\n drop: this.onDrop\n }\n }, [$input, $label]);\n }\n });\n\n var FormFilePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormFile: BFormFile,\n BFile: BFormFile\n }\n });\n\n var escapeChar = function escapeChar(value) {\n return '\\\\' + value;\n }; // The `cssEscape()` util is based on this `CSS.escape()` polyfill:\n // https://github.com/mathiasbynens/CSS.escape\n\n\n var cssEscape = function cssEscape(value) {\n value = toString(value);\n var length = value.length;\n var firstCharCode = value.charCodeAt(0);\n return value.split('').reduce(function (result, char, index) {\n var charCode = value.charCodeAt(index); // If the character is NULL (U+0000), use (U+FFFD) as replacement\n\n if (charCode === 0x0000) {\n return result + \"\\uFFFD\";\n } // If the character ...\n\n\n if ( // ... is U+007F OR\n charCode === 0x007f || // ... is in the range [\\1-\\1F] (U+0001 to U+001F) OR ...\n charCode >= 0x0001 && charCode <= 0x001f || // ... is the first character and is in the range [0-9] (U+0030 to U+0039) OR ...\n index === 0 && charCode >= 0x0030 && charCode <= 0x0039 || // ... is the second character and is in the range [0-9] (U+0030 to U+0039)\n // and the first character is a `-` (U+002D) ...\n index === 1 && charCode >= 0x0030 && charCode <= 0x0039 && firstCharCode === 0x002d) {\n // ... https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n return result + escapeChar(\"\".concat(charCode.toString(16), \" \"));\n } // If the character ...\n\n\n if ( // ... is the first character AND ...\n index === 0 && // ... is a `-` (U+002D) AND ...\n charCode === 0x002d && // ... there is no second character ...\n length === 1) {\n // ... use the escaped character\n return result + escapeChar(char);\n } // If the character ...\n\n\n if ( // ... is greater than or equal to U+0080 OR ...\n charCode >= 0x0080 || // ... is `-` (U+002D) OR ...\n charCode === 0x002d || // ... is `_` (U+005F) OR ...\n charCode === 0x005f || // ... is in the range [0-9] (U+0030 to U+0039) OR ...\n charCode >= 0x0030 && charCode <= 0x0039 || // ... is in the range [A-Z] (U+0041 to U+005A) OR ...\n charCode >= 0x0041 && charCode <= 0x005a || // ... is in the range [a-z] (U+0061 to U+007A) ...\n charCode >= 0x0061 && charCode <= 0x007a) {\n // ... use the character itself\n return result + char;\n } // Otherwise use the escaped character\n // See: https://drafts.csswg.org/cssom/#escape-a-character\n\n\n return result + escapeChar(char);\n }, '');\n };\n\n var ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch']; // --- Helper methods ---\n // Compute a breakpoint class name\n\n var computeBreakpoint = function computeBreakpoint(type, breakpoint, value) {\n var className = type;\n\n if (isUndefinedOrNull(value) || value === false) {\n return undefined;\n }\n\n if (breakpoint) {\n className += \"-\".concat(breakpoint);\n } // Handling the boolean style prop when accepting `[Boolean, String, Number]`\n // means Vue will not convert `<b-col sm></b-col>` to `sm: true` for us\n // Since the default is `false`, '' indicates the prop's presence\n\n\n if (type === 'col' && (value === '' || value === true)) {\n // .col-md\n return lowerCase(className);\n } // .order-md-6\n\n\n className += \"-\".concat(value);\n return lowerCase(className);\n }; // Memoized function for better performance on generating class names\n\n\n var computeBreakpointClass = memoize(computeBreakpoint); // Cached copy of the breakpoint prop names\n\n var breakpointPropMap = create(null); // --- Props ---\n // Prop generator for lazy generation of props\n\n var generateProps$2 = function generateProps() {\n // Grab the breakpoints from the cached config (exclude the '' (xs) breakpoint)\n var breakpoints = getBreakpointsUpCached().filter(identity); // i.e. 'col-sm', 'col-md-6', 'col-lg-auto', ...\n\n var breakpointCol = breakpoints.reduce(function (props, breakpoint) {\n props[breakpoint] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n return props;\n }, create(null)); // i.e. 'offset-md-1', 'offset-lg-12', ...\n\n var breakpointOffset = breakpoints.reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'offset')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // i.e. 'order-md-1', 'order-lg-12', ...\n\n var breakpointOrder = breakpoints.reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'order')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // For loop doesn't need to check `.hasOwnProperty()`\n // when using an object created from `null`\n\n breakpointPropMap = assign(create(null), {\n col: keys(breakpointCol),\n offset: keys(breakpointOffset),\n order: keys(breakpointOrder)\n }); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, breakpointCol), breakpointOffset), breakpointOrder), {}, {\n // Flex alignment\n alignSelf: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(ALIGN_SELF_VALUES, value);\n }),\n // Generic flexbox 'col' (xs)\n col: makeProp(PROP_TYPE_BOOLEAN, false),\n // i.e. 'col-1', 'col-2', 'col-auto', ...\n cols: makeProp(PROP_TYPE_NUMBER_STRING),\n offset: makeProp(PROP_TYPE_NUMBER_STRING),\n order: makeProp(PROP_TYPE_NUMBER_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_COL);\n }; // --- Main component ---\n // We do not use extend here as that would evaluate the props\n // immediately, which we do not want to happen\n // @vue/component\n\n var BCol = {\n name: NAME_COL,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps$2();\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var cols = props.cols,\n offset = props.offset,\n order = props.order,\n alignSelf = props.alignSelf;\n var classList = []; // Loop through `col`, `offset`, `order` breakpoint props\n\n for (var type in breakpointPropMap) {\n // Returns colSm, offset, offsetSm, orderMd, etc.\n var _keys = breakpointPropMap[type];\n\n for (var i = 0; i < _keys.length; i++) {\n // computeBreakpoint(col, colSm => Sm, value=[String, Number, Boolean])\n var c = computeBreakpointClass(type, _keys[i].replace(type, ''), props[_keys[i]]); // If a class is returned, push it onto the array.\n\n if (c) {\n classList.push(c);\n }\n }\n }\n\n var hasColClasses = classList.some(function (className) {\n return RX_COL_CLASS.test(className);\n });\n classList.push((_classList$push = {\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: props.col || !hasColClasses && !cols\n }, _defineProperty(_classList$push, \"col-\".concat(cols), cols), _defineProperty(_classList$push, \"offset-\".concat(offset), offset), _defineProperty(_classList$push, \"order-\".concat(order), order), _defineProperty(_classList$push, \"align-self-\".concat(alignSelf), alignSelf), _classList$push));\n return h(props.tag, a(data, {\n class: classList\n }), children);\n }\n };\n\n var INPUTS = ['input', 'select', 'textarea']; // Selector for finding first input in the form group\n\n var INPUT_SELECTOR = INPUTS.map(function (v) {\n return \"\".concat(v, \":not([disabled])\");\n }).join(); // A list of interactive elements (tag names) inside `<b-form-group>`'s legend\n\n var LEGEND_INTERACTIVE_ELEMENTS = [].concat(INPUTS, ['a', 'button', 'label']); // --- Props ---\n // Prop generator for lazy generation of props\n\n var generateProps$1 = function generateProps() {\n return makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), props$1u), getBreakpointsUpCached().reduce(function (props, breakpoint) {\n // i.e. 'content-cols', 'content-cols-sm', 'content-cols-md', ...\n props[suffixPropName(breakpoint, 'contentCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING); // i.e. 'label-align', 'label-align-sm', 'label-align-md', ...\n\n props[suffixPropName(breakpoint, 'labelAlign')] = makeProp(PROP_TYPE_STRING); // i.e. 'label-cols', 'label-cols-sm', 'label-cols-md', ...\n\n props[suffixPropName(breakpoint, 'labelCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n return props;\n }, create(null))), {}, {\n description: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n feedbackAriaLive: makeProp(PROP_TYPE_STRING, 'assertive'),\n invalidFeedback: makeProp(PROP_TYPE_STRING),\n label: makeProp(PROP_TYPE_STRING),\n labelClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n labelFor: makeProp(PROP_TYPE_STRING),\n labelSize: makeProp(PROP_TYPE_STRING),\n labelSrOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false),\n validFeedback: makeProp(PROP_TYPE_STRING),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_FORM_GROUP);\n }; // --- Main component ---\n // We do not use `extend()` here as that would evaluate the props\n // immediately, which we do not want to happen\n // @vue/component\n\n var BFormGroup = {\n name: NAME_FORM_GROUP,\n mixins: [idMixin, formStateMixin, normalizeSlotMixin],\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps$1();\n },\n\n data: function data() {\n return {\n ariaDescribedby: null\n };\n },\n computed: {\n contentColProps: function contentColProps() {\n return this.getColProps(this.$props, 'content');\n },\n labelAlignClasses: function labelAlignClasses() {\n return this.getAlignClasses(this.$props, 'label');\n },\n labelColProps: function labelColProps() {\n return this.getColProps(this.$props, 'label');\n },\n isHorizontal: function isHorizontal() {\n // Determine if the form group will be rendered horizontal\n // based on the existence of 'content-col' or 'label-col' props\n return keys(this.contentColProps).length > 0 || keys(this.labelColProps).length > 0;\n }\n },\n watch: {\n ariaDescribedby: function ariaDescribedby(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.updateAriaDescribedby(newValue, oldValue);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n // Set `aria-describedby` on the input specified by `labelFor`\n // We do this in a `$nextTick()` to ensure the children have finished rendering\n _this.updateAriaDescribedby(_this.ariaDescribedby);\n });\n },\n methods: {\n getAlignClasses: function getAlignClasses(props, prefix) {\n return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Align\"))] || null;\n\n if (propValue) {\n result.push(['text', breakpoint, propValue].filter(identity).join('-'));\n }\n\n return result;\n }, []);\n },\n getColProps: function getColProps(props, prefix) {\n return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Cols\"))]; // Handle case where the prop's value is an empty string,\n // which represents `true`\n\n propValue = propValue === '' ? true : propValue || false;\n\n if (!isBoolean(propValue) && propValue !== 'auto') {\n // Convert to column size to number\n propValue = toInteger(propValue, 0); // Ensure column size is greater than `0`\n\n propValue = propValue > 0 ? propValue : false;\n } // Add the prop to the list of props to give to `<b-col>`\n // If breakpoint is '' (`${prefix}Cols` is `true`), then we use\n // the 'col' prop to make equal width at 'xs'\n\n\n if (propValue) {\n result[breakpoint || (isBoolean(propValue) ? 'col' : 'cols')] = propValue;\n }\n\n return result;\n }, {});\n },\n // Sets the `aria-describedby` attribute on the input if `labelFor` is set\n // Optionally accepts a string of IDs to remove as the second parameter\n // Preserves any `aria-describedby` value(s) user may have on input\n updateAriaDescribedby: function updateAriaDescribedby(newValue, oldValue) {\n var labelFor = this.labelFor;\n\n if (IS_BROWSER && labelFor) {\n // We need to escape `labelFor` since it can be user-provided\n var $input = select(\"#\".concat(cssEscape(labelFor)), this.$refs.content);\n\n if ($input) {\n var attr = 'aria-describedby';\n var newIds = (newValue || '').split(RX_SPACE_SPLIT);\n var oldIds = (oldValue || '').split(RX_SPACE_SPLIT); // Update ID list, preserving any original IDs\n // and ensuring the ID's are unique\n\n var ids = (getAttr($input, attr) || '').split(RX_SPACE_SPLIT).filter(function (id) {\n return !arrayIncludes(oldIds, id);\n }).concat(newIds).filter(function (id, index, ids) {\n return ids.indexOf(id) === index;\n }).filter(identity).join(' ').trim();\n\n if (ids) {\n setAttr($input, attr, ids);\n } else {\n removeAttr($input, attr);\n }\n }\n }\n },\n onLegendClick: function onLegendClick(event) {\n // Don't do anything if `labelFor` is set\n\n /* istanbul ignore next: clicking a label will focus the input, so no need to test */\n if (this.labelFor) {\n return;\n }\n\n var target = event.target;\n var tagName = target ? target.tagName : ''; // If clicked an interactive element inside legend,\n // we just let the default happen\n\n /* istanbul ignore next */\n\n if (LEGEND_INTERACTIVE_ELEMENTS.indexOf(tagName) !== -1) {\n return;\n } // If only a single input, focus it, emulating label behaviour\n\n\n var inputs = selectAll(INPUT_SELECTOR, this.$refs.content).filter(isVisible);\n\n if (inputs.length === 1) {\n attemptFocus(inputs[0]);\n }\n }\n },\n render: function render(h) {\n var state = this.computedState,\n feedbackAriaLive = this.feedbackAriaLive,\n isHorizontal = this.isHorizontal,\n labelFor = this.labelFor,\n normalizeSlot = this.normalizeSlot,\n safeId = this.safeId,\n tooltip = this.tooltip;\n var id = safeId();\n var isFieldset = !labelFor;\n var $label = h();\n var labelContent = normalizeSlot(SLOT_NAME_LABEL) || this.label;\n var labelId = labelContent ? safeId('_BV_label_') : null;\n\n if (labelContent || isHorizontal) {\n var labelSize = this.labelSize,\n labelColProps = this.labelColProps;\n var labelTag = isFieldset ? 'legend' : 'label';\n\n if (this.labelSrOnly) {\n if (labelContent) {\n $label = h(labelTag, {\n class: 'sr-only',\n attrs: {\n id: labelId,\n for: labelFor || null\n }\n }, [labelContent]);\n }\n\n $label = h(isHorizontal ? BCol : 'div', {\n props: isHorizontal ? labelColProps : {}\n }, [$label]);\n } else {\n $label = h(isHorizontal ? BCol : labelTag, {\n on: isFieldset ? {\n click: this.onLegendClick\n } : {},\n props: isHorizontal ? _objectSpread2$3(_objectSpread2$3({}, labelColProps), {}, {\n tag: labelTag\n }) : {},\n attrs: {\n id: labelId,\n for: labelFor || null,\n // We add a `tabindex` to legend so that screen readers\n // will properly read the `aria-labelledby` in IE\n tabindex: isFieldset ? '-1' : null\n },\n class: [// Hide the focus ring on the legend\n isFieldset ? 'bv-no-focus-ring' : '', // When horizontal or if a legend is rendered, add 'col-form-label' class\n // for correct sizing as Bootstrap has inconsistent font styling for\n // legend in non-horizontal form groups\n // See: https://github.com/twbs/bootstrap/issues/27805\n isHorizontal || isFieldset ? 'col-form-label' : '', // Emulate label padding top of `0` on legend when not horizontal\n !isHorizontal && isFieldset ? 'pt-0' : '', // If not horizontal and not a legend, we add 'd-block' class to label\n // so that label-align works\n !isHorizontal && !isFieldset ? 'd-block' : '', labelSize ? \"col-form-label-\".concat(labelSize) : '', this.labelAlignClasses, this.labelClass]\n }, [labelContent]);\n }\n }\n\n var $invalidFeedback = h();\n var invalidFeedbackContent = normalizeSlot(SLOT_NAME_INVALID_FEEDBACK) || this.invalidFeedback;\n var invalidFeedbackId = invalidFeedbackContent ? safeId('_BV_feedback_invalid_') : null;\n\n if (invalidFeedbackContent) {\n $invalidFeedback = h(BFormInvalidFeedback, {\n props: {\n ariaLive: feedbackAriaLive,\n id: invalidFeedbackId,\n // If state is explicitly `false`, always show the feedback\n state: state,\n tooltip: tooltip\n },\n attrs: {\n tabindex: invalidFeedbackContent ? '-1' : null\n }\n }, [invalidFeedbackContent]);\n }\n\n var $validFeedback = h();\n var validFeedbackContent = normalizeSlot(SLOT_NAME_VALID_FEEDBACK) || this.validFeedback;\n var validFeedbackId = validFeedbackContent ? safeId('_BV_feedback_valid_') : null;\n\n if (validFeedbackContent) {\n $validFeedback = h(BFormValidFeedback, {\n props: {\n ariaLive: feedbackAriaLive,\n id: validFeedbackId,\n // If state is explicitly `true`, always show the feedback\n state: state,\n tooltip: tooltip\n },\n attrs: {\n tabindex: validFeedbackContent ? '-1' : null\n }\n }, [validFeedbackContent]);\n }\n\n var $description = h();\n var descriptionContent = normalizeSlot(SLOT_NAME_DESCRIPTION) || this.description;\n var descriptionId = descriptionContent ? safeId('_BV_description_') : null;\n\n if (descriptionContent) {\n $description = h(BFormText, {\n attrs: {\n id: descriptionId,\n tabindex: '-1'\n }\n }, [descriptionContent]);\n } // Update `ariaDescribedby`\n // Screen readers will read out any content linked to by `aria-describedby`\n // even if the content is hidden with `display: none;`, hence we only include\n // feedback IDs if the form group's state is explicitly valid or invalid\n\n\n var ariaDescribedby = this.ariaDescribedby = [descriptionId, state === false ? invalidFeedbackId : null, state === true ? validFeedbackId : null].filter(identity).join(' ') || null;\n var $content = h(isHorizontal ? BCol : 'div', {\n props: isHorizontal ? this.contentColProps : {},\n ref: 'content'\n }, [normalizeSlot(SLOT_NAME_DEFAULT, {\n ariaDescribedby: ariaDescribedby,\n descriptionId: descriptionId,\n id: id,\n labelId: labelId\n }) || h(), $invalidFeedback, $validFeedback, $description]); // Return it wrapped in a form group\n // Note: Fieldsets do not support adding `row` or `form-row` directly\n // to them due to browser specific render issues, so we move the `form-row`\n // to an inner wrapper div when horizontal and using a fieldset\n\n return h(isFieldset ? 'fieldset' : isHorizontal ? BFormRow : 'div', {\n staticClass: 'form-group',\n class: [{\n 'was-validated': this.validated\n }, this.stateClass],\n attrs: {\n id: id,\n disabled: isFieldset ? this.disabled : null,\n role: isFieldset ? null : 'group',\n 'aria-invalid': this.computedAriaInvalid,\n // Only apply `aria-labelledby` if we are a horizontal fieldset\n // as the legend is no longer a direct child of fieldset\n 'aria-labelledby': isFieldset && isHorizontal ? labelId : null\n }\n }, isHorizontal && isFieldset ? [h(BFormRow, [$label, $content])] : [$label, $content]);\n }\n };\n\n var FormGroupPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormGroup: BFormGroup,\n BFormFieldset: BFormGroup\n }\n });\n\n var formSelectionMixin = extend({\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionStart;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionStart = val;\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionEnd;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionEnd = val;\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionDirection;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionDirection = val;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n select: function select() {\n var _this$$refs$input;\n\n // For external handler that may want a select() method\n (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n setSelectionRange: function setSelectionRange() {\n var _this$$refs$input2;\n\n // For external handler that may want a setSelectionRange(a,b,c) method\n (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n setRangeText: function setRangeText() {\n var _this$$refs$input3;\n\n // For external handler that may want a setRangeText(a,b,c) method\n (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n }\n }\n });\n\n var _makeModelMixin$c = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER_STRING,\n defaultValue: '',\n event: EVENT_NAME_UPDATE\n }),\n modelMixin$b = _makeModelMixin$c.mixin,\n modelProps$b = _makeModelMixin$c.props,\n MODEL_PROP_NAME$b = _makeModelMixin$c.prop,\n MODEL_EVENT_NAME$b = _makeModelMixin$c.event;\n\n var props$1l = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, modelProps$b), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n autocomplete: makeProp(PROP_TYPE_STRING),\n // Debounce timeout (in ms). Not applicable with `lazy` prop\n debounce: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n formatter: makeProp(PROP_TYPE_FUNCTION),\n // Only update the `v-model` on blur/change events\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n lazyFormatter: makeProp(PROP_TYPE_BOOLEAN, false),\n number: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING),\n plaintext: makeProp(PROP_TYPE_BOOLEAN, false),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n trim: makeProp(PROP_TYPE_BOOLEAN, false)\n })), 'formTextControls'); // --- Mixin ---\n // @vue/component\n\n var formTextMixin = extend({\n mixins: [modelMixin$b],\n props: props$1l,\n data: function data() {\n var value = this[MODEL_PROP_NAME$b];\n return {\n localValue: toString(value),\n vModelValue: this.modifyValue(value)\n };\n },\n computed: {\n computedClass: function computedClass() {\n var plaintext = this.plaintext,\n type = this.type;\n var isRange = type === 'range';\n var isColor = type === 'color';\n return [{\n // Range input needs class `custom-range`\n 'custom-range': isRange,\n // `plaintext` not supported by `type=\"range\"` or `type=\"color\"`\n 'form-control-plaintext': plaintext && !isRange && !isColor,\n // `form-control` not used by `type=\"range\"` or `plaintext`\n // Always used by `type=\"color\"`\n 'form-control': isColor || !plaintext && !isRange\n }, this.sizeFormClass, this.stateClass];\n },\n computedDebounce: function computedDebounce() {\n // Ensure we have a positive number equal to or greater than 0\n return mathMax(toInteger(this.debounce, 0), 0);\n },\n hasFormatter: function hasFormatter() {\n return hasPropFunction(this.formatter);\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME$b, function (newValue) {\n var stringifyValue = toString(newValue);\n var modifiedValue = this.modifyValue(newValue);\n\n if (stringifyValue !== this.localValue || modifiedValue !== this.vModelValue) {\n // Clear any pending debounce timeout, as we are overwriting the user input\n this.clearDebounce(); // Update the local values\n\n this.localValue = stringifyValue;\n this.vModelValue = modifiedValue;\n }\n }),\n created: function created() {\n // Create private non-reactive props\n this.$_inputDebounceTimer = null;\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDebounce();\n },\n methods: {\n clearDebounce: function clearDebounce() {\n clearTimeout(this.$_inputDebounceTimer);\n this.$_inputDebounceTimer = null;\n },\n formatValue: function formatValue(value, event) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n value = toString(value);\n\n if (this.hasFormatter && (!this.lazyFormatter || force)) {\n value = this.formatter(value, event);\n }\n\n return value;\n },\n modifyValue: function modifyValue(value) {\n value = toString(value); // Emulate `.trim` modifier behaviour\n\n if (this.trim) {\n value = value.trim();\n } // Emulate `.number` modifier behaviour\n\n\n if (this.number) {\n value = toFloat(value, value);\n }\n\n return value;\n },\n updateValue: function updateValue(value) {\n var _this = this;\n\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var lazy = this.lazy;\n\n if (lazy && !force) {\n return;\n } // Make sure to always clear the debounce when `updateValue()`\n // is called, even when the v-model hasn't changed\n\n\n this.clearDebounce(); // Define the shared update logic in a method to be able to use\n // it for immediate and debounced value changes\n\n var doUpdate = function doUpdate() {\n value = _this.modifyValue(value);\n\n if (value !== _this.vModelValue) {\n _this.vModelValue = value;\n\n _this.$emit(MODEL_EVENT_NAME$b, value);\n } else if (_this.hasFormatter) {\n // When the `vModelValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one\n // Usually caused by browser autocomplete and how it triggers the\n // change or input event, or depending on the formatter function\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n /* istanbul ignore next: hard to test */\n var $input = _this.$refs.input;\n /* istanbul ignore if: hard to test out of sync value */\n\n if ($input && value !== $input.value) {\n $input.value = value;\n }\n }\n }; // Only debounce the value update when a value greater than `0`\n // is set and we are not in lazy mode or this is a forced update\n\n\n var debounce = this.computedDebounce;\n\n if (debounce > 0 && !lazy && !force) {\n this.$_inputDebounceTimer = setTimeout(doUpdate, debounce);\n } else {\n // Immediately update the v-model\n doUpdate();\n }\n },\n onInput: function onInput(event) {\n // `event.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n // TODO: Is this needed now with the latest Vue?\n\n /* istanbul ignore if: hard to test composition events */\n if (event.target.composing) {\n return;\n }\n\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue);\n this.$emit(EVENT_NAME_INPUT, formattedValue);\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue, true);\n this.$emit(EVENT_NAME_CHANGE, formattedValue);\n },\n onBlur: function onBlur(event) {\n // Apply the `localValue` on blur to prevent cursor jumps\n // on mobile browsers (e.g. caused by autocomplete)\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event, true);\n\n if (formattedValue !== false) {\n // We need to use the modified value here to apply the\n // `.trim` and `.number` modifiers properly\n this.localValue = toString(this.modifyValue(formattedValue)); // We pass the formatted value here since the `updateValue` method\n // handles the modifiers itself\n\n this.updateValue(formattedValue, true);\n } // Emit native blur event\n\n\n this.$emit(EVENT_NAME_BLUR, event);\n },\n focus: function focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n attemptFocus(this.$el);\n }\n },\n blur: function blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n attemptBlur(this.$el);\n }\n }\n }\n });\n\n var formValidityMixin = extend({\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validity;\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validationMessage;\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.willValidate;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n setCustomValidity: function setCustomValidity() {\n var _this$$refs$input;\n\n // For external handler that may want a setCustomValidity(...) method\n return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n checkValidity: function checkValidity() {\n var _this$$refs$input2;\n\n // For external handler that may want a checkValidity(...) method\n return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n reportValidity: function reportValidity() {\n var _this$$refs$input3;\n\n // For external handler that may want a reportValidity(...) method\n return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n }\n }\n });\n\n // Valid supported input types\n\n var TYPES$1 = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // --- Props ---\n\n var props$1k = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), props$1x), props$1v), props$1u), props$1l), {}, {\n list: makeProp(PROP_TYPE_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING),\n min: makeProp(PROP_TYPE_NUMBER_STRING),\n // Disable mousewheel to prevent wheel from changing values (i.e. number/date)\n noWheel: makeProp(PROP_TYPE_BOOLEAN, false),\n step: makeProp(PROP_TYPE_NUMBER_STRING),\n type: makeProp(PROP_TYPE_STRING, 'text', function (type) {\n return arrayIncludes(TYPES$1, type);\n })\n })), NAME_FORM_INPUT); // --- Main component ---\n // @vue/component\n\n var BFormInput = /*#__PURE__*/extend({\n name: NAME_FORM_INPUT,\n // Mixin order is important!\n mixins: [listenersMixin, idMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: props$1k,\n computed: {\n localType: function localType() {\n // We only allow certain types\n var type = this.type;\n return arrayIncludes(TYPES$1, type) ? type : 'text';\n },\n computedAttrs: function computedAttrs() {\n var type = this.localType,\n name = this.name,\n form = this.form,\n disabled = this.disabled,\n placeholder = this.placeholder,\n required = this.required,\n min = this.min,\n max = this.max,\n step = this.step;\n return {\n id: this.safeId(),\n name: name,\n form: form,\n type: type,\n disabled: disabled,\n placeholder: placeholder,\n required: required,\n autocomplete: this.autocomplete || null,\n readonly: this.readonly || this.plaintext,\n min: min,\n max: max,\n step: step,\n list: type !== 'password' ? this.list : null,\n 'aria-required': required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n };\n },\n computedListeners: function computedListeners() {\n return _objectSpread2$3(_objectSpread2$3({}, this.bvListeners), {}, {\n input: this.onInput,\n change: this.onChange,\n blur: this.onBlur\n });\n }\n },\n watch: {\n noWheel: function noWheel(newValue) {\n this.setWheelStopper(newValue);\n }\n },\n mounted: function mounted() {\n this.setWheelStopper(this.noWheel);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // Turn off listeners when keep-alive component deactivated\n\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n // Turn on listeners (if no-wheel) when keep-alive component activated\n\n /* istanbul ignore next */\n this.setWheelStopper(this.noWheel);\n },\n beforeDestroy: function beforeDestroy() {\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n methods: {\n setWheelStopper: function setWheelStopper(on) {\n var input = this.$el; // We use native events, so that we don't interfere with propagation\n\n eventOnOff(on, input, 'focus', this.onWheelFocus);\n eventOnOff(on, input, 'blur', this.onWheelBlur);\n\n if (!on) {\n eventOff(document, 'wheel', this.stopWheel);\n }\n },\n onWheelFocus: function onWheelFocus() {\n eventOn(document, 'wheel', this.stopWheel);\n },\n onWheelBlur: function onWheelBlur() {\n eventOff(document, 'wheel', this.stopWheel);\n },\n stopWheel: function stopWheel(event) {\n stopEvent(event, {\n propagation: false\n });\n attemptBlur(this.$el);\n }\n },\n render: function render(h) {\n return h('input', {\n class: this.computedClass,\n attrs: this.computedAttrs,\n domProps: {\n value: this.localValue\n },\n on: this.computedListeners,\n ref: 'input'\n });\n }\n });\n\n var FormInputPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormInput: BFormInput,\n BInput: BFormInput\n }\n });\n\n var props$1j = makePropsConfigurable(props$1q, NAME_FORM_RADIO_GROUP); // --- Main component ---\n // @vue/component\n\n var BFormRadioGroup = /*#__PURE__*/extend({\n name: NAME_FORM_RADIO_GROUP,\n mixins: [formRadioCheckGroupMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvRadioGroup: function getBvRadioGroup() {\n return _this;\n }\n };\n },\n props: props$1j,\n computed: {\n isRadioGroup: function isRadioGroup() {\n return true;\n }\n }\n });\n\n var FormRadioPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormRadio: BFormRadio,\n BRadio: BFormRadio,\n BFormRadioGroup: BFormRadioGroup,\n BRadioGroup: BFormRadioGroup\n }\n });\n\n var _watch$b;\n\n var _makeModelMixin$b = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER_STRING,\n event: EVENT_NAME_CHANGE\n }),\n modelMixin$a = _makeModelMixin$b.mixin,\n modelProps$a = _makeModelMixin$b.props,\n MODEL_PROP_NAME$a = _makeModelMixin$b.prop,\n MODEL_EVENT_NAME$a = _makeModelMixin$b.event;\n\n var MIN_STARS = 3;\n var DEFAULT_STARS = 5; // --- Helper methods ---\n\n var computeStars = function computeStars(stars) {\n return mathMax(MIN_STARS, toInteger(stars, DEFAULT_STARS));\n };\n\n var clampValue = function clampValue(value, min, max) {\n return mathMax(mathMin(value, max), min);\n }; // --- Helper components ---\n // @vue/component\n\n\n var BVFormRatingStar = extend({\n name: NAME_FORM_RATING_STAR,\n mixins: [normalizeSlotMixin],\n props: {\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n // If parent is focused\n focused: makeProp(PROP_TYPE_BOOLEAN, false),\n hasClear: makeProp(PROP_TYPE_BOOLEAN, false),\n rating: makeProp(PROP_TYPE_NUMBER, 0),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n star: makeProp(PROP_TYPE_NUMBER, 0),\n variant: makeProp(PROP_TYPE_STRING)\n },\n methods: {\n onClick: function onClick(event) {\n if (!this.disabled && !this.readonly) {\n stopEvent(event, {\n propagation: false\n });\n this.$emit(EVENT_NAME_SELECTED, this.star);\n }\n }\n },\n render: function render(h) {\n var rating = this.rating,\n star = this.star,\n focused = this.focused,\n hasClear = this.hasClear,\n variant = this.variant,\n disabled = this.disabled,\n readonly = this.readonly;\n var minStar = hasClear ? 0 : 1;\n var type = rating >= star ? 'full' : rating >= star - 0.5 ? 'half' : 'empty';\n var slotScope = {\n variant: variant,\n disabled: disabled,\n readonly: readonly\n };\n return h('span', {\n staticClass: 'b-rating-star',\n class: {\n // When not hovered, we use this class to focus the current (or first) star\n focused: focused && rating === star || !toInteger(rating) && star === minStar,\n // We add type classes to we can handle RTL styling\n 'b-rating-star-empty': type === 'empty',\n 'b-rating-star-half': type === 'half',\n 'b-rating-star-full': type === 'full'\n },\n attrs: {\n tabindex: !disabled && !readonly ? '-1' : null\n },\n on: {\n click: this.onClick\n }\n }, [h('span', {\n staticClass: 'b-rating-icon'\n }, [this.normalizeSlot(type, slotScope)])]);\n }\n }); // --- Props ---\n\n var props$1i = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$a), omit(props$1x, ['required', 'autofocus'])), props$1v), {}, {\n // CSS color string (overrides variant)\n color: makeProp(PROP_TYPE_STRING),\n iconClear: makeProp(PROP_TYPE_STRING, 'x'),\n iconEmpty: makeProp(PROP_TYPE_STRING, 'star'),\n iconFull: makeProp(PROP_TYPE_STRING, 'star-fill'),\n iconHalf: makeProp(PROP_TYPE_STRING, 'star-half'),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n // Locale for the formatted value (if shown)\n // Defaults to the browser locale. Falls back to `en`\n locale: makeProp(PROP_TYPE_ARRAY_STRING),\n noBorder: makeProp(PROP_TYPE_BOOLEAN, false),\n precision: makeProp(PROP_TYPE_NUMBER_STRING),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n showClear: makeProp(PROP_TYPE_BOOLEAN, false),\n showValue: makeProp(PROP_TYPE_BOOLEAN, false),\n showValueMax: makeProp(PROP_TYPE_BOOLEAN, false),\n stars: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_STARS, function (value) {\n return toInteger(value) >= MIN_STARS;\n }),\n variant: makeProp(PROP_TYPE_STRING)\n })), NAME_FORM_RATING); // --- Main component ---\n // @vue/component\n\n var BFormRating = /*#__PURE__*/extend({\n name: NAME_FORM_RATING,\n components: {\n BIconStar: BIconStar,\n BIconStarHalf: BIconStarHalf,\n BIconStarFill: BIconStarFill,\n BIconX: BIconX\n },\n mixins: [idMixin, modelMixin$a, formSizeMixin],\n props: props$1i,\n data: function data() {\n var value = toFloat(this[MODEL_PROP_NAME$a], null);\n var stars = computeStars(this.stars);\n return {\n localValue: isNull(value) ? null : clampValue(value, 0, stars),\n hasFocus: false\n };\n },\n computed: {\n computedStars: function computedStars() {\n return computeStars(this.stars);\n },\n computedRating: function computedRating() {\n var value = toFloat(this.localValue, 0);\n var precision = toInteger(this.precision, 3); // We clamp the value between `0` and stars\n\n return clampValue(toFloat(value.toFixed(precision)), 0, this.computedStars);\n },\n computedLocale: function computedLocale() {\n var locales = concat(this.locale).filter(identity);\n var nf = new Intl.NumberFormat(locales);\n return nf.resolvedOptions().locale;\n },\n isInteractive: function isInteractive() {\n return !this.disabled && !this.readonly;\n },\n isRTL: function isRTL() {\n return isLocaleRTL(this.computedLocale);\n },\n formattedRating: function formattedRating() {\n var precision = toInteger(this.precision);\n var showValueMax = this.showValueMax;\n var locale = this.computedLocale;\n var formatOptions = {\n notation: 'standard',\n minimumFractionDigits: isNaN(precision) ? 0 : precision,\n maximumFractionDigits: isNaN(precision) ? 3 : precision\n };\n var stars = this.computedStars.toLocaleString(locale);\n var value = this.localValue;\n value = isNull(value) ? showValueMax ? '-' : '' : value.toLocaleString(locale, formatOptions);\n return showValueMax ? \"\".concat(value, \"/\").concat(stars) : value;\n }\n },\n watch: (_watch$b = {}, _defineProperty(_watch$b, MODEL_PROP_NAME$a, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n var value = toFloat(newValue, null);\n this.localValue = isNull(value) ? null : clampValue(value, 0, this.computedStars);\n }\n }), _defineProperty(_watch$b, \"localValue\", function localValue(newValue, oldValue) {\n if (newValue !== oldValue && newValue !== (this.value || 0)) {\n this.$emit(MODEL_EVENT_NAME$a, newValue || null);\n }\n }), _defineProperty(_watch$b, \"disabled\", function disabled(newValue) {\n if (newValue) {\n this.hasFocus = false;\n this.blur();\n }\n }), _watch$b),\n methods: {\n // --- Public methods ---\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$el);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$el);\n }\n },\n // --- Private methods ---\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (this.isInteractive && arrayIncludes([CODE_LEFT, CODE_DOWN, CODE_RIGHT, CODE_UP], keyCode)) {\n stopEvent(event, {\n propagation: false\n });\n var value = toInteger(this.localValue, 0);\n var min = this.showClear ? 0 : 1;\n var stars = this.computedStars; // In RTL mode, LEFT/RIGHT are swapped\n\n var amountRtl = this.isRTL ? -1 : 1;\n\n if (keyCode === CODE_LEFT) {\n this.localValue = clampValue(value - amountRtl, min, stars) || null;\n } else if (keyCode === CODE_RIGHT) {\n this.localValue = clampValue(value + amountRtl, min, stars);\n } else if (keyCode === CODE_DOWN) {\n this.localValue = clampValue(value - 1, min, stars) || null;\n } else if (keyCode === CODE_UP) {\n this.localValue = clampValue(value + 1, min, stars);\n }\n }\n },\n onSelected: function onSelected(value) {\n if (this.isInteractive) {\n this.localValue = value;\n }\n },\n onFocus: function onFocus(event) {\n this.hasFocus = !this.isInteractive ? false : event.type === 'focus';\n },\n // --- Render methods ---\n renderIcon: function renderIcon(icon) {\n return this.$createElement(BIcon, {\n props: {\n icon: icon,\n variant: this.disabled || this.color ? null : this.variant || null\n }\n });\n },\n iconEmptyFn: function iconEmptyFn() {\n return this.renderIcon(this.iconEmpty);\n },\n iconHalfFn: function iconHalfFn() {\n return this.renderIcon(this.iconHalf);\n },\n iconFullFn: function iconFullFn() {\n return this.renderIcon(this.iconFull);\n },\n iconClearFn: function iconClearFn() {\n return this.$createElement(BIcon, {\n props: {\n icon: this.iconClear\n }\n });\n }\n },\n render: function render(h) {\n var _this = this;\n\n var disabled = this.disabled,\n readonly = this.readonly,\n name = this.name,\n form = this.form,\n inline = this.inline,\n variant = this.variant,\n color = this.color,\n noBorder = this.noBorder,\n hasFocus = this.hasFocus,\n computedRating = this.computedRating,\n computedStars = this.computedStars,\n formattedRating = this.formattedRating,\n showClear = this.showClear,\n isRTL = this.isRTL,\n isInteractive = this.isInteractive,\n $scopedSlots = this.$scopedSlots;\n var $content = [];\n\n if (showClear && !disabled && !readonly) {\n var $icon = h('span', {\n staticClass: 'b-rating-icon'\n }, [($scopedSlots[SLOT_NAME_ICON_CLEAR] || this.iconClearFn)()]);\n $content.push(h('span', {\n staticClass: 'b-rating-star b-rating-star-clear flex-grow-1',\n class: {\n focused: hasFocus && computedRating === 0\n },\n attrs: {\n tabindex: isInteractive ? '-1' : null\n },\n on: {\n click: function click() {\n return _this.onSelected(null);\n }\n },\n key: 'clear'\n }, [$icon]));\n }\n\n for (var index = 0; index < computedStars; index++) {\n var value = index + 1;\n $content.push(h(BVFormRatingStar, {\n staticClass: 'flex-grow-1',\n style: color && !disabled ? {\n color: color\n } : {},\n props: {\n rating: computedRating,\n star: value,\n variant: disabled ? null : variant || null,\n disabled: disabled,\n readonly: readonly,\n focused: hasFocus,\n hasClear: showClear\n },\n on: {\n selected: this.onSelected\n },\n scopedSlots: {\n empty: $scopedSlots[SLOT_NAME_ICON_EMPTY] || this.iconEmptyFn,\n half: $scopedSlots[SLOT_NAME_ICON_HALF] || this.iconHalfFn,\n full: $scopedSlots[SLOT_NAME_ICON_FULL] || this.iconFullFn\n },\n key: index\n }));\n }\n\n if (name) {\n $content.push(h('input', {\n attrs: {\n type: 'hidden',\n value: isNull(this.localValue) ? '' : computedRating,\n name: name,\n form: form || null\n },\n key: 'hidden'\n }));\n }\n\n if (this.showValue) {\n $content.push(h('b', {\n staticClass: 'b-rating-value flex-grow-1',\n attrs: {\n 'aria-hidden': 'true'\n },\n key: 'value'\n }, toString(formattedRating)));\n }\n\n return h('output', {\n staticClass: 'b-rating form-control align-items-center',\n class: [{\n 'd-inline-flex': inline,\n 'd-flex': !inline,\n 'border-0': noBorder,\n disabled: disabled,\n readonly: !disabled && readonly\n }, this.sizeFormClass],\n attrs: {\n id: this.safeId(),\n dir: isRTL ? 'rtl' : 'ltr',\n tabindex: disabled ? null : '0',\n disabled: disabled,\n role: 'slider',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-readonly': !disabled && readonly ? 'true' : null,\n 'aria-live': 'off',\n 'aria-valuemin': showClear ? '0' : '1',\n 'aria-valuemax': toString(computedStars),\n 'aria-valuenow': computedRating ? toString(computedRating) : null\n },\n on: {\n keydown: this.onKeydown,\n focus: this.onFocus,\n blur: this.onFocus\n }\n }, $content);\n }\n });\n\n var FormRatingPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormRating: BFormRating,\n BRating: BFormRating\n }\n });\n\n var _makeModelMixin$a = makeModelMixin('value'),\n mixin = _makeModelMixin$a.mixin,\n props$1h = _makeModelMixin$a.props,\n prop = _makeModelMixin$a.prop,\n event = _makeModelMixin$a.event;\n\n var props$1g = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$1D), {}, {\n labelField: makeProp(PROP_TYPE_STRING, 'label'),\n optionsField: makeProp(PROP_TYPE_STRING, 'options')\n })), 'formOptions'); // --- Mixin ---\n // @vue/component\n\n var optionsMixin = extend({\n mixins: [formOptionsMixin],\n props: props$1g,\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 var options = get(option, this.optionsField, null); // When it has options, create an `<optgroup>` object\n\n if (!isNull(options)) {\n return {\n label: String(get(option, this.labelField) || text),\n options: this.normalizeOptions(options)\n };\n } // Otherwise create an `<option>` object\n\n\n return {\n value: isUndefined(value) ? key || text : value,\n text: String(isUndefined(text) ? key : text),\n html: get(option, this.htmlField),\n disabled: Boolean(get(option, this.disabledField))\n };\n } // Otherwise create an `<option>` object from the given value\n\n\n return {\n value: key || option,\n text: String(option),\n disabled: false\n };\n }\n }\n });\n\n var props$1f = makePropsConfigurable({\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n value: makeProp(PROP_TYPE_ANY, undefined, true) // Required\n\n }, NAME_FORM_SELECT_OPTION); // --- Main component ---\n // @vue/component\n\n var BFormSelectOption = /*#__PURE__*/extend({\n name: NAME_FORM_SELECT_OPTION,\n functional: true,\n props: props$1f,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var value = props.value,\n disabled = props.disabled;\n return h('option', a(data, {\n attrs: {\n disabled: disabled\n },\n domProps: {\n value: value\n }\n }), children);\n }\n });\n\n var props$1e = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$1D), {}, {\n label: makeProp(PROP_TYPE_STRING, undefined, true) // Required\n\n })), NAME_FORM_SELECT_OPTION_GROUP); // --- Main component ---\n // @vue/component\n\n var BFormSelectOptionGroup = /*#__PURE__*/extend({\n name: NAME_FORM_SELECT_OPTION_GROUP,\n mixins: [normalizeSlotMixin, formOptionsMixin],\n props: props$1e,\n render: function render(h) {\n var label = this.label;\n var $options = this.formOptions.map(function (option, index) {\n var value = option.value,\n text = option.text,\n html = option.html,\n disabled = option.disabled;\n return h(BFormSelectOption, {\n attrs: {\n value: value,\n disabled: disabled\n },\n domProps: htmlOrText(html, text),\n key: \"option_\".concat(index)\n });\n });\n return h('optgroup', {\n attrs: {\n label: label\n }\n }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n }\n });\n\n var props$1d = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), props$1h), props$1x), props$1w), props$1v), props$1u), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n // Browsers default size to `0`, which shows 4 rows in most browsers in multiple mode\n // Size of `1` can bork out Firefox\n selectSize: makeProp(PROP_TYPE_NUMBER, 0)\n })), NAME_FORM_SELECT); // --- Main component ---\n // @vue/component\n\n var BFormSelect = /*#__PURE__*/extend({\n name: NAME_FORM_SELECT,\n mixins: [idMixin, mixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin, optionsMixin, normalizeSlotMixin],\n props: props$1d,\n data: function data() {\n return {\n localValue: this[prop]\n };\n },\n computed: {\n computedSelectSize: function computedSelectSize() {\n // Custom selects with a size of zero causes the arrows to be hidden,\n // so dont render the size attribute in this case\n return !this.plain && this.selectSize === 0 ? null : this.selectSize;\n },\n inputClass: function inputClass() {\n 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];\n }\n },\n watch: {\n value: function value(newValue) {\n this.localValue = newValue;\n },\n localValue: function localValue() {\n this.$emit(event, this.localValue);\n }\n },\n methods: {\n focus: function focus() {\n attemptFocus(this.$refs.input);\n },\n blur: function blur() {\n attemptBlur(this.$refs.input);\n },\n onChange: function onChange(event) {\n var _this = this;\n\n var target = event.target;\n var selectedValue = from(target.options).filter(function (o) {\n return o.selected;\n }).map(function (o) {\n return '_value' in o ? o._value : o.value;\n });\n this.localValue = target.multiple ? selectedValue : selectedValue[0];\n this.$nextTick(function () {\n _this.$emit(EVENT_NAME_CHANGE, _this.localValue);\n });\n }\n },\n render: function render(h) {\n var name = this.name,\n disabled = this.disabled,\n required = this.required,\n size = this.computedSelectSize,\n value = this.localValue;\n var $options = this.formOptions.map(function (option, index) {\n var value = option.value,\n label = option.label,\n options = option.options,\n disabled = option.disabled;\n var key = \"option_\".concat(index);\n return isArray(options) ? h(BFormSelectOptionGroup, {\n props: {\n label: label,\n options: options\n },\n key: key\n }) : h(BFormSelectOption, {\n props: {\n value: value,\n disabled: disabled\n },\n domProps: htmlOrText(option.html, option.text),\n key: key\n });\n });\n return h('select', {\n class: this.inputClass,\n attrs: {\n id: this.safeId(),\n name: name,\n form: this.form || null,\n multiple: this.multiple || null,\n size: size,\n disabled: disabled,\n required: required,\n 'aria-required': required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n },\n on: {\n change: this.onChange\n },\n directives: [{\n name: 'model',\n value: value\n }],\n ref: 'input'\n }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n }\n });\n\n var FormSelectPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormSelect: BFormSelect,\n BFormSelectOption: BFormSelectOption,\n BFormSelectOptionGroup: BFormSelectOptionGroup,\n BSelect: BFormSelect,\n BSelectOption: BFormSelectOption,\n BSelectOptionGroup: BFormSelectOptionGroup\n }\n });\n\n var _watch$a;\n\n var _makeModelMixin$9 = makeModelMixin('value', {\n // Should this really be String, to match native number inputs?\n type: PROP_TYPE_BOOLEAN_NUMBER\n }),\n modelMixin$9 = _makeModelMixin$9.mixin,\n modelProps$9 = _makeModelMixin$9.props,\n MODEL_PROP_NAME$9 = _makeModelMixin$9.prop,\n MODEL_EVENT_NAME$9 = _makeModelMixin$9.event; // Default for spin button range and step\n\n\n var DEFAULT_MIN = 1;\n var DEFAULT_MAX = 100;\n var DEFAULT_STEP = 1; // Delay before auto-repeat in ms\n\n var DEFAULT_REPEAT_DELAY = 500; // Repeat interval in ms\n\n var DEFAULT_REPEAT_INTERVAL = 100; // Repeat rate increased after number of repeats\n\n var DEFAULT_REPEAT_THRESHOLD = 10; // Repeat speed multiplier (step multiplier, must be an integer)\n\n var DEFAULT_REPEAT_MULTIPLIER = 4;\n var KEY_CODES = [CODE_UP, CODE_DOWN, CODE_HOME, CODE_END, CODE_PAGEUP, CODE_PAGEDOWN]; // --- Props ---\n\n var props$1c = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$9), omit(props$1x, ['required', 'autofocus'])), props$1v), props$1u), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n ariaLabel: makeProp(PROP_TYPE_STRING),\n formatterFn: makeProp(PROP_TYPE_FUNCTION),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n labelDecrement: makeProp(PROP_TYPE_STRING, 'Decrement'),\n labelIncrement: makeProp(PROP_TYPE_STRING, 'Increment'),\n locale: makeProp(PROP_TYPE_ARRAY_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_MAX),\n min: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_MIN),\n placeholder: makeProp(PROP_TYPE_STRING),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n repeatDelay: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_DELAY),\n repeatInterval: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_INTERVAL),\n repeatStepMultiplier: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_MULTIPLIER),\n repeatThreshold: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_THRESHOLD),\n step: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_STEP),\n vertical: makeProp(PROP_TYPE_BOOLEAN, false),\n wrap: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_FORM_SPINBUTTON); // --- Main Component ---\n // @vue/component\n\n var BFormSpinbutton = /*#__PURE__*/extend({\n name: NAME_FORM_SPINBUTTON,\n // Mixin order is important!\n mixins: [attrsMixin, idMixin, modelMixin$9, formSizeMixin, formStateMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props$1c,\n data: function data() {\n return {\n localValue: toFloat(this[MODEL_PROP_NAME$9], null),\n hasFocus: false\n };\n },\n computed: {\n required: function required() {\n return false;\n },\n spinId: function spinId() {\n return this.safeId();\n },\n computedInline: function computedInline() {\n return this.inline && !this.vertical;\n },\n computedReadonly: function computedReadonly() {\n return this.readonly && !this.disabled;\n },\n computedRequired: function computedRequired() {\n return this.required && !this.computedReadonly && !this.disabled;\n },\n computedStep: function computedStep() {\n return toFloat(this.step, DEFAULT_STEP);\n },\n computedMin: function computedMin() {\n return toFloat(this.min, DEFAULT_MIN);\n },\n computedMax: function computedMax() {\n // We round down to the nearest maximum step value\n var max = toFloat(this.max, DEFAULT_MAX);\n var step = this.computedStep;\n var min = this.computedMin;\n return mathFloor((max - min) / step) * step + min;\n },\n computedDelay: function computedDelay() {\n var delay = toInteger(this.repeatDelay, 0);\n return delay > 0 ? delay : DEFAULT_REPEAT_DELAY;\n },\n computedInterval: function computedInterval() {\n var interval = toInteger(this.repeatInterval, 0);\n return interval > 0 ? interval : DEFAULT_REPEAT_INTERVAL;\n },\n computedThreshold: function computedThreshold() {\n return mathMax(toInteger(this.repeatThreshold, DEFAULT_REPEAT_THRESHOLD), 1);\n },\n computedStepMultiplier: function computedStepMultiplier() {\n return mathMax(toInteger(this.repeatStepMultiplier, DEFAULT_REPEAT_MULTIPLIER), 1);\n },\n computedPrecision: function computedPrecision() {\n // Quick and dirty way to get the number of decimals\n var step = this.computedStep;\n return mathFloor(step) === step ? 0 : (step.toString().split('.')[1] || '').length;\n },\n computedMultiplier: function computedMultiplier() {\n return mathPow(10, this.computedPrecision || 0);\n },\n valueAsFixed: function valueAsFixed() {\n var value = this.localValue;\n return isNull(value) ? '' : value.toFixed(this.computedPrecision);\n },\n computedLocale: function computedLocale() {\n var locales = concat(this.locale).filter(identity);\n var nf = new Intl.NumberFormat(locales);\n return nf.resolvedOptions().locale;\n },\n computedRTL: function computedRTL() {\n return isLocaleRTL(this.computedLocale);\n },\n defaultFormatter: function defaultFormatter() {\n // Returns and `Intl.NumberFormat` formatter method reference\n var precision = this.computedPrecision;\n var nf = new Intl.NumberFormat(this.computedLocale, {\n style: 'decimal',\n useGrouping: false,\n minimumIntegerDigits: 1,\n minimumFractionDigits: precision,\n maximumFractionDigits: precision,\n notation: 'standard'\n }); // Return the format method reference\n\n return nf.format;\n },\n computedFormatter: function computedFormatter() {\n var formatterFn = this.formatterFn;\n return hasPropFunction(formatterFn) ? formatterFn : this.defaultFormatter;\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread2$3(_objectSpread2$3({}, this.bvAttrs), {}, {\n role: 'group',\n lang: this.computedLocale,\n tabindex: this.disabled ? null : '-1',\n title: this.ariaLabel\n });\n },\n computedSpinAttrs: function computedSpinAttrs() {\n var spinId = this.spinId,\n value = this.localValue,\n required = this.computedRequired,\n disabled = this.disabled,\n state = this.state,\n computedFormatter = this.computedFormatter;\n var hasValue = !isNull(value);\n return _objectSpread2$3(_objectSpread2$3({\n dir: this.computedRTL ? 'rtl' : 'ltr'\n }, this.bvAttrs), {}, {\n id: spinId,\n role: 'spinbutton',\n tabindex: disabled ? null : '0',\n 'aria-live': 'off',\n 'aria-label': this.ariaLabel || null,\n 'aria-controls': this.ariaControls || null,\n // TODO: May want to check if the value is in range\n 'aria-invalid': state === false || !hasValue && required ? 'true' : null,\n 'aria-required': required ? 'true' : null,\n // These attrs are required for role spinbutton\n 'aria-valuemin': toString(this.computedMin),\n 'aria-valuemax': toString(this.computedMax),\n // These should be `null` if the value is out of range\n // They must also be non-existent attrs if the value is out of range or `null`\n 'aria-valuenow': hasValue ? value : null,\n 'aria-valuetext': hasValue ? computedFormatter(value) : null\n });\n }\n },\n watch: (_watch$a = {}, _defineProperty(_watch$a, MODEL_PROP_NAME$9, function (value) {\n this.localValue = toFloat(value, null);\n }), _defineProperty(_watch$a, \"localValue\", function localValue(value) {\n this.$emit(MODEL_EVENT_NAME$9, value);\n }), _defineProperty(_watch$a, \"disabled\", function disabled(_disabled) {\n if (_disabled) {\n this.clearRepeat();\n }\n }), _defineProperty(_watch$a, \"readonly\", function readonly(_readonly) {\n if (_readonly) {\n this.clearRepeat();\n }\n }), _watch$a),\n created: function created() {\n // Create non reactive properties\n this.$_autoDelayTimer = null;\n this.$_autoRepeatTimer = null;\n this.$_keyIsDown = false;\n },\n beforeDestroy: function beforeDestroy() {\n this.clearRepeat();\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n this.clearRepeat();\n },\n methods: {\n // --- Public methods ---\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.spinner);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.spinner);\n }\n },\n // --- Private methods ---\n emitChange: function emitChange() {\n this.$emit(EVENT_NAME_CHANGE, this.localValue);\n },\n stepValue: function stepValue(direction) {\n // Sets a new incremented or decremented value, supporting optional wrapping\n // Direction is either +1 or -1 (or a multiple thereof)\n var value = this.localValue;\n\n if (!this.disabled && !isNull(value)) {\n var step = this.computedStep * direction;\n var min = this.computedMin;\n var max = this.computedMax;\n var multiplier = this.computedMultiplier;\n var wrap = this.wrap; // We ensure that the value steps like a native input\n\n value = mathRound((value - min) / step) * step + min + step; // We ensure that precision is maintained (decimals)\n\n value = mathRound(value * multiplier) / multiplier; // Handle if wrapping is enabled\n\n this.localValue = value > max ? wrap ? min : max : value < min ? wrap ? max : min : value;\n }\n },\n onFocusBlur: function onFocusBlur(event) {\n this.hasFocus = this.disabled ? false : event.type === 'focus';\n },\n stepUp: function stepUp() {\n var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var value = this.localValue;\n\n if (isNull(value)) {\n this.localValue = this.computedMin;\n } else {\n this.stepValue(+1 * multiplier);\n }\n },\n stepDown: function stepDown() {\n var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var value = this.localValue;\n\n if (isNull(value)) {\n this.localValue = this.wrap ? this.computedMax : this.computedMin;\n } else {\n this.stepValue(-1 * multiplier);\n }\n },\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode,\n altKey = event.altKey,\n ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n /* istanbul ignore if */\n\n if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n return;\n }\n\n if (arrayIncludes(KEY_CODES, keyCode)) {\n // https://w3c.github.io/aria-practices/#spinbutton\n stopEvent(event, {\n propagation: false\n });\n /* istanbul ignore if */\n\n if (this.$_keyIsDown) {\n // Keypress is already in progress\n return;\n }\n\n this.resetTimers();\n\n if (arrayIncludes([CODE_UP, CODE_DOWN], keyCode)) {\n // The following use the custom auto-repeat handling\n this.$_keyIsDown = true;\n\n if (keyCode === CODE_UP) {\n this.handleStepRepeat(event, this.stepUp);\n } else if (keyCode === CODE_DOWN) {\n this.handleStepRepeat(event, this.stepDown);\n }\n } else {\n // These use native OS key repeating\n if (keyCode === CODE_PAGEUP) {\n this.stepUp(this.computedStepMultiplier);\n } else if (keyCode === CODE_PAGEDOWN) {\n this.stepDown(this.computedStepMultiplier);\n } else if (keyCode === CODE_HOME) {\n this.localValue = this.computedMin;\n } else if (keyCode === CODE_END) {\n this.localValue = this.computedMax;\n }\n }\n }\n },\n onKeyup: function onKeyup(event) {\n // Emit a change event when the keyup happens\n var keyCode = event.keyCode,\n altKey = event.altKey,\n ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n /* istanbul ignore if */\n\n if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n return;\n }\n\n if (arrayIncludes(KEY_CODES, keyCode)) {\n stopEvent(event, {\n propagation: false\n });\n this.resetTimers();\n this.$_keyIsDown = false;\n this.emitChange();\n }\n },\n handleStepRepeat: function handleStepRepeat(event, stepper) {\n var _this = this;\n\n var _ref = event || {},\n type = _ref.type,\n button = _ref.button;\n\n if (!this.disabled && !this.readonly) {\n /* istanbul ignore if */\n if (type === 'mousedown' && button) {\n // We only respond to left (main === 0) button clicks\n return;\n }\n\n this.resetTimers(); // Step the counter initially\n\n stepper(1);\n var threshold = this.computedThreshold;\n var multiplier = this.computedStepMultiplier;\n var delay = this.computedDelay;\n var interval = this.computedInterval; // Initiate the delay/repeat interval\n\n this.$_autoDelayTimer = setTimeout(function () {\n var count = 0;\n _this.$_autoRepeatTimer = setInterval(function () {\n // After N initial repeats, we increase the incrementing step amount\n // We do this to minimize screen reader announcements of the value\n // (values are announced every change, which can be chatty for SR users)\n // And to make it easer to select a value when the range is large\n stepper(count < threshold ? 1 : multiplier);\n count++;\n }, interval);\n }, delay);\n }\n },\n onMouseup: function onMouseup(event) {\n // `<body>` listener, only enabled when mousedown starts\n var _ref2 = event || {},\n type = _ref2.type,\n button = _ref2.button;\n /* istanbul ignore if */\n\n\n if (type === 'mouseup' && button) {\n // Ignore non left button (main === 0) mouse button click\n return;\n }\n\n stopEvent(event, {\n propagation: false\n });\n this.resetTimers();\n this.setMouseup(false); // Trigger the change event\n\n this.emitChange();\n },\n setMouseup: function setMouseup(on) {\n // Enable or disabled the body mouseup/touchend handlers\n // Use try/catch to handle case when called server side\n try {\n eventOnOff(on, document.body, 'mouseup', this.onMouseup, false);\n eventOnOff(on, document.body, 'touchend', this.onMouseup, false);\n } catch (_unused) {}\n },\n resetTimers: function resetTimers() {\n clearTimeout(this.$_autoDelayTimer);\n clearInterval(this.$_autoRepeatTimer);\n this.$_autoDelayTimer = null;\n this.$_autoRepeatTimer = null;\n },\n clearRepeat: function clearRepeat() {\n this.resetTimers();\n this.setMouseup(false);\n this.$_keyIsDown = false;\n }\n },\n render: function render(h) {\n var _this2 = this;\n\n var spinId = this.spinId,\n value = this.localValue,\n inline = this.computedInline,\n readonly = this.computedReadonly,\n vertical = this.vertical,\n disabled = this.disabled,\n computedFormatter = this.computedFormatter;\n var hasValue = !isNull(value);\n\n var makeButton = function makeButton(stepper, label, IconCmp, keyRef, shortcut, btnDisabled, slotName) {\n var $icon = h(IconCmp, {\n props: {\n scale: _this2.hasFocus ? 1.5 : 1.25\n },\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n var scope = {\n hasFocus: _this2.hasFocus\n };\n\n var handler = function handler(event) {\n if (!disabled && !readonly) {\n stopEvent(event, {\n propagation: false\n });\n\n _this2.setMouseup(true); // Since we `preventDefault()`, we must manually focus the button\n\n\n attemptFocus(event.currentTarget);\n\n _this2.handleStepRepeat(event, stepper);\n }\n };\n\n return h('button', {\n staticClass: 'btn btn-sm border-0 rounded-0',\n class: {\n 'py-0': !vertical\n },\n attrs: {\n tabindex: '-1',\n type: 'button',\n disabled: disabled || readonly || btnDisabled,\n 'aria-disabled': disabled || readonly || btnDisabled ? 'true' : null,\n 'aria-controls': spinId,\n 'aria-label': label || null,\n 'aria-keyshortcuts': shortcut || null\n },\n on: {\n mousedown: handler,\n touchstart: handler\n },\n key: keyRef || null,\n ref: keyRef\n }, [_this2.normalizeSlot(slotName, scope) || $icon]);\n }; // TODO: Add button disabled state when `wrap` is `false` and at value max/min\n\n\n var $increment = makeButton(this.stepUp, this.labelIncrement, BIconPlus, 'inc', 'ArrowUp', false, SLOT_NAME_INCREMENT);\n var $decrement = makeButton(this.stepDown, this.labelDecrement, BIconDash, 'dec', 'ArrowDown', false, SLOT_NAME_DECREMENT);\n var $hidden = h();\n\n if (this.name && !disabled) {\n $hidden = h('input', {\n attrs: {\n type: 'hidden',\n name: this.name,\n form: this.form || null,\n // TODO: Should this be set to '' if value is out of range?\n value: this.valueAsFixed\n },\n key: 'hidden'\n });\n }\n\n var $spin = h( // We use 'output' element to make this accept a `<label for=\"id\">` (Except IE)\n 'output', {\n staticClass: 'flex-grow-1',\n class: {\n 'd-flex': vertical,\n 'align-self-center': !vertical,\n 'align-items-center': vertical,\n 'border-top': vertical,\n 'border-bottom': vertical,\n 'border-left': !vertical,\n 'border-right': !vertical\n },\n attrs: this.computedSpinAttrs,\n key: 'output',\n ref: 'spinner'\n }, [h('bdi', hasValue ? computedFormatter(value) : this.placeholder || '')]);\n return h('div', {\n staticClass: 'b-form-spinbutton form-control',\n class: [{\n disabled: disabled,\n readonly: readonly,\n focus: this.hasFocus,\n 'd-inline-flex': inline || vertical,\n 'd-flex': !inline && !vertical,\n 'align-items-stretch': !vertical,\n 'flex-column': vertical\n }, this.sizeFormClass, this.stateClass],\n attrs: this.computedAttrs,\n on: {\n keydown: this.onKeydown,\n keyup: this.onKeyup,\n // We use capture phase (`!` prefix) since focus and blur do not bubble\n '!focus': this.onFocusBlur,\n '!blur': this.onFocusBlur\n }\n }, vertical ? [$increment, $hidden, $spin, $decrement] : [$decrement, $hidden, $spin, $increment]);\n }\n });\n\n var FormSpinbuttonPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormSpinbutton: BFormSpinbutton,\n BSpinbutton: BFormSpinbutton\n }\n });\n\n var props$1b = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$25), {}, {\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n noRemove: makeProp(PROP_TYPE_BOOLEAN, false),\n pill: makeProp(PROP_TYPE_BOOLEAN, false),\n removeLabel: makeProp(PROP_TYPE_STRING, 'Remove tag'),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n title: makeProp(PROP_TYPE_STRING),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n })), NAME_FORM_TAG); // --- Main component ---\n // @vue/component\n\n var BFormTag = /*#__PURE__*/extend({\n name: NAME_FORM_TAG,\n mixins: [idMixin, normalizeSlotMixin],\n props: props$1b,\n methods: {\n onRemove: function onRemove(event) {\n var type = event.type,\n keyCode = event.keyCode;\n\n if (!this.disabled && (type === 'click' || type === 'keydown' && keyCode === CODE_DELETE)) {\n this.$emit(EVENT_NAME_REMOVE);\n }\n }\n },\n render: function render(h) {\n var title = this.title,\n tag = this.tag,\n variant = this.variant,\n pill = this.pill,\n disabled = this.disabled;\n var tagId = this.safeId();\n var tagLabelId = this.safeId('_taglabel_');\n var $remove = h();\n\n if (!this.noRemove && !disabled) {\n $remove = h(BButtonClose, {\n staticClass: 'b-form-tag-remove',\n props: {\n ariaLabel: this.removeLabel\n },\n attrs: {\n 'aria-controls': tagId,\n 'aria-describedby': tagLabelId,\n 'aria-keyshortcuts': 'Delete'\n },\n on: {\n click: this.onRemove,\n keydown: this.onRemove\n }\n });\n }\n\n var $tag = h('span', {\n staticClass: 'b-form-tag-content flex-grow-1 text-truncate',\n attrs: {\n id: tagLabelId\n }\n }, this.normalizeSlot() || title);\n return h(BBadge, {\n staticClass: 'b-form-tag d-inline-flex align-items-baseline mw-100',\n class: {\n disabled: disabled\n },\n props: {\n tag: tag,\n variant: variant,\n pill: pill\n },\n attrs: {\n id: tagId,\n title: title || null,\n 'aria-labelledby': tagLabelId\n }\n }, [$tag, $remove]);\n }\n });\n\n var _watch$9;\n\n var _makeModelMixin$8 = makeModelMixin('value', {\n type: PROP_TYPE_ARRAY,\n defaultValue: []\n }),\n modelMixin$8 = _makeModelMixin$8.mixin,\n modelProps$8 = _makeModelMixin$8.props,\n MODEL_PROP_NAME$8 = _makeModelMixin$8.prop,\n MODEL_EVENT_NAME$8 = _makeModelMixin$8.event; // Supported input types (for built in input)\n\n\n var TYPES = ['text', 'email', 'tel', 'url', 'number']; // Default ignore input focus selector\n\n var DEFAULT_INPUT_FOCUS_SELECTOR = ['.b-form-tag', 'button', 'input', 'select'].join(' '); // --- Helper methods ---\n // Escape special chars in string and replace\n // contiguous spaces with a whitespace match\n\n var escapeRegExpChars = function escapeRegExpChars(str) {\n return escapeRegExp(str).replace(RX_SPACES, '\\\\s');\n }; // Remove leading/trailing spaces from array of tags and remove duplicates\n\n\n var cleanTags = function cleanTags(tags) {\n return concat(tags).map(function (tag) {\n return trim(toString(tag));\n }).filter(function (tag, index, arr) {\n return tag.length > 0 && arr.indexOf(tag) === index;\n });\n }; // Processes an input/change event, normalizing string or event argument\n\n\n var processEventValue = function processEventValue(event) {\n return isString(event) ? event : isEvent(event) ? event.target.value || '' : '';\n }; // Returns a fresh empty `tagsState` object\n\n\n var cleanTagsState = function cleanTagsState() {\n return {\n all: [],\n valid: [],\n invalid: [],\n duplicate: []\n };\n }; // --- Props ---\n\n\n var props$1a = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$8), props$1x), props$1v), props$1u), {}, {\n addButtonText: makeProp(PROP_TYPE_STRING, 'Add'),\n addButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-secondary'),\n // Enable change event triggering tag addition\n // Handy if using <select> as the input\n addOnChange: makeProp(PROP_TYPE_BOOLEAN, false),\n duplicateTagText: makeProp(PROP_TYPE_STRING, 'Duplicate tag(s)'),\n feedbackAriaLive: makeProp(PROP_TYPE_STRING, 'assertive'),\n // Disable the input focus behavior when clicking\n // on element matching the selector (or selectors)\n ignoreInputFocusSelector: makeProp(PROP_TYPE_ARRAY_STRING, DEFAULT_INPUT_FOCUS_SELECTOR),\n // Additional attributes to add to the input element\n inputAttrs: makeProp(PROP_TYPE_OBJECT, {}),\n inputClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n inputId: makeProp(PROP_TYPE_STRING),\n inputType: makeProp(PROP_TYPE_STRING, 'text', function (value) {\n return arrayIncludes(TYPES, value);\n }),\n invalidTagText: makeProp(PROP_TYPE_STRING, 'Invalid tag(s)'),\n limit: makeProp(PROP_TYPE_NUMBER),\n limitTagsText: makeProp(PROP_TYPE_STRING, 'Tag limit reached'),\n // Disable ENTER key from triggering tag addition\n noAddOnEnter: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable the focus ring on the root element\n noOuterFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n noTagRemove: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING, 'Add tag...'),\n // Enable deleting last tag in list when CODE_BACKSPACE is\n // pressed and input is empty\n removeOnDelete: makeProp(PROP_TYPE_BOOLEAN, false),\n // Character (or characters) that trigger adding tags\n separator: makeProp(PROP_TYPE_ARRAY_STRING),\n tagClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tagPills: makeProp(PROP_TYPE_BOOLEAN, false),\n tagRemoveLabel: makeProp(PROP_TYPE_STRING, 'Remove tag'),\n tagRemovedLabel: makeProp(PROP_TYPE_STRING, 'Tag removed'),\n tagValidator: makeProp(PROP_TYPE_FUNCTION),\n tagVariant: makeProp(PROP_TYPE_STRING, 'secondary')\n })), NAME_FORM_TAGS); // --- Main component ---\n // @vue/component\n\n var BFormTags = /*#__PURE__*/extend({\n name: NAME_FORM_TAGS,\n mixins: [listenersMixin, idMixin, modelMixin$8, formControlMixin, formSizeMixin, formStateMixin, normalizeSlotMixin],\n props: props$1a,\n data: function data() {\n return {\n hasFocus: false,\n newTag: '',\n tags: [],\n // Tags that were removed\n removedTags: [],\n // Populated when tags are parsed\n tagsState: cleanTagsState(),\n focusState: null\n };\n },\n computed: {\n computedInputId: function computedInputId() {\n return this.inputId || this.safeId('__input__');\n },\n computedInputType: function computedInputType() {\n // We only allow certain types\n return arrayIncludes(TYPES, this.inputType) ? this.inputType : 'text';\n },\n computedInputAttrs: function computedInputAttrs() {\n var disabled = this.disabled,\n form = this.form;\n return _objectSpread2$3(_objectSpread2$3({}, this.inputAttrs), {}, {\n // Must have attributes\n id: this.computedInputId,\n value: this.newTag,\n disabled: disabled,\n form: form\n });\n },\n computedInputHandlers: function computedInputHandlers() {\n return _objectSpread2$3(_objectSpread2$3({}, omit(this.bvListeners, [EVENT_NAME_FOCUSIN, EVENT_NAME_FOCUSOUT])), {}, {\n blur: this.onInputBlur,\n change: this.onInputChange,\n focus: this.onInputFocus,\n input: this.onInputInput,\n keydown: this.onInputKeydown,\n reset: this.reset\n });\n },\n computedSeparator: function computedSeparator() {\n // Merge the array into a string\n return concat(this.separator).filter(isString).filter(identity).join('');\n },\n computedSeparatorRegExp: function computedSeparatorRegExp() {\n // We use a computed prop here to precompile the RegExp\n // The RegExp is a character class RE in the form of `/[abc]+/`\n // where a, b, and c are the valid separator characters\n // -> `tags = str.split(/[abc]+/).filter(t => t)`\n var separator = this.computedSeparator;\n return separator ? new RegExp(\"[\".concat(escapeRegExpChars(separator), \"]+\")) : null;\n },\n computedJoiner: function computedJoiner() {\n // When tag(s) are invalid or duplicate, we leave them\n // in the input so that the user can see them\n // If there are more than one tag in the input, we use the\n // first separator character as the separator in the input\n // We append a space if the first separator is not a space\n var joiner = this.computedSeparator.charAt(0);\n return joiner !== ' ' ? \"\".concat(joiner, \" \") : joiner;\n },\n computeIgnoreInputFocusSelector: function computeIgnoreInputFocusSelector() {\n // Normalize to an single selector with selectors separated by `,`\n return concat(this.ignoreInputFocusSelector).filter(identity).join(',').trim();\n },\n disableAddButton: function disableAddButton() {\n var _this = this;\n\n // If 'Add' button should be disabled\n // If the input contains at least one tag that can\n // be added, then the 'Add' button should be enabled\n var newTag = trim(this.newTag);\n return newTag === '' || !this.splitTags(newTag).some(function (t) {\n return !arrayIncludes(_this.tags, t) && _this.validateTag(t);\n });\n },\n duplicateTags: function duplicateTags() {\n return this.tagsState.duplicate;\n },\n hasDuplicateTags: function hasDuplicateTags() {\n return this.duplicateTags.length > 0;\n },\n invalidTags: function invalidTags() {\n return this.tagsState.invalid;\n },\n hasInvalidTags: function hasInvalidTags() {\n return this.invalidTags.length > 0;\n },\n isLimitReached: function isLimitReached() {\n var limit = this.limit;\n return isNumber(limit) && limit >= 0 && this.tags.length >= limit;\n }\n },\n watch: (_watch$9 = {}, _defineProperty(_watch$9, MODEL_PROP_NAME$8, function (newValue) {\n this.tags = cleanTags(newValue);\n }), _defineProperty(_watch$9, \"tags\", function tags(newValue, oldValue) {\n // Update the `v-model` (if it differs from the value prop)\n if (!looseEqual(newValue, this[MODEL_PROP_NAME$8])) {\n this.$emit(MODEL_EVENT_NAME$8, newValue);\n }\n\n if (!looseEqual(newValue, oldValue)) {\n newValue = concat(newValue).filter(identity);\n oldValue = concat(oldValue).filter(identity);\n this.removedTags = oldValue.filter(function (old) {\n return !arrayIncludes(newValue, old);\n });\n }\n }), _defineProperty(_watch$9, \"tagsState\", function tagsState(newValue, oldValue) {\n // Emit a tag-state event when the `tagsState` object changes\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_TAG_STATE, newValue.valid, newValue.invalid, newValue.duplicate);\n }\n }), _watch$9),\n created: function created() {\n // We do this in created to make sure an input event emits\n // if the cleaned tags are not equal to the value prop\n this.tags = cleanTags(this[MODEL_PROP_NAME$8]);\n },\n mounted: function mounted() {\n // Listen for form reset events, to reset the tags input\n var $form = closest('form', this.$el);\n\n if ($form) {\n eventOn($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n }\n },\n beforeDestroy: function beforeDestroy() {\n var $form = closest('form', this.$el);\n\n if ($form) {\n eventOff($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n }\n },\n methods: {\n addTag: function addTag(newTag) {\n newTag = isString(newTag) ? newTag : this.newTag;\n /* istanbul ignore next */\n\n if (this.disabled || trim(newTag) === '' || this.isLimitReached) {\n // Early exit\n return;\n }\n\n var parsed = this.parseTags(newTag); // Add any new tags to the `tags` array, or if the\n // array of `allTags` is empty, we clear the input\n\n if (parsed.valid.length > 0 || parsed.all.length === 0) {\n // Clear the user input element (and leave in any invalid/duplicate tag(s)\n\n /* istanbul ignore if: full testing to be added later */\n if (matches(this.getInput(), 'select')) {\n // The following is needed to properly\n // work with `<select>` elements\n this.newTag = '';\n } else {\n var invalidAndDuplicates = [].concat(_toConsumableArray$1(parsed.invalid), _toConsumableArray$1(parsed.duplicate));\n this.newTag = parsed.all.filter(function (tag) {\n return arrayIncludes(invalidAndDuplicates, tag);\n }).join(this.computedJoiner).concat(invalidAndDuplicates.length > 0 ? this.computedJoiner.charAt(0) : '');\n }\n }\n\n if (parsed.valid.length > 0) {\n // We add the new tags in one atomic operation\n // to trigger reactivity once (instead of once per tag)\n // We do this after we update the new tag input value\n // `concat()` can be faster than array spread, when both args are arrays\n this.tags = concat(this.tags, parsed.valid);\n }\n\n this.tagsState = parsed; // Attempt to re-focus the input (specifically for when using the Add\n // button, as the button disappears after successfully adding a tag\n\n this.focus();\n },\n removeTag: function removeTag(tag) {\n /* istanbul ignore next */\n if (this.disabled) {\n return;\n } // TODO:\n // Add `onRemoveTag(tag)` user method, which if returns `false`\n // will prevent the tag from being removed (i.e. confirmation)\n // Or emit cancelable `BvEvent`\n\n\n this.tags = this.tags.filter(function (t) {\n return t !== tag;\n });\n },\n reset: function reset() {\n var _this2 = this;\n\n this.newTag = '';\n this.tags = [];\n this.$nextTick(function () {\n _this2.removedTags = [];\n _this2.tagsState = cleanTagsState();\n });\n },\n // --- Input element event handlers ---\n onInputInput: function onInputInput(event) {\n /* istanbul ignore next: hard to test composition events */\n if (this.disabled || isEvent(event) && event.target.composing) {\n // `event.target.composing` is set by Vue (`v-model` directive)\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n return;\n }\n\n var newTag = processEventValue(event);\n var separatorRe = this.computedSeparatorRegExp;\n\n if (this.newTag !== newTag) {\n this.newTag = newTag;\n } // We ignore leading whitespace for the following\n\n\n newTag = trimLeft(newTag);\n\n if (separatorRe && separatorRe.test(newTag.slice(-1))) {\n // A trailing separator character was entered, so add the tag(s)\n // Note: More than one tag on input event is possible via copy/paste\n this.addTag();\n } else {\n // Validate (parse tags) on input event\n this.tagsState = newTag === '' ? cleanTagsState() : this.parseTags(newTag);\n }\n },\n onInputChange: function onInputChange(event) {\n // Change is triggered on `<input>` blur, or `<select>` selected\n // This event is opt-in\n if (!this.disabled && this.addOnChange) {\n var newTag = processEventValue(event);\n /* istanbul ignore next */\n\n if (this.newTag !== newTag) {\n this.newTag = newTag;\n }\n\n this.addTag();\n }\n },\n onInputKeydown: function onInputKeydown(event) {\n // Early exit\n\n /* istanbul ignore next */\n if (this.disabled || !isEvent(event)) {\n return;\n }\n\n var keyCode = event.keyCode;\n var value = event.target.value || '';\n /* istanbul ignore else: testing to be added later */\n\n if (!this.noAddOnEnter && keyCode === CODE_ENTER) {\n // Attempt to add the tag when user presses enter\n stopEvent(event, {\n propagation: false\n });\n this.addTag();\n } else if (this.removeOnDelete && (keyCode === CODE_BACKSPACE || keyCode === CODE_DELETE) && value === '') {\n // Remove the last tag if the user pressed backspace/delete and the input is empty\n stopEvent(event, {\n propagation: false\n });\n this.tags = this.tags.slice(0, -1);\n }\n },\n // --- Wrapper event handlers ---\n onClick: function onClick(event) {\n var _this3 = this;\n\n var ignoreFocusSelector = this.computeIgnoreInputFocusSelector;\n\n if (!ignoreFocusSelector || !closest(ignoreFocusSelector, event.target, true)) {\n this.$nextTick(function () {\n _this3.focus();\n });\n }\n },\n onInputFocus: function onInputFocus(event) {\n var _this4 = this;\n\n if (this.focusState !== 'out') {\n this.focusState = 'in';\n this.$nextTick(function () {\n requestAF(function () {\n if (_this4.hasFocus) {\n _this4.$emit(EVENT_NAME_FOCUS, event);\n\n _this4.focusState = null;\n }\n });\n });\n }\n },\n onInputBlur: function onInputBlur(event) {\n var _this5 = this;\n\n if (this.focusState !== 'in') {\n this.focusState = 'out';\n this.$nextTick(function () {\n requestAF(function () {\n if (!_this5.hasFocus) {\n _this5.$emit(EVENT_NAME_BLUR, event);\n\n _this5.focusState = null;\n }\n });\n });\n }\n },\n onFocusin: function onFocusin(event) {\n this.hasFocus = true;\n this.$emit(EVENT_NAME_FOCUSIN, event);\n },\n onFocusout: function onFocusout(event) {\n this.hasFocus = false;\n this.$emit(EVENT_NAME_FOCUSOUT, event);\n },\n handleAutofocus: function handleAutofocus() {\n var _this6 = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n if (_this6.autofocus) {\n _this6.focus();\n }\n });\n });\n },\n // --- Public methods ---\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.getInput());\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.getInput());\n }\n },\n // --- Private methods ---\n splitTags: function splitTags(newTag) {\n // Split the input into an array of raw tags\n newTag = toString(newTag);\n var separatorRe = this.computedSeparatorRegExp; // Split the tag(s) via the optional separator\n // Normally only a single tag is provided, but copy/paste\n // can enter multiple tags in a single operation\n\n return (separatorRe ? newTag.split(separatorRe) : [newTag]).map(trim).filter(identity);\n },\n parseTags: function parseTags(newTag) {\n var _this7 = this;\n\n // Takes `newTag` value and parses it into `validTags`,\n // `invalidTags`, and duplicate tags as an object\n // Split the input into raw tags\n var tags = this.splitTags(newTag); // Base results\n\n var parsed = {\n all: tags,\n valid: [],\n invalid: [],\n duplicate: []\n }; // Parse the unique tags\n\n tags.forEach(function (tag) {\n if (arrayIncludes(_this7.tags, tag) || arrayIncludes(parsed.valid, tag)) {\n // Unique duplicate tags\n if (!arrayIncludes(parsed.duplicate, tag)) {\n parsed.duplicate.push(tag);\n }\n } else if (_this7.validateTag(tag)) {\n // We only add unique/valid tags\n parsed.valid.push(tag);\n } else {\n // Unique invalid tags\n if (!arrayIncludes(parsed.invalid, tag)) {\n parsed.invalid.push(tag);\n }\n }\n });\n return parsed;\n },\n validateTag: function validateTag(tag) {\n var tagValidator = this.tagValidator;\n return hasPropFunction(tagValidator) ? tagValidator(tag) : true;\n },\n getInput: function getInput() {\n // Returns the input element reference (or null if not found)\n // We need to escape `computedInputId` since it can be user-provided\n return select(\"#\".concat(cssEscape(this.computedInputId)), this.$el);\n },\n // Default User Interface render\n defaultRender: function defaultRender(_ref) {\n var addButtonText = _ref.addButtonText,\n addButtonVariant = _ref.addButtonVariant,\n addTag = _ref.addTag,\n disableAddButton = _ref.disableAddButton,\n disabled = _ref.disabled,\n duplicateTagText = _ref.duplicateTagText,\n inputAttrs = _ref.inputAttrs,\n inputClass = _ref.inputClass,\n inputHandlers = _ref.inputHandlers,\n inputType = _ref.inputType,\n invalidTagText = _ref.invalidTagText,\n isDuplicate = _ref.isDuplicate,\n isInvalid = _ref.isInvalid,\n isLimitReached = _ref.isLimitReached,\n limitTagsText = _ref.limitTagsText,\n noTagRemove = _ref.noTagRemove,\n placeholder = _ref.placeholder,\n removeTag = _ref.removeTag,\n tagClass = _ref.tagClass,\n tagPills = _ref.tagPills,\n tagRemoveLabel = _ref.tagRemoveLabel,\n tagVariant = _ref.tagVariant,\n tags = _ref.tags;\n var h = this.$createElement; // Make the list of tags\n\n var $tags = tags.map(function (tag) {\n tag = toString(tag);\n return h(BFormTag, {\n class: tagClass,\n // `BFormTag` will auto generate an ID\n // so we do not need to set the ID prop\n props: {\n disabled: disabled,\n noRemove: noTagRemove,\n pill: tagPills,\n removeLabel: tagRemoveLabel,\n tag: 'li',\n title: tag,\n variant: tagVariant\n },\n on: {\n remove: function remove() {\n return removeTag(tag);\n }\n },\n key: \"tags_\".concat(tag)\n }, tag);\n }); // Feedback IDs if needed\n\n var invalidFeedbackId = invalidTagText && isInvalid ? this.safeId('__invalid_feedback__') : null;\n var duplicateFeedbackId = duplicateTagText && isDuplicate ? this.safeId('__duplicate_feedback__') : null;\n var limitFeedbackId = limitTagsText && isLimitReached ? this.safeId('__limit_feedback__') : null; // Compute the `aria-describedby` attribute value\n\n var ariaDescribedby = [inputAttrs['aria-describedby'], invalidFeedbackId, duplicateFeedbackId, limitFeedbackId].filter(identity).join(' '); // Input\n\n var $input = h('input', {\n staticClass: 'b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0',\n class: inputClass,\n style: {\n outline: 0,\n minWidth: '5rem'\n },\n attrs: _objectSpread2$3(_objectSpread2$3({}, inputAttrs), {}, {\n 'aria-describedby': ariaDescribedby || null,\n type: inputType,\n placeholder: placeholder || null\n }),\n domProps: {\n value: inputAttrs.value\n },\n on: inputHandlers,\n // Directive needed to get `event.target.composing` set (if needed)\n directives: [{\n name: 'model',\n value: inputAttrs.value\n }],\n ref: 'input'\n }); // Add button\n\n var $button = h(BButton, {\n staticClass: 'b-form-tags-button py-0',\n class: {\n // Only show the button if the tag can be added\n // We use the `invisible` class instead of not rendering\n // the button, so that we maintain layout to prevent\n // the user input from jumping around\n invisible: disableAddButton\n },\n style: {\n fontSize: '90%'\n },\n props: {\n disabled: disableAddButton || isLimitReached,\n variant: addButtonVariant\n },\n on: {\n click: function click() {\n return addTag();\n }\n },\n ref: 'button'\n }, [this.normalizeSlot(SLOT_NAME_ADD_BUTTON_TEXT) || addButtonText]); // ID of the tags + input `<ul>` list\n // Note we could concatenate `inputAttrs.id` with '__tag_list__'\n // but `inputId` may be `null` until after mount\n // `safeId()` returns `null`, if no user provided ID,\n // until after mount when a unique ID is generated\n\n var tagListId = this.safeId('__tag_list__');\n var $field = h('li', {\n staticClass: 'b-form-tags-field flex-grow-1',\n attrs: {\n role: 'none',\n 'aria-live': 'off',\n 'aria-controls': tagListId\n },\n key: 'tags_field'\n }, [h('div', {\n staticClass: 'd-flex',\n attrs: {\n role: 'group'\n }\n }, [$input, $button])]); // Wrap in an unordered list element (we use a list for accessibility)\n\n var $ul = h('ul', {\n staticClass: 'b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center',\n attrs: {\n id: tagListId\n },\n key: 'tags_list'\n }, [$tags, $field]); // Assemble the feedback\n\n var $feedback = h();\n\n if (invalidTagText || duplicateTagText || limitTagsText) {\n // Add an aria live region for the invalid/duplicate tag\n // messages if the user has not disabled the messages\n var ariaLive = this.feedbackAriaLive,\n joiner = this.computedJoiner; // Invalid tag feedback if needed (error)\n\n var $invalid = h();\n\n if (invalidFeedbackId) {\n $invalid = h(BFormInvalidFeedback, {\n props: {\n id: invalidFeedbackId,\n ariaLive: ariaLive,\n forceShow: true\n },\n key: 'tags_invalid_feedback'\n }, [this.invalidTagText, ': ', this.invalidTags.join(joiner)]);\n } // Duplicate tag feedback if needed (warning, not error)\n\n\n var $duplicate = h();\n\n if (duplicateFeedbackId) {\n $duplicate = h(BFormText, {\n props: {\n id: duplicateFeedbackId,\n ariaLive: ariaLive\n },\n key: 'tags_duplicate_feedback'\n }, [this.duplicateTagText, ': ', this.duplicateTags.join(joiner)]);\n } // Limit tags feedback if needed (warning, not error)\n\n\n var $limit = h();\n\n if (limitFeedbackId) {\n $limit = h(BFormText, {\n props: {\n id: limitFeedbackId,\n ariaLive: ariaLive\n },\n key: 'tags_limit_feedback'\n }, [limitTagsText]);\n }\n\n $feedback = h('div', {\n attrs: {\n 'aria-live': 'polite',\n 'aria-atomic': 'true'\n },\n key: 'tags_feedback'\n }, [$invalid, $duplicate, $limit]);\n } // Return the content\n\n\n return [$ul, $feedback];\n }\n },\n render: function render(h) {\n var name = this.name,\n disabled = this.disabled,\n required = this.required,\n form = this.form,\n tags = this.tags,\n computedInputId = this.computedInputId,\n hasFocus = this.hasFocus,\n noOuterFocus = this.noOuterFocus; // Scoped slot properties\n\n var scope = _objectSpread2$3({\n // Array of tags (shallow copy to prevent mutations)\n tags: tags.slice(),\n // <input> v-bind:inputAttrs\n inputAttrs: this.computedInputAttrs,\n // We don't include this in the attrs, as users may want to override this\n inputType: this.computedInputType,\n // <input> v-on:inputHandlers\n inputHandlers: this.computedInputHandlers,\n // Methods\n removeTag: this.removeTag,\n addTag: this.addTag,\n reset: this.reset,\n // <input> :id=\"inputId\"\n inputId: computedInputId,\n // Invalid/Duplicate state information\n isInvalid: this.hasInvalidTags,\n invalidTags: this.invalidTags.slice(),\n isDuplicate: this.hasDuplicateTags,\n duplicateTags: this.duplicateTags.slice(),\n isLimitReached: this.isLimitReached,\n // If the 'Add' button should be disabled\n disableAddButton: this.disableAddButton\n }, pick$1(this.$props, ['addButtonText', 'addButtonVariant', 'disabled', 'duplicateTagText', 'form', 'inputClass', 'invalidTagText', 'limit', 'limitTagsText', 'noTagRemove', 'placeholder', 'required', 'separator', 'size', 'state', 'tagClass', 'tagPills', 'tagRemoveLabel', 'tagVariant'])); // Generate the user interface\n\n\n var $content = this.normalizeSlot(SLOT_NAME_DEFAULT, scope) || this.defaultRender(scope); // Generate the `aria-live` region for the current value(s)\n\n var $output = h('output', {\n staticClass: 'sr-only',\n attrs: {\n id: this.safeId('__selected_tags__'),\n role: 'status',\n for: computedInputId,\n 'aria-live': hasFocus ? 'polite' : 'off',\n 'aria-atomic': 'true',\n 'aria-relevant': 'additions text'\n }\n }, this.tags.join(', ')); // Removed tag live region\n\n var $removed = h('div', {\n staticClass: 'sr-only',\n attrs: {\n id: this.safeId('__removed_tags__'),\n role: 'status',\n 'aria-live': hasFocus ? 'assertive' : 'off',\n 'aria-atomic': 'true'\n }\n }, this.removedTags.length > 0 ? \"(\".concat(this.tagRemovedLabel, \") \").concat(this.removedTags.join(', ')) : ''); // Add hidden inputs for form submission\n\n var $hidden = h();\n\n if (name && !disabled) {\n // We add hidden inputs for each tag if a name is provided\n // When there are currently no tags, a visually hidden input\n // with empty value is rendered for proper required handling\n var hasTags = tags.length > 0;\n $hidden = (hasTags ? tags : ['']).map(function (tag) {\n return h('input', {\n class: {\n 'sr-only': !hasTags\n },\n attrs: {\n type: hasTags ? 'hidden' : 'text',\n value: tag,\n required: required,\n name: name,\n form: form\n },\n key: \"tag_input_\".concat(tag)\n });\n });\n } // Return the rendered output\n\n\n return h('div', {\n staticClass: 'b-form-tags form-control h-auto',\n class: [{\n focus: hasFocus && !noOuterFocus && !disabled,\n disabled: disabled\n }, this.sizeFormClass, this.stateClass],\n attrs: {\n id: this.safeId(),\n role: 'group',\n tabindex: disabled || noOuterFocus ? null : '-1',\n 'aria-describedby': this.safeId('__selected_tags__')\n },\n on: {\n click: this.onClick,\n focusin: this.onFocusin,\n focusout: this.onFocusout\n }\n }, [$output, $removed, $content, $hidden]);\n }\n });\n\n var FormTagsPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormTags: BFormTags,\n BTags: BFormTags,\n BFormTag: BFormTag,\n BTag: BFormTag\n }\n });\n\n var props$19 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), props$1x), props$1v), props$1u), props$1l), {}, {\n maxRows: makeProp(PROP_TYPE_NUMBER_STRING),\n // When in auto resize mode, disable shrinking to content height\n noAutoShrink: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable the resize handle of textarea\n noResize: makeProp(PROP_TYPE_BOOLEAN, false),\n rows: makeProp(PROP_TYPE_NUMBER_STRING, 2),\n // 'soft', 'hard' or 'off'\n // Browser default is 'soft'\n wrap: makeProp(PROP_TYPE_STRING, 'soft')\n })), NAME_FORM_TEXTAREA); // --- Main component ---\n // @vue/component\n\n var BFormTextarea = /*#__PURE__*/extend({\n name: NAME_FORM_TEXTAREA,\n directives: {\n 'b-visible': VBVisible\n },\n // Mixin order is important!\n mixins: [listenersMixin, idMixin, listenOnRootMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: props$19,\n data: function data() {\n return {\n heightInPx: null\n };\n },\n computed: {\n type: function type() {\n return null;\n },\n computedStyle: function computedStyle() {\n var styles = {\n // Setting `noResize` to true will disable the ability for the user to\n // manually resize the textarea. We also disable when in auto height mode\n resize: !this.computedRows || this.noResize ? 'none' : null\n };\n\n if (!this.computedRows) {\n // Conditionally set the computed CSS height when auto rows/height is enabled\n // We avoid setting the style to `null`, which can override user manual resize handle\n styles.height = this.heightInPx; // We always add a vertical scrollbar to the textarea when auto-height is\n // enabled so that the computed height calculation returns a stable value\n\n styles.overflowY = 'scroll';\n }\n\n return styles;\n },\n computedMinRows: function computedMinRows() {\n // Ensure rows is at least 2 and positive (2 is the native textarea value)\n // A value of 1 can cause issues in some browsers, and most browsers\n // only support 2 as the smallest value\n return mathMax(toInteger(this.rows, 2), 2);\n },\n computedMaxRows: function computedMaxRows() {\n return mathMax(this.computedMinRows, toInteger(this.maxRows, 0));\n },\n computedRows: function computedRows() {\n // This is used to set the attribute 'rows' on the textarea\n // If auto-height is enabled, then we return `null` as we use CSS to control height\n return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;\n },\n computedAttrs: function computedAttrs() {\n var disabled = this.disabled,\n required = this.required;\n return {\n id: this.safeId(),\n name: this.name || null,\n form: this.form || null,\n disabled: disabled,\n placeholder: this.placeholder || null,\n required: required,\n autocomplete: this.autocomplete || null,\n readonly: this.readonly || this.plaintext,\n rows: this.computedRows,\n wrap: this.wrap || null,\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n };\n },\n computedListeners: function computedListeners() {\n return _objectSpread2$3(_objectSpread2$3({}, this.bvListeners), {}, {\n input: this.onInput,\n change: this.onChange,\n blur: this.onBlur\n });\n }\n },\n watch: {\n localValue: function localValue() {\n this.setHeight();\n }\n },\n mounted: function mounted() {\n this.setHeight();\n },\n methods: {\n // Called by intersection observer directive\n\n /* istanbul ignore next */\n visibleCallback: function visibleCallback(visible) {\n if (visible) {\n // We use a `$nextTick()` here just to make sure any\n // transitions or portalling have completed\n this.$nextTick(this.setHeight);\n }\n },\n setHeight: function setHeight() {\n var _this = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n _this.heightInPx = _this.computeHeight();\n });\n });\n },\n\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n computeHeight: function computeHeight() {\n if (this.$isServer || !isNull(this.computedRows)) {\n return null;\n }\n\n var el = this.$el; // Element must be visible (not hidden) and in document\n // Must be checked after above checks\n\n if (!isVisible(el)) {\n return null;\n } // Get current computed styles\n\n\n var computedStyle = getCS(el); // Height of one line of text in px\n\n var lineHeight = toFloat(computedStyle.lineHeight, 1); // Calculate height of border and padding\n\n var border = toFloat(computedStyle.borderTopWidth, 0) + toFloat(computedStyle.borderBottomWidth, 0);\n var padding = toFloat(computedStyle.paddingTop, 0) + toFloat(computedStyle.paddingBottom, 0); // Calculate offset\n\n var offset = border + padding; // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n\n var minHeight = lineHeight * this.computedMinRows + offset; // Get the current style height (with `px` units)\n\n var oldHeight = getStyle(el, 'height') || computedStyle.height; // Probe scrollHeight by temporarily changing the height to `auto`\n\n setStyle(el, 'height', 'auto');\n var scrollHeight = el.scrollHeight; // Place the original old height back on the element, just in case `computedProp`\n // returns the same value as before\n\n setStyle(el, 'height', oldHeight); // Calculate content height in 'rows' (scrollHeight includes padding but not border)\n\n var contentRows = mathMax((scrollHeight - padding) / lineHeight, 2); // Calculate number of rows to display (limited within min/max rows)\n\n var rows = mathMin(mathMax(contentRows, this.computedMinRows), this.computedMaxRows); // Calculate the required height of the textarea including border and padding (in pixels)\n\n var height = mathMax(mathCeil(rows * lineHeight + offset), minHeight); // Computed height remains the larger of `oldHeight` and new `height`,\n // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n\n if (this.noAutoShrink && toFloat(oldHeight, 0) > height) {\n return oldHeight;\n } // Return the new computed CSS height in px units\n\n\n return \"\".concat(height, \"px\");\n }\n },\n render: function render(h) {\n return h('textarea', {\n class: this.computedClass,\n style: this.computedStyle,\n directives: [{\n name: 'b-visible',\n value: this.visibleCallback,\n // If textarea is within 640px of viewport, consider it visible\n modifiers: {\n '640': true\n }\n }],\n attrs: this.computedAttrs,\n domProps: {\n value: this.localValue\n },\n on: this.computedListeners,\n ref: 'input'\n });\n }\n });\n\n var FormTextareaPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormTextarea: BFormTextarea,\n BTextarea: BFormTextarea\n }\n });\n\n var _watch$8;\n\n var _makeModelMixin$7 = makeModelMixin('value', {\n type: PROP_TYPE_STRING,\n defaultValue: ''\n }),\n modelMixin$7 = _makeModelMixin$7.mixin,\n modelProps$7 = _makeModelMixin$7.props,\n MODEL_PROP_NAME$7 = _makeModelMixin$7.prop,\n MODEL_EVENT_NAME$7 = _makeModelMixin$7.event;\n\n var NUMERIC = 'numeric'; // --- Helper methods ---\n\n var padLeftZeros = function padLeftZeros(value) {\n return \"00\".concat(value || '').slice(-2);\n };\n\n var parseHMS = function parseHMS(value) {\n value = toString(value);\n var hh = null,\n mm = null,\n ss = null;\n\n if (RX_TIME.test(value)) {\n\n var _value$split$map = value.split(':').map(function (v) {\n return toInteger(v, null);\n });\n\n var _value$split$map2 = _slicedToArray(_value$split$map, 3);\n\n hh = _value$split$map2[0];\n mm = _value$split$map2[1];\n ss = _value$split$map2[2];\n }\n\n return {\n hours: isUndefinedOrNull(hh) ? null : hh,\n minutes: isUndefinedOrNull(mm) ? null : mm,\n seconds: isUndefinedOrNull(ss) ? null : ss,\n ampm: isUndefinedOrNull(hh) || hh < 12 ? 0 : 1\n };\n };\n\n var formatHMS = function formatHMS(_ref) {\n var hours = _ref.hours,\n minutes = _ref.minutes,\n seconds = _ref.seconds;\n var requireSeconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isNull(hours) || isNull(minutes) || requireSeconds && isNull(seconds)) {\n return '';\n }\n\n var hms = [hours, minutes, requireSeconds ? seconds : 0];\n return hms.map(padLeftZeros).join(':');\n }; // --- Props ---\n\n\n var props$18 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$7), pick$1(props$1c, ['labelIncrement', 'labelDecrement'])), {}, {\n // ID of label element\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n footerTag: makeProp(PROP_TYPE_STRING, 'footer'),\n headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n hidden: makeProp(PROP_TYPE_BOOLEAN, false),\n hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n // Explicitly force 12 or 24 hour time\n // Default is to use resolved locale for 12/24 hour display\n // Tri-state: `true` = 12, `false` = 24, `null` = auto\n hour12: makeProp(PROP_TYPE_BOOLEAN, null),\n labelAm: makeProp(PROP_TYPE_STRING, 'AM'),\n labelAmpm: makeProp(PROP_TYPE_STRING, 'AM/PM'),\n labelHours: makeProp(PROP_TYPE_STRING, 'Hours'),\n labelMinutes: makeProp(PROP_TYPE_STRING, 'Minutes'),\n labelNoTimeSelected: makeProp(PROP_TYPE_STRING, 'No time selected'),\n labelPm: makeProp(PROP_TYPE_STRING, 'PM'),\n labelSeconds: makeProp(PROP_TYPE_STRING, 'Seconds'),\n labelSelected: makeProp(PROP_TYPE_STRING, 'Selected time'),\n locale: makeProp(PROP_TYPE_ARRAY_STRING),\n minutesStep: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n secondsStep: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n // If `true`, show the second spinbutton\n showSeconds: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_TIME); // --- Main component ---\n // @vue/component\n\n var BTime = /*#__PURE__*/extend({\n name: NAME_TIME,\n mixins: [idMixin, modelMixin$7, normalizeSlotMixin],\n props: props$18,\n data: function data() {\n var parsed = parseHMS(this[MODEL_PROP_NAME$7] || '');\n return {\n // Spin button models\n modelHours: parsed.hours,\n modelMinutes: parsed.minutes,\n modelSeconds: parsed.seconds,\n modelAmpm: parsed.ampm,\n // Internal flag to enable aria-live regions\n isLive: false\n };\n },\n computed: {\n computedHMS: function computedHMS() {\n var hours = this.modelHours;\n var minutes = this.modelMinutes;\n var seconds = this.modelSeconds;\n return formatHMS({\n hours: hours,\n minutes: minutes,\n seconds: seconds\n }, this.showSeconds);\n },\n resolvedOptions: function resolvedOptions() {\n // Resolved locale options\n var locale = concat(this.locale).filter(identity);\n var options = {\n hour: NUMERIC,\n minute: NUMERIC,\n second: NUMERIC\n };\n\n if (!isUndefinedOrNull(this.hour12)) {\n // Force 12 or 24 hour clock\n options.hour12 = !!this.hour12;\n }\n\n var dtf = new Intl.DateTimeFormat(locale, options);\n var resolved = dtf.resolvedOptions();\n var hour12 = resolved.hour12 || false; // IE 11 doesn't resolve the hourCycle, so we make\n // an assumption and fall back to common values\n\n var hourCycle = resolved.hourCycle || (hour12 ? 'h12' : 'h23');\n return {\n locale: resolved.locale,\n hour12: hour12,\n hourCycle: hourCycle\n };\n },\n computedLocale: function computedLocale() {\n return this.resolvedOptions.locale;\n },\n computedLang: function computedLang() {\n return (this.computedLocale || '').replace(/-u-.*$/, '');\n },\n computedRTL: function computedRTL() {\n return isLocaleRTL(this.computedLang);\n },\n computedHourCycle: function computedHourCycle() {\n // h11, h12, h23, or h24\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Locale/hourCycle\n // h12 - Hour system using 1–12. Corresponds to 'h' in patterns. The 12 hour clock, with midnight starting at 12:00 am\n // h23 - Hour system using 0–23. Corresponds to 'H' in patterns. The 24 hour clock, with midnight starting at 0:00\n // h11 - Hour system using 0–11. Corresponds to 'K' in patterns. The 12 hour clock, with midnight starting at 0:00 am\n // h24 - Hour system using 1–24. Corresponds to 'k' in pattern. The 24 hour clock, with midnight starting at 24:00\n // For h12 or h24, we visually format 00 hours as 12\n return this.resolvedOptions.hourCycle;\n },\n is12Hour: function is12Hour() {\n return !!this.resolvedOptions.hour12;\n },\n context: function context() {\n return {\n locale: this.computedLocale,\n isRTL: this.computedRTL,\n hourCycle: this.computedHourCycle,\n hour12: this.is12Hour,\n hours: this.modelHours,\n minutes: this.modelMinutes,\n seconds: this.showSeconds ? this.modelSeconds : 0,\n value: this.computedHMS,\n formatted: this.formattedTimeString\n };\n },\n valueId: function valueId() {\n return this.safeId() || null;\n },\n computedAriaLabelledby: function computedAriaLabelledby() {\n return [this.ariaLabelledby, this.valueId].filter(identity).join(' ') || null;\n },\n timeFormatter: function timeFormatter() {\n // Returns a formatter function reference\n // The formatter converts the time to a localized string\n var options = {\n hour12: this.is12Hour,\n hourCycle: this.computedHourCycle,\n hour: NUMERIC,\n minute: NUMERIC,\n timeZone: 'UTC'\n };\n\n if (this.showSeconds) {\n options.second = NUMERIC;\n } // Formats the time as a localized string\n\n\n return createDateFormatter(this.computedLocale, options);\n },\n numberFormatter: function numberFormatter() {\n // Returns a formatter function reference\n // The formatter always formats as 2 digits and is localized\n var nf = new Intl.NumberFormat(this.computedLocale, {\n style: 'decimal',\n minimumIntegerDigits: 2,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n notation: 'standard'\n });\n return nf.format;\n },\n formattedTimeString: function formattedTimeString() {\n var hours = this.modelHours;\n var minutes = this.modelMinutes;\n var seconds = this.showSeconds ? this.modelSeconds || 0 : 0;\n\n if (this.computedHMS) {\n return this.timeFormatter(createDate(Date.UTC(0, 0, 1, hours, minutes, seconds)));\n }\n\n return this.labelNoTimeSelected || ' ';\n },\n spinScopedSlots: function spinScopedSlots() {\n var h = this.$createElement;\n return {\n increment: function increment(_ref2) {\n var hasFocus = _ref2.hasFocus;\n return h(BIconChevronUp, {\n props: {\n scale: hasFocus ? 1.5 : 1.25\n },\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n },\n decrement: function decrement(_ref3) {\n var hasFocus = _ref3.hasFocus;\n return h(BIconChevronUp, {\n props: {\n flipV: true,\n scale: hasFocus ? 1.5 : 1.25\n },\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n }\n };\n }\n },\n watch: (_watch$8 = {}, _defineProperty(_watch$8, MODEL_PROP_NAME$7, function (newValue, oldValue) {\n if (newValue !== oldValue && !looseEqual(parseHMS(newValue), parseHMS(this.computedHMS))) {\n var _parseHMS = parseHMS(newValue),\n hours = _parseHMS.hours,\n minutes = _parseHMS.minutes,\n seconds = _parseHMS.seconds,\n ampm = _parseHMS.ampm;\n\n this.modelHours = hours;\n this.modelMinutes = minutes;\n this.modelSeconds = seconds;\n this.modelAmpm = ampm;\n }\n }), _defineProperty(_watch$8, \"computedHMS\", function computedHMS(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME$7, newValue);\n }\n }), _defineProperty(_watch$8, \"context\", function context(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT, newValue);\n }\n }), _defineProperty(_watch$8, \"modelAmpm\", function modelAmpm(newValue, oldValue) {\n var _this = this;\n\n if (newValue !== oldValue) {\n var hours = isNull(this.modelHours) ? 0 : this.modelHours;\n this.$nextTick(function () {\n if (newValue === 0 && hours > 11) {\n // Switched to AM\n _this.modelHours = hours - 12;\n } else if (newValue === 1 && hours < 12) {\n // Switched to PM\n _this.modelHours = hours + 12;\n }\n });\n }\n }), _defineProperty(_watch$8, \"modelHours\", function modelHours(newHours, oldHours) {\n if (newHours !== oldHours) {\n this.modelAmpm = newHours > 11 ? 1 : 0;\n }\n }), _watch$8),\n created: function created() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.$emit(EVENT_NAME_CONTEXT, _this2.context);\n });\n },\n mounted: function mounted() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n this.setLive(false);\n },\n beforeDestroy: function beforeDestroy() {\n this.setLive(false);\n },\n methods: {\n // Public methods\n focus: function focus() {\n if (!this.disabled) {\n // We focus the first spin button\n attemptFocus(this.$refs.spinners[0]);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n var activeElement = getActiveElement();\n\n if (contains(this.$el, activeElement)) {\n attemptBlur(activeElement);\n }\n }\n },\n // Formatters for the spin buttons\n formatHours: function formatHours(hh) {\n var hourCycle = this.computedHourCycle; // We always store 0-23, but format based on h11/h12/h23/h24 formats\n\n hh = this.is12Hour && hh > 12 ? hh - 12 : hh; // Determine how 00:00 and 12:00 are shown\n\n hh = hh === 0 && hourCycle === 'h12' ? 12 : hh === 0 && hourCycle === 'h24' ?\n /* istanbul ignore next */\n 24 : hh === 12 && hourCycle === 'h11' ?\n /* istanbul ignore next */\n 0 : hh;\n return this.numberFormatter(hh);\n },\n formatMinutes: function formatMinutes(mm) {\n return this.numberFormatter(mm);\n },\n formatSeconds: function formatSeconds(ss) {\n return this.numberFormatter(ss);\n },\n formatAmpm: function formatAmpm(ampm) {\n // These should come from label props???\n // `ampm` should always be a value of `0` or `1`\n return ampm === 0 ? this.labelAm : ampm === 1 ? this.labelPm : '';\n },\n // Spinbutton on change handlers\n setHours: function setHours(value) {\n this.modelHours = value;\n },\n setMinutes: function setMinutes(value) {\n this.modelMinutes = value;\n },\n setSeconds: function setSeconds(value) {\n this.modelSeconds = value;\n },\n setAmpm: function setAmpm(value) {\n this.modelAmpm = value;\n },\n onSpinLeftRight: function onSpinLeftRight() {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var type = event.type,\n keyCode = event.keyCode;\n\n if (!this.disabled && type === 'keydown' && (keyCode === CODE_LEFT || keyCode === CODE_RIGHT)) {\n stopEvent(event);\n var spinners = this.$refs.spinners || [];\n var index = spinners.map(function (cmp) {\n return !!cmp.hasFocus;\n }).indexOf(true);\n index = index + (keyCode === CODE_LEFT ? -1 : 1);\n index = index >= spinners.length ? 0 : index < 0 ? spinners.length - 1 : index;\n attemptFocus(spinners[index]);\n }\n },\n setLive: function setLive(on) {\n var _this3 = this;\n\n if (on) {\n this.$nextTick(function () {\n requestAF(function () {\n _this3.isLive = true;\n });\n });\n } else {\n this.isLive = false;\n }\n }\n },\n render: function render(h) {\n var _this4 = this;\n\n // If hidden, we just render a placeholder comment\n\n /* istanbul ignore if */\n if (this.hidden) {\n return h();\n }\n\n var disabled = this.disabled,\n readonly = this.readonly,\n locale = this.computedLocale,\n ariaLabelledby = this.computedAriaLabelledby,\n labelIncrement = this.labelIncrement,\n labelDecrement = this.labelDecrement,\n valueId = this.valueId,\n focusHandler = this.focus;\n var spinIds = []; // Helper method to render a spinbutton\n\n var makeSpinbutton = function makeSpinbutton(handler, key, classes) {\n var spinbuttonProps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var id = _this4.safeId(\"_spinbutton_\".concat(key, \"_\")) || null;\n spinIds.push(id);\n return h(BFormSpinbutton, _defineProperty({\n class: classes,\n props: _objectSpread2$3({\n id: id,\n placeholder: '--',\n vertical: true,\n required: true,\n disabled: disabled,\n readonly: readonly,\n locale: locale,\n labelIncrement: labelIncrement,\n labelDecrement: labelDecrement,\n wrap: true,\n ariaControls: valueId,\n min: 0\n }, spinbuttonProps),\n scopedSlots: _this4.spinScopedSlots,\n on: {\n // We use `change` event to minimize SR verbosity\n // As the spinbutton will announce each value change\n // and we don't want the formatted time to be announced\n // on each value input if repeat is happening\n change: handler\n },\n key: key,\n ref: 'spinners'\n }, REF_FOR_KEY, true));\n }; // Helper method to return a \"colon\" separator\n\n\n var makeColon = function makeColon() {\n return h('div', {\n staticClass: 'd-flex flex-column',\n class: {\n 'text-muted': disabled || readonly\n },\n attrs: {\n 'aria-hidden': 'true'\n }\n }, [h(BIconCircleFill, {\n props: {\n shiftV: 4,\n scale: 0.5\n }\n }), h(BIconCircleFill, {\n props: {\n shiftV: -4,\n scale: 0.5\n }\n })]);\n };\n\n var $spinners = []; // Hours\n\n $spinners.push(makeSpinbutton(this.setHours, 'hours', 'b-time-hours', {\n value: this.modelHours,\n max: 23,\n step: 1,\n formatterFn: this.formatHours,\n ariaLabel: this.labelHours\n })); // Spacer\n\n $spinners.push(makeColon()); // Minutes\n\n $spinners.push(makeSpinbutton(this.setMinutes, 'minutes', 'b-time-minutes', {\n value: this.modelMinutes,\n max: 59,\n step: this.minutesStep || 1,\n formatterFn: this.formatMinutes,\n ariaLabel: this.labelMinutes\n }));\n\n if (this.showSeconds) {\n // Spacer\n $spinners.push(makeColon()); // Seconds\n\n $spinners.push(makeSpinbutton(this.setSeconds, 'seconds', 'b-time-seconds', {\n value: this.modelSeconds,\n max: 59,\n step: this.secondsStep || 1,\n formatterFn: this.formatSeconds,\n ariaLabel: this.labelSeconds\n }));\n } // AM/PM ?\n // depends on client settings, shouldn't be rendered on server\n\n\n if (this.isLive && this.is12Hour) {\n // TODO:\n // If locale is RTL, unshift this instead of push?\n // And switch class `ml-2` to `mr-2`\n // Note some LTR locales (i.e. zh) also place AM/PM to the left\n $spinners.push(makeSpinbutton(this.setAmpm, 'ampm', 'b-time-ampm', {\n value: this.modelAmpm,\n max: 1,\n formatterFn: this.formatAmpm,\n ariaLabel: this.labelAmpm,\n // We set `required` as `false`, since this always has a value\n required: false\n }));\n } // Assemble spinners\n\n\n $spinners = h('div', {\n staticClass: 'd-flex align-items-center justify-content-center mx-auto',\n attrs: {\n role: 'group',\n tabindex: disabled || readonly ? null : '-1',\n 'aria-labelledby': ariaLabelledby\n },\n on: {\n keydown: this.onSpinLeftRight,\n click:\n /* istanbul ignore next */\n function click(event) {\n if (event.target === event.currentTarget) {\n focusHandler();\n }\n }\n }\n }, $spinners); // Selected type display\n\n var $value = h('output', {\n staticClass: 'form-control form-control-sm text-center',\n class: {\n disabled: disabled || readonly\n },\n attrs: {\n id: valueId,\n role: 'status',\n for: spinIds.filter(identity).join(' ') || null,\n tabindex: disabled ? null : '-1',\n 'aria-live': this.isLive ? 'polite' : 'off',\n 'aria-atomic': 'true'\n },\n on: {\n // Transfer focus/click to focus hours spinner\n click: focusHandler,\n focus: focusHandler\n }\n }, [h('bdi', this.formattedTimeString), this.computedHMS ? h('span', {\n staticClass: 'sr-only'\n }, \" (\".concat(this.labelSelected, \") \")) : '']);\n var $header = h(this.headerTag, {\n staticClass: 'b-time-header',\n class: {\n 'sr-only': this.hideHeader\n }\n }, [$value]);\n var $content = this.normalizeSlot();\n var $footer = $content ? h(this.footerTag, {\n staticClass: 'b-time-footer'\n }, $content) : h();\n return h('div', {\n staticClass: 'b-time d-inline-flex flex-column text-center',\n attrs: {\n role: 'group',\n lang: this.computedLang || null,\n 'aria-labelledby': ariaLabelledby || null,\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-readonly': readonly && !disabled ? 'true' : null\n }\n }, [$header, $spinners, $footer]);\n }\n });\n\n var _watch$7;\n\n var _makeModelMixin$6 = makeModelMixin('value', {\n type: PROP_TYPE_STRING,\n defaultValue: ''\n }),\n modelMixin$6 = _makeModelMixin$6.mixin,\n modelProps$6 = _makeModelMixin$6.props,\n MODEL_PROP_NAME$6 = _makeModelMixin$6.prop,\n MODEL_EVENT_NAME$6 = _makeModelMixin$6.event; // --- Props ---\n\n\n var timeProps = omit(props$18, ['hidden', 'id', 'value']);\n var formBtnLabelControlProps = omit(props$1o, ['formattedValue', 'id', 'lang', 'rtl', 'value']);\n var props$17 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$6), timeProps), formBtnLabelControlProps), {}, {\n closeButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-secondary'),\n labelCloseButton: makeProp(PROP_TYPE_STRING, 'Close'),\n labelNowButton: makeProp(PROP_TYPE_STRING, 'Select now'),\n labelResetButton: makeProp(PROP_TYPE_STRING, 'Reset'),\n noCloseButton: makeProp(PROP_TYPE_BOOLEAN, false),\n nowButton: makeProp(PROP_TYPE_BOOLEAN, false),\n nowButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-primary'),\n resetButton: makeProp(PROP_TYPE_BOOLEAN, false),\n resetButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-danger'),\n resetValue: makeProp(PROP_TYPE_DATE_STRING)\n })), NAME_FORM_TIMEPICKER); // --- Main component ---\n // @vue/component\n\n var BFormTimepicker = /*#__PURE__*/extend({\n name: NAME_FORM_TIMEPICKER,\n mixins: [idMixin, modelMixin$6],\n props: props$17,\n data: function data() {\n return {\n // We always use `HH:mm:ss` value internally\n localHMS: this[MODEL_PROP_NAME$6] || '',\n // Context data from BTime\n localLocale: null,\n isRTL: false,\n formattedValue: '',\n // If the menu is opened\n isVisible: false\n };\n },\n computed: {\n computedLang: function computedLang() {\n return (this.localLocale || '').replace(/-u-.*$/i, '') || null;\n }\n },\n watch: (_watch$7 = {}, _defineProperty(_watch$7, MODEL_PROP_NAME$6, function (newValue) {\n this.localHMS = newValue || '';\n }), _defineProperty(_watch$7, \"localHMS\", function localHMS(newValue) {\n // We only update the v-model value when the timepicker\n // is open, to prevent cursor jumps when bound to a\n // text input in button only mode\n if (this.isVisible) {\n this.$emit(MODEL_EVENT_NAME$6, newValue || '');\n }\n }), _watch$7),\n methods: {\n // Public methods\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.control);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.control);\n }\n },\n // Private methods\n setAndClose: function setAndClose(value) {\n var _this = this;\n\n this.localHMS = value;\n this.$nextTick(function () {\n _this.$refs.control.hide(true);\n });\n },\n onInput: function onInput(hms) {\n if (this.localHMS !== hms) {\n this.localHMS = hms;\n }\n },\n onContext: function onContext(ctx) {\n var isRTL = ctx.isRTL,\n locale = ctx.locale,\n value = ctx.value,\n formatted = ctx.formatted;\n this.isRTL = isRTL;\n this.localLocale = locale;\n this.formattedValue = formatted;\n this.localHMS = value || ''; // Re-emit the context event\n\n this.$emit(EVENT_NAME_CONTEXT, ctx);\n },\n onNowButton: function onNowButton() {\n var now = new Date();\n var hours = now.getHours();\n var minutes = now.getMinutes();\n var seconds = this.showSeconds ? now.getSeconds() : 0;\n var value = [hours, minutes, seconds].map(function (v) {\n return \"00\".concat(v || '').slice(-2);\n }).join(':');\n this.setAndClose(value);\n },\n onResetButton: function onResetButton() {\n this.setAndClose(this.resetValue);\n },\n onCloseButton: function onCloseButton() {\n this.$refs.control.hide(true);\n },\n onShow: function onShow() {\n this.isVisible = true;\n },\n onShown: function onShown() {\n var _this2 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this2.$refs.time);\n\n _this2.$emit(EVENT_NAME_SHOWN);\n });\n },\n onHidden: function onHidden() {\n this.isVisible = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n // Render function helpers\n defaultButtonFn: function defaultButtonFn(_ref) {\n var isHovered = _ref.isHovered,\n hasFocus = _ref.hasFocus;\n return this.$createElement(isHovered || hasFocus ? BIconClockFill : BIconClock, {\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n }\n },\n render: function render(h) {\n var localHMS = this.localHMS,\n disabled = this.disabled,\n readonly = this.readonly,\n $props = this.$props;\n var placeholder = isUndefinedOrNull(this.placeholder) ? this.labelNoTimeSelected : this.placeholder; // Footer buttons\n\n var $footer = [];\n\n if (this.nowButton) {\n var label = this.labelNowButton;\n $footer.push(h(BButton, {\n props: {\n size: 'sm',\n disabled: disabled || readonly,\n variant: this.nowButtonVariant\n },\n attrs: {\n 'aria-label': label || null\n },\n on: {\n click: this.onNowButton\n },\n key: 'now-btn'\n }, label));\n }\n\n if (this.resetButton) {\n if ($footer.length > 0) {\n // Add a \"spacer\" between buttons (' ')\n $footer.push(h('span', \"\\xA0\"));\n }\n\n var _label = this.labelResetButton;\n $footer.push(h(BButton, {\n props: {\n size: 'sm',\n disabled: disabled || readonly,\n variant: this.resetButtonVariant\n },\n attrs: {\n 'aria-label': _label || null\n },\n on: {\n click: this.onResetButton\n },\n key: 'reset-btn'\n }, _label));\n }\n\n if (!this.noCloseButton) {\n // Add a \"spacer\" between buttons (' ')\n if ($footer.length > 0) {\n $footer.push(h('span', \"\\xA0\"));\n }\n\n var _label2 = this.labelCloseButton;\n $footer.push(h(BButton, {\n props: {\n size: 'sm',\n disabled: disabled,\n variant: this.closeButtonVariant\n },\n attrs: {\n 'aria-label': _label2 || null\n },\n on: {\n click: this.onCloseButton\n },\n key: 'close-btn'\n }, _label2));\n }\n\n if ($footer.length > 0) {\n $footer = [h('div', {\n staticClass: 'b-form-date-controls d-flex flex-wrap',\n class: {\n 'justify-content-between': $footer.length > 1,\n 'justify-content-end': $footer.length < 2\n }\n }, $footer)];\n }\n\n var $time = h(BTime, {\n staticClass: 'b-form-time-control',\n props: _objectSpread2$3(_objectSpread2$3({}, pluckProps(timeProps, $props)), {}, {\n value: localHMS,\n hidden: !this.isVisible\n }),\n on: {\n input: this.onInput,\n context: this.onContext\n },\n ref: 'time'\n }, $footer);\n return h(BVFormBtnLabelControl, {\n staticClass: 'b-form-timepicker',\n props: _objectSpread2$3(_objectSpread2$3({}, pluckProps(formBtnLabelControlProps, $props)), {}, {\n id: this.safeId(),\n value: localHMS,\n formattedValue: localHMS ? this.formattedValue : '',\n placeholder: placeholder,\n rtl: this.isRTL,\n lang: this.computedLang\n }),\n on: {\n show: this.onShow,\n shown: this.onShown,\n hidden: this.onHidden\n },\n scopedSlots: _defineProperty({}, SLOT_NAME_BUTTON_CONTENT, this.$scopedSlots[SLOT_NAME_BUTTON_CONTENT] || this.defaultButtonFn),\n ref: 'control'\n }, [$time]);\n }\n });\n\n var FormTimepickerPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BFormTimepicker: BFormTimepicker,\n BTimepicker: BFormTimepicker\n }\n });\n\n var ImagePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BImg: BImg,\n BImgLazy: BImgLazy\n }\n });\n\n var props$16 = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }, NAME_INPUT_GROUP_TEXT); // --- Main component ---\n // @vue/component\n\n var BInputGroupText = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP_TEXT,\n functional: true,\n props: props$16,\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 staticClass: 'input-group-text'\n }), children);\n }\n });\n\n var props$15 = makePropsConfigurable({\n append: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n isText: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }, NAME_INPUT_GROUP_ADDON); // --- Main component ---\n // @vue/component\n\n var BInputGroupAddon = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP_ADDON,\n functional: true,\n props: props$15,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var append = props.append;\n return h(props.tag, a(data, {\n class: {\n 'input-group-append': append,\n 'input-group-prepend': !append\n },\n attrs: {\n id: props.id\n }\n }), props.isText ? [h(BInputGroupText, children)] : children);\n }\n });\n\n var props$14 = makePropsConfigurable(omit(props$15, ['append']), NAME_INPUT_GROUP_APPEND); // --- Main component ---\n // @vue/component\n\n var BInputGroupAppend = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP_APPEND,\n functional: true,\n props: props$14,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, a(data, {\n props: _objectSpread2$3(_objectSpread2$3({}, props), {}, {\n append: true\n })\n }), children);\n }\n });\n\n var props$13 = makePropsConfigurable(omit(props$15, ['append']), NAME_INPUT_GROUP_PREPEND); // --- Main component ---\n // @vue/component\n\n var BInputGroupPrepend = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP_PREPEND,\n functional: true,\n props: props$13,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, a(data, {\n props: _objectSpread2$3(_objectSpread2$3({}, props), {}, {\n append: false\n })\n }), children);\n }\n });\n\n var props$12 = makePropsConfigurable({\n append: makeProp(PROP_TYPE_STRING),\n appendHtml: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n prepend: makeProp(PROP_TYPE_STRING),\n prependHtml: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }, NAME_INPUT_GROUP); // --- Main component ---\n // @vue/component\n\n var BInputGroup = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP,\n functional: true,\n props: props$12,\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 prepend = props.prepend,\n prependHtml = props.prependHtml,\n append = props.append,\n appendHtml = props.appendHtml,\n size = props.size;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $prepend = h();\n var hasPrependSlot = hasNormalizedSlot(SLOT_NAME_PREPEND, $scopedSlots, $slots);\n\n if (hasPrependSlot || prepend || prependHtml) {\n $prepend = h(BInputGroupPrepend, [hasPrependSlot ? normalizeSlot(SLOT_NAME_PREPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(prependHtml, prepend)\n })]);\n }\n\n var $append = h();\n var hasAppendSlot = hasNormalizedSlot(SLOT_NAME_APPEND, $scopedSlots, $slots);\n\n if (hasAppendSlot || append || appendHtml) {\n $append = h(BInputGroupAppend, [hasAppendSlot ? normalizeSlot(SLOT_NAME_APPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(appendHtml, append)\n })]);\n }\n\n return h(props.tag, a(data, {\n staticClass: 'input-group',\n class: _defineProperty({}, \"input-group-\".concat(size), size),\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), [$prepend, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots), $append]);\n }\n });\n\n var InputGroupPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BInputGroup: BInputGroup,\n BInputGroupAddon: BInputGroupAddon,\n BInputGroupPrepend: BInputGroupPrepend,\n BInputGroupAppend: BInputGroupAppend,\n BInputGroupText: BInputGroupText\n }\n });\n\n var props$11 = makePropsConfigurable({\n // String breakpoint name new in Bootstrap v4.4.x\n fluid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }, NAME_CONTAINER); // --- Main component ---\n // @vue/component\n\n var BContainer = /*#__PURE__*/extend({\n name: NAME_CONTAINER,\n functional: true,\n props: props$11,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var fluid = props.fluid;\n return h(props.tag, a(data, {\n class: _defineProperty({\n container: !(fluid || fluid === ''),\n 'container-fluid': fluid === true || fluid === ''\n }, \"container-\".concat(fluid), fluid && fluid !== true)\n }), children);\n }\n });\n\n var props$10 = makePropsConfigurable({\n bgVariant: makeProp(PROP_TYPE_STRING),\n borderVariant: makeProp(PROP_TYPE_STRING),\n containerFluid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n header: makeProp(PROP_TYPE_STRING),\n headerHtml: makeProp(PROP_TYPE_STRING),\n headerLevel: makeProp(PROP_TYPE_NUMBER_STRING, 3),\n headerTag: makeProp(PROP_TYPE_STRING, 'h1'),\n lead: makeProp(PROP_TYPE_STRING),\n leadHtml: makeProp(PROP_TYPE_STRING),\n leadTag: makeProp(PROP_TYPE_STRING, 'p'),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING)\n }, NAME_JUMBOTRON); // --- Main component ---\n // @vue/component\n\n var BJumbotron = /*#__PURE__*/extend({\n name: NAME_JUMBOTRON,\n functional: true,\n props: props$10,\n render: function render(h, _ref) {\n var _class2;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var header = props.header,\n headerHtml = props.headerHtml,\n lead = props.lead,\n leadHtml = props.leadHtml,\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 $header = h();\n var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n if (hasHeaderSlot || header || headerHtml) {\n var headerLevel = props.headerLevel;\n $header = h(props.headerTag, {\n class: _defineProperty({}, \"display-\".concat(headerLevel), headerLevel),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n }\n\n var $lead = h();\n var hasLeadSlot = hasNormalizedSlot(SLOT_NAME_LEAD, $scopedSlots, $slots);\n\n if (hasLeadSlot || lead || leadHtml) {\n $lead = h(props.leadTag, {\n staticClass: 'lead',\n domProps: hasLeadSlot ? {} : htmlOrText(leadHtml, lead)\n }, normalizeSlot(SLOT_NAME_LEAD, slotScope, $scopedSlots, $slots));\n }\n\n var $children = [$header, $lead, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots)]; // If fluid, wrap content in a container\n\n if (props.fluid) {\n $children = [h(BContainer, {\n props: {\n fluid: props.containerFluid\n }\n }, $children)];\n }\n\n return h(props.tag, a(data, {\n staticClass: 'jumbotron',\n class: (_class2 = {\n 'jumbotron-fluid': props.fluid\n }, _defineProperty(_class2, \"text-\".concat(textVariant), textVariant), _defineProperty(_class2, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class2, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class2, \"border\", borderVariant), _class2)\n }), $children);\n }\n });\n\n var JumbotronPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BJumbotron: BJumbotron\n }\n });\n\n var COMMON_ALIGNMENT = ['start', 'end', 'center']; // --- Helper methods ---\n // Compute a `row-cols-{breakpoint}-{cols}` class name\n // Memoized function for better performance on generating class names\n\n var computeRowColsClass = memoize(function (breakpoint, cols) {\n cols = trim(toString(cols));\n return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null;\n }); // Get the breakpoint name from the `rowCols` prop name\n // Memoized function for better performance on extracting breakpoint names\n\n var computeRowColsBreakpoint = memoize(function (prop) {\n return lowerCase(prop.replace('cols', ''));\n }); // Cached copy of the `row-cols` breakpoint prop names\n // Will be populated when the props are generated\n\n var rowColsPropList = []; // --- Props ---\n // Prop generator for lazy generation of props\n\n var generateProps = function generateProps() {\n // i.e. 'row-cols-2', 'row-cols-md-4', 'row-cols-xl-6', ...\n var rowColsProps = getBreakpointsUpCached().reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'cols')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // Cache the row-cols prop names\n\n rowColsPropList = keys(rowColsProps); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, rowColsProps), {}, {\n alignContent: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around', 'stretch'), value);\n }),\n alignH: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around'), value);\n }),\n alignV: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'baseline', 'stretch'), value);\n }),\n noGutters: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_ROW);\n }; // --- Main component ---\n // We do not use `extend()` here as that would evaluate the props\n // immediately, which we do not want to happen\n // @vue/component\n\n var BRow = {\n name: NAME_ROW,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props;\n this.props = generateProps();\n return this.props;\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var alignV = props.alignV,\n alignH = props.alignH,\n alignContent = props.alignContent; // Loop through row-cols breakpoint props and generate the classes\n\n var classList = [];\n rowColsPropList.forEach(function (prop) {\n var c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop]); // If a class is returned, push it onto the array\n\n if (c) {\n classList.push(c);\n }\n });\n classList.push((_classList$push = {\n 'no-gutters': props.noGutters\n }, _defineProperty(_classList$push, \"align-items-\".concat(alignV), alignV), _defineProperty(_classList$push, \"justify-content-\".concat(alignH), alignH), _defineProperty(_classList$push, \"align-content-\".concat(alignContent), alignContent), _classList$push));\n return h(props.tag, a(data, {\n staticClass: 'row',\n class: classList\n }), children);\n }\n };\n\n var LayoutPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BContainer: BContainer,\n BRow: BRow,\n BCol: BCol,\n BFormRow: BFormRow\n }\n });\n\n var LinkPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BLink: BLink\n }\n });\n\n var props$$ = makePropsConfigurable({\n flush: makeProp(PROP_TYPE_BOOLEAN, false),\n horizontal: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }, NAME_LIST_GROUP); // --- Main component ---\n // @vue/component\n\n var BListGroup = /*#__PURE__*/extend({\n name: NAME_LIST_GROUP,\n functional: true,\n props: props$$,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var horizontal = props.horizontal === '' ? true : props.horizontal;\n horizontal = props.flush ? false : horizontal;\n var componentData = {\n staticClass: 'list-group',\n class: _defineProperty({\n 'list-group-flush': props.flush,\n 'list-group-horizontal': horizontal === true\n }, \"list-group-horizontal-\".concat(horizontal), isString(horizontal))\n };\n return h(props.tag, a(data, componentData), children);\n }\n });\n\n var actionTags = ['a', 'router-link', 'button', 'b-link']; // --- Props ---\n\n var linkProps$3 = omit(props$2f, ['event', 'routerTag']);\n delete linkProps$3.href.default;\n delete linkProps$3.to.default;\n var props$_ = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, linkProps$3), {}, {\n action: makeProp(PROP_TYPE_BOOLEAN, false),\n button: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n variant: makeProp(PROP_TYPE_STRING)\n })), NAME_LIST_GROUP_ITEM); // --- Main component ---\n // @vue/component\n\n var BListGroupItem = /*#__PURE__*/extend({\n name: NAME_LIST_GROUP_ITEM,\n functional: true,\n props: props$_,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var button = props.button,\n variant = props.variant,\n active = props.active,\n disabled = props.disabled;\n var link = isLink$1(props);\n var tag = button ? 'button' : !link ? props.tag : BLink;\n var action = !!(props.action || link || button || arrayIncludes(actionTags, props.tag));\n var attrs = {};\n var itemProps = {};\n\n if (isTag(tag, 'button')) {\n if (!data.attrs || !data.attrs.type) {\n // Add a type for button is one not provided in passed attributes\n attrs.type = 'button';\n }\n\n if (props.disabled) {\n // Set disabled attribute if button and disabled\n attrs.disabled = true;\n }\n } else {\n itemProps = pluckProps(linkProps$3, props);\n }\n\n return h(tag, a(data, {\n attrs: attrs,\n props: itemProps,\n staticClass: 'list-group-item',\n 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)\n }), children);\n }\n });\n\n var ListGroupPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BListGroup: BListGroup,\n BListGroupItem: BListGroupItem\n }\n });\n\n var props$Z = makePropsConfigurable({\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n }, NAME_MEDIA_ASIDE); // --- Main component ---\n // @vue/component\n\n var BMediaAside = /*#__PURE__*/extend({\n name: NAME_MEDIA_ASIDE,\n functional: true,\n props: props$Z,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var verticalAlign = props.verticalAlign;\n var align = verticalAlign === 'top' ? 'start' : verticalAlign === 'bottom' ? 'end' :\n /* istanbul ignore next */\n verticalAlign;\n return h(props.tag, a(data, {\n staticClass: 'media-aside',\n class: _defineProperty({\n 'media-aside-right': props.right\n }, \"align-self-\".concat(align), align)\n }), children);\n }\n });\n\n var props$Y = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }, NAME_MEDIA_BODY); // --- Main component ---\n // @vue/component\n\n var BMediaBody = /*#__PURE__*/extend({\n name: NAME_MEDIA_BODY,\n functional: true,\n props: props$Y,\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 staticClass: 'media-body'\n }), children);\n }\n });\n\n var props$X = makePropsConfigurable({\n noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n rightAlign: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n }, NAME_MEDIA); // --- Main component ---\n // @vue/component\n\n var BMedia = /*#__PURE__*/extend({\n name: NAME_MEDIA,\n functional: true,\n props: props$X,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots,\n children = _ref.children;\n var noBody = props.noBody,\n rightAlign = props.rightAlign,\n verticalAlign = props.verticalAlign;\n var $children = noBody ? children : [];\n\n if (!noBody) {\n var slotScope = {};\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n $children.push(h(BMediaBody, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots)));\n var $aside = normalizeSlot(SLOT_NAME_ASIDE, slotScope, $scopedSlots, $slots);\n\n if ($aside) {\n $children[rightAlign ? 'push' : 'unshift'](h(BMediaAside, {\n props: {\n right: rightAlign,\n verticalAlign: verticalAlign\n }\n }, $aside));\n }\n }\n\n return h(props.tag, a(data, {\n staticClass: 'media'\n }), $children);\n }\n });\n\n var MediaPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BMedia: BMedia,\n BMediaAside: BMediaAside,\n BMediaBody: BMediaBody\n }\n });\n\n var PROP$1 = '$_documentListeners'; // --- Mixin ---\n // @vue/component\n\n var listenOnDocumentMixin = extend({\n created: function created() {\n // Define non-reactive property\n // Object of arrays, keyed by event name,\n // where value is an array of callbacks\n this[PROP$1] = {};\n },\n beforeDestroy: function beforeDestroy() {\n var _this = this;\n\n // Unregister all registered listeners\n keys(this[PROP$1] || {}).forEach(function (event) {\n _this[PROP$1][event].forEach(function (callback) {\n _this.listenOffDocument(event, callback);\n });\n });\n this[PROP$1] = null;\n },\n methods: {\n registerDocumentListener: function registerDocumentListener(event, callback) {\n if (this[PROP$1]) {\n this[PROP$1][event] = this[PROP$1][event] || [];\n\n if (!arrayIncludes(this[PROP$1][event], callback)) {\n this[PROP$1][event].push(callback);\n }\n }\n },\n unregisterDocumentListener: function unregisterDocumentListener(event, callback) {\n if (this[PROP$1] && this[PROP$1][event]) {\n this[PROP$1][event] = this[PROP$1][event].filter(function (cb) {\n return cb !== callback;\n });\n }\n },\n listenDocument: function listenDocument(on, event, callback) {\n on ? this.listenOnDocument(event, callback) : this.listenOffDocument(event, callback);\n },\n listenOnDocument: function listenOnDocument(event, callback) {\n if (IS_BROWSER) {\n eventOn(document, event, callback, EVENT_OPTIONS_NO_CAPTURE);\n this.registerDocumentListener(event, callback);\n }\n },\n listenOffDocument: function listenOffDocument(event, callback) {\n if (IS_BROWSER) {\n eventOff(document, event, callback, EVENT_OPTIONS_NO_CAPTURE);\n }\n\n this.unregisterDocumentListener(event, callback);\n }\n }\n });\n\n var PROP = '$_windowListeners'; // --- Mixin ---\n // @vue/component\n\n var listenOnWindowMixin = extend({\n created: function created() {\n // Define non-reactive property\n // Object of arrays, keyed by event name,\n // where value is an array of callbacks\n this[PROP] = {};\n },\n beforeDestroy: function beforeDestroy() {\n var _this = this;\n\n // Unregister all registered listeners\n keys(this[PROP] || {}).forEach(function (event) {\n _this[PROP][event].forEach(function (callback) {\n _this.listenOffWindow(event, callback);\n });\n });\n this[PROP] = null;\n },\n methods: {\n registerWindowListener: function registerWindowListener(event, callback) {\n if (this[PROP]) {\n this[PROP][event] = this[PROP][event] || [];\n\n if (!arrayIncludes(this[PROP][event], callback)) {\n this[PROP][event].push(callback);\n }\n }\n },\n unregisterWindowListener: function unregisterWindowListener(event, callback) {\n if (this[PROP] && this[PROP][event]) {\n this[PROP][event] = this[PROP][event].filter(function (cb) {\n return cb !== callback;\n });\n }\n },\n listenWindow: function listenWindow(on, event, callback) {\n on ? this.listenOnWindow(event, callback) : this.listenOffWindow(event, callback);\n },\n listenOnWindow: function listenOnWindow(event, callback) {\n if (IS_BROWSER) {\n eventOn(window, event, callback, EVENT_OPTIONS_NO_CAPTURE);\n this.registerWindowListener(event, callback);\n }\n },\n listenOffWindow: function listenOffWindow(event, callback) {\n if (IS_BROWSER) {\n eventOff(window, event, callback, EVENT_OPTIONS_NO_CAPTURE);\n }\n\n this.unregisterWindowListener(event, callback);\n }\n }\n });\n\n // @vue/component\n\n var useParentMixin = extend({\n computed: {\n bvParent: function bvParent() {\n return this.$parent || this.$root === this && this.$options.bvParent;\n }\n }\n });\n\n // This method returns a component's scoped style attribute name: `data-v-xxxxxxx`\n // The `_scopeId` options property is added by vue-loader when using scoped styles\n // and will be `undefined` if no scoped styles are in use\n var getScopeId = function getScopeId(vm) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return vm ? vm.$options._scopeId || defaultValue : defaultValue;\n };\n\n var scopedStyleMixin = extend({\n mixins: [useParentMixin],\n computed: {\n scopedStyleAttrs: function scopedStyleAttrs() {\n var scopeId = getScopeId(this.bvParent);\n return scopeId ? _defineProperty({}, scopeId, '') : {};\n }\n }\n });\n\n var createNewChildComponent = function createNewChildComponent(parent, Component) {\n var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var bvEventRoot = parent.$root ? parent.$root.$options.bvEventRoot || parent.$root : null;\n return new Component(_objectSpread2$3(_objectSpread2$3({}, config), {}, {\n parent: parent,\n bvParent: parent,\n bvEventRoot: bvEventRoot\n }));\n };\n\n // BVTransporter/BVTransporterTarget:\n //\n // Single root node portaling of content, which retains parent/child hierarchy\n // Unlike Portal-Vue where portaled content is no longer a descendent of its\n // intended parent components\n //\n // Private components for use by Tooltips, Popovers and Modals\n //\n // Based on vue-simple-portal\n // https://github.com/LinusBorg/vue-simple-portal\n // Transporter target used by BVTransporter\n // Supports only a single root element\n // @vue/component\n\n var BVTransporterTarget = /*#__PURE__*/extend({\n // As an abstract component, it doesn't appear in the $parent chain of\n // components, which means the next parent of any component rendered inside\n // of this one will be the parent from which is was portal'd\n abstract: true,\n name: NAME_TRANSPORTER_TARGET,\n props: {\n // Even though we only support a single root element,\n // VNodes are always passed as an array\n nodes: makeProp(PROP_TYPE_ARRAY_FUNCTION)\n },\n data: function data(vm) {\n return {\n updatedNodes: vm.nodes\n };\n },\n destroyed: function destroyed() {\n removeNode(this.$el);\n },\n render: function render(h) {\n var updatedNodes = this.updatedNodes;\n var $nodes = isFunction$1(updatedNodes) ? updatedNodes({}) : updatedNodes;\n $nodes = concat($nodes).filter(identity);\n\n if ($nodes && $nodes.length > 0 && !$nodes[0].text) {\n return $nodes[0];\n }\n /* istanbul ignore next */\n\n\n return h();\n }\n }); // --- Props ---\n\n var props$W = {\n // String: CSS selector,\n // HTMLElement: Element reference\n // Mainly needed for tooltips/popovers inside modals\n container: makeProp([HTMLElement, PROP_TYPE_STRING], 'body'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n // This should be set to match the root element type\n tag: makeProp(PROP_TYPE_STRING, 'div')\n }; // --- Main component ---\n // @vue/component\n\n var BVTransporterVue2 = /*#__PURE__*/extend({\n name: NAME_TRANSPORTER,\n mixins: [normalizeSlotMixin],\n props: props$W,\n watch: {\n disabled: {\n immediate: true,\n handler: function handler(disabled) {\n disabled ? this.unmountTarget() : this.$nextTick(this.mountTarget);\n }\n }\n },\n created: function created() {\n // Create private non-reactive props\n this.$_defaultFn = null;\n this.$_target = null;\n },\n beforeMount: function beforeMount() {\n this.mountTarget();\n },\n updated: function updated() {\n // We need to make sure that all children have completed updating\n // before rendering in the target\n // `vue-simple-portal` has the this in a `$nextTick()`,\n // while `portal-vue` doesn't\n // Just trying to see if the `$nextTick()` delay is required or not\n // Since all slots in Vue 2.6.x are always functions\n this.updateTarget();\n },\n beforeDestroy: function beforeDestroy() {\n this.unmountTarget();\n this.$_defaultFn = null;\n },\n methods: {\n // Get the element which the target should be appended to\n getContainer: function getContainer() {\n /* istanbul ignore else */\n if (IS_BROWSER) {\n var container = this.container;\n return isString(container) ? select(container) : container;\n } else {\n return null;\n }\n },\n // Mount the target\n mountTarget: function mountTarget() {\n if (!this.$_target) {\n var $container = this.getContainer();\n\n if ($container) {\n var $el = document.createElement('div');\n $container.appendChild($el);\n this.$_target = createNewChildComponent(this, BVTransporterTarget, {\n el: $el,\n propsData: {\n // Initial nodes to be rendered\n nodes: concat(this.normalizeSlot())\n }\n });\n }\n }\n },\n // Update the content of the target\n updateTarget: function updateTarget() {\n if (IS_BROWSER && this.$_target) {\n var defaultFn = this.$scopedSlots.default;\n\n if (!this.disabled) {\n /* istanbul ignore else: only applicable in Vue 2.5.x */\n if (defaultFn && this.$_defaultFn !== defaultFn) {\n // We only update the target component if the scoped slot\n // function is a fresh one. The new slot syntax (since Vue 2.6)\n // can cache unchanged slot functions and we want to respect that here\n this.$_target.updatedNodes = defaultFn;\n } else if (!defaultFn) {\n // We also need to be back compatible with non-scoped default slot (i.e. 2.5.x)\n this.$_target.updatedNodes = this.$slots.default;\n }\n } // Update the scoped slot function cache\n\n\n this.$_defaultFn = defaultFn;\n }\n },\n // Unmount the target\n unmountTarget: function unmountTarget() {\n this.$_target && this.$_target.$destroy();\n this.$_target = null;\n }\n },\n render: function render(h) {\n // This component has no root element, so only a single VNode is allowed\n if (this.disabled) {\n var $nodes = concat(this.normalizeSlot()).filter(identity);\n\n if ($nodes.length > 0 && !$nodes[0].text) {\n return $nodes[0];\n }\n }\n\n return h();\n }\n });\n var BVTransporterVue3 = /*#__PURE__*/extend({\n name: NAME_TRANSPORTER,\n mixins: [normalizeSlotMixin],\n props: props$W,\n render: function render(h) {\n if (this.disabled) {\n var $nodes = concat(this.normalizeSlot()).filter(identity);\n\n if ($nodes.length > 0) {\n return $nodes[0];\n }\n }\n\n return h(Vue__default['default'].Teleport, {\n to: this.container\n }, this.normalizeSlot());\n }\n });\n var BVTransporter = isVue3 ? BVTransporterVue3 : BVTransporterVue2;\n\n var BvModalEvent = /*#__PURE__*/function (_BvEvent) {\n _inherits(BvModalEvent, _BvEvent);\n\n var _super = _createSuper(BvModalEvent);\n\n function BvModalEvent(type) {\n var _this;\n\n var eventInit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BvModalEvent);\n\n _this = _super.call(this, type, eventInit); // Freeze our new props as readonly, but leave them enumerable\n\n defineProperties(_assertThisInitialized(_this), {\n trigger: readonlyDescriptor()\n });\n return _this;\n }\n\n _createClass(BvModalEvent, null, [{\n key: \"Defaults\",\n get: function get() {\n return _objectSpread2$3(_objectSpread2$3({}, _get(_getPrototypeOf(BvModalEvent), \"Defaults\", this)), {}, {\n trigger: null\n });\n }\n }]);\n\n return BvModalEvent;\n }(BvEvent); // Named exports\n\n /**\n * Private ModalManager helper\n * Handles controlling modal stacking zIndexes and body adjustments/classes\n */\n // Default modal backdrop z-index\n\n var DEFAULT_ZINDEX = 1040; // Selectors for padding/margin adjustments\n\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n var SELECTOR_NAVBAR_TOGGLER = '.navbar-toggler'; // --- Main component ---\n // @vue/component\n\n var ModalManager = /*#__PURE__*/extend({\n data: function data() {\n return {\n modals: [],\n baseZIndex: null,\n scrollbarWidth: null,\n isBodyOverflowing: false\n };\n },\n computed: {\n modalCount: function modalCount() {\n return this.modals.length;\n },\n modalsAreOpen: function modalsAreOpen() {\n return this.modalCount > 0;\n }\n },\n watch: {\n modalCount: function modalCount(newCount, oldCount) {\n if (IS_BROWSER) {\n this.getScrollbarWidth();\n\n if (newCount > 0 && oldCount === 0) {\n // Transitioning to modal(s) open\n this.checkScrollbar();\n this.setScrollbar();\n addClass(document.body, 'modal-open');\n } else if (newCount === 0 && oldCount > 0) {\n // Transitioning to modal(s) closed\n this.resetScrollbar();\n removeClass(document.body, 'modal-open');\n }\n\n setAttr(document.body, 'data-modal-open-count', String(newCount));\n }\n },\n modals: function modals(newValue) {\n var _this = this;\n\n this.checkScrollbar();\n requestAF(function () {\n _this.updateModals(newValue || []);\n });\n }\n },\n methods: {\n // Public methods\n registerModal: function registerModal(modal) {\n // Register the modal if not already registered\n if (modal && this.modals.indexOf(modal) === -1) {\n this.modals.push(modal);\n }\n },\n unregisterModal: function unregisterModal(modal) {\n var index = this.modals.indexOf(modal);\n\n if (index > -1) {\n // Remove modal from modals array\n this.modals.splice(index, 1); // Reset the modal's data\n\n if (!modal._isBeingDestroyed && !modal._isDestroyed) {\n this.resetModal(modal);\n }\n }\n },\n getBaseZIndex: function getBaseZIndex() {\n if (IS_BROWSER && isNull(this.baseZIndex)) {\n // Create a temporary `div.modal-backdrop` to get computed z-index\n var div = document.createElement('div');\n addClass(div, 'modal-backdrop');\n addClass(div, 'd-none');\n setStyle(div, 'display', 'none');\n document.body.appendChild(div);\n this.baseZIndex = toInteger(getCS(div).zIndex, DEFAULT_ZINDEX);\n document.body.removeChild(div);\n }\n\n return this.baseZIndex || DEFAULT_ZINDEX;\n },\n getScrollbarWidth: function getScrollbarWidth() {\n if (IS_BROWSER && isNull(this.scrollbarWidth)) {\n // Create a temporary `div.measure-scrollbar` to get computed z-index\n var div = document.createElement('div');\n addClass(div, 'modal-scrollbar-measure');\n document.body.appendChild(div);\n this.scrollbarWidth = getBCR(div).width - div.clientWidth;\n document.body.removeChild(div);\n }\n\n return this.scrollbarWidth || 0;\n },\n // Private methods\n updateModals: function updateModals(modals) {\n var _this2 = this;\n\n var baseZIndex = this.getBaseZIndex();\n var scrollbarWidth = this.getScrollbarWidth();\n modals.forEach(function (modal, index) {\n // We update data values on each modal\n modal.zIndex = baseZIndex + index;\n modal.scrollbarWidth = scrollbarWidth;\n modal.isTop = index === _this2.modals.length - 1;\n modal.isBodyOverflowing = _this2.isBodyOverflowing;\n });\n },\n resetModal: function resetModal(modal) {\n if (modal) {\n modal.zIndex = this.getBaseZIndex();\n modal.isTop = true;\n modal.isBodyOverflowing = false;\n }\n },\n checkScrollbar: function checkScrollbar() {\n // Determine if the body element is overflowing\n var _getBCR = getBCR(document.body),\n left = _getBCR.left,\n right = _getBCR.right;\n\n this.isBodyOverflowing = left + right < window.innerWidth;\n },\n setScrollbar: function setScrollbar() {\n var body = document.body; // Storage place to cache changes to margins and padding\n // Note: This assumes the following element types are not added to the\n // document after the modal has opened.\n\n body._paddingChangedForModal = body._paddingChangedForModal || [];\n body._marginChangedForModal = body._marginChangedForModal || [];\n\n if (this.isBodyOverflowing) {\n var scrollbarWidth = this.scrollbarWidth; // Adjust fixed content padding\n\n /* istanbul ignore next: difficult to test in JSDOM */\n\n selectAll(SELECTOR_FIXED_CONTENT).forEach(function (el) {\n var actualPadding = getStyle(el, 'paddingRight') || '';\n setAttr(el, 'data-padding-right', actualPadding);\n setStyle(el, 'paddingRight', \"\".concat(toFloat(getCS(el).paddingRight, 0) + scrollbarWidth, \"px\"));\n\n body._paddingChangedForModal.push(el);\n }); // Adjust sticky content margin\n\n /* istanbul ignore next: difficult to test in JSDOM */\n\n selectAll(SELECTOR_STICKY_CONTENT).forEach(function (el)\n /* istanbul ignore next */\n {\n var actualMargin = getStyle(el, 'marginRight') || '';\n setAttr(el, 'data-margin-right', actualMargin);\n setStyle(el, 'marginRight', \"\".concat(toFloat(getCS(el).marginRight, 0) - scrollbarWidth, \"px\"));\n\n body._marginChangedForModal.push(el);\n }); // Adjust <b-navbar-toggler> margin\n\n /* istanbul ignore next: difficult to test in JSDOM */\n\n selectAll(SELECTOR_NAVBAR_TOGGLER).forEach(function (el)\n /* istanbul ignore next */\n {\n var actualMargin = getStyle(el, 'marginRight') || '';\n setAttr(el, 'data-margin-right', actualMargin);\n setStyle(el, 'marginRight', \"\".concat(toFloat(getCS(el).marginRight, 0) + scrollbarWidth, \"px\"));\n\n body._marginChangedForModal.push(el);\n }); // Adjust body padding\n\n var actualPadding = getStyle(body, 'paddingRight') || '';\n setAttr(body, 'data-padding-right', actualPadding);\n setStyle(body, 'paddingRight', \"\".concat(toFloat(getCS(body).paddingRight, 0) + scrollbarWidth, \"px\"));\n }\n },\n resetScrollbar: function resetScrollbar() {\n var body = document.body;\n\n if (body._paddingChangedForModal) {\n // Restore fixed content padding\n body._paddingChangedForModal.forEach(function (el) {\n /* istanbul ignore next: difficult to test in JSDOM */\n if (hasAttr(el, 'data-padding-right')) {\n setStyle(el, 'paddingRight', getAttr(el, 'data-padding-right') || '');\n removeAttr(el, 'data-padding-right');\n }\n });\n }\n\n if (body._marginChangedForModal) {\n // Restore sticky content and navbar-toggler margin\n body._marginChangedForModal.forEach(function (el) {\n /* istanbul ignore next: difficult to test in JSDOM */\n if (hasAttr(el, 'data-margin-right')) {\n setStyle(el, 'marginRight', getAttr(el, 'data-margin-right') || '');\n removeAttr(el, 'data-margin-right');\n }\n });\n }\n\n body._paddingChangedForModal = null;\n body._marginChangedForModal = null; // Restore body padding\n\n if (hasAttr(body, 'data-padding-right')) {\n setStyle(body, 'paddingRight', getAttr(body, 'data-padding-right') || '');\n removeAttr(body, 'data-padding-right');\n }\n }\n }\n }); // Create and export our modal manager instance\n\n var modalManager = new ModalManager();\n\n var _makeModelMixin$5 = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false,\n event: EVENT_NAME_CHANGE\n }),\n modelMixin$5 = _makeModelMixin$5.mixin,\n modelProps$5 = _makeModelMixin$5.props,\n MODEL_PROP_NAME$5 = _makeModelMixin$5.prop,\n MODEL_EVENT_NAME$5 = _makeModelMixin$5.event;\n\n var TRIGGER_BACKDROP = 'backdrop';\n var TRIGGER_ESC = 'esc';\n var TRIGGER_FORCE = 'FORCE';\n var TRIGGER_TOGGLE = 'toggle';\n var BUTTON_CANCEL = 'cancel'; // TODO: This should be renamed to 'close'\n\n var BUTTON_CLOSE = 'headerclose';\n var BUTTON_OK = 'ok';\n var BUTTONS = [BUTTON_CANCEL, BUTTON_CLOSE, BUTTON_OK]; // `ObserveDom` config to detect changes in modal content\n // so that we can adjust the modal padding if needed\n\n var OBSERVER_CONFIG = {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['style', 'class']\n }; // --- Props ---\n\n var props$V = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$5), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n autoFocusButton: makeProp(PROP_TYPE_STRING, null,\n /* istanbul ignore next */\n function (value) {\n return isUndefinedOrNull(value) || arrayIncludes(BUTTONS, value);\n }),\n bodyBgVariant: makeProp(PROP_TYPE_STRING),\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n bodyTextVariant: makeProp(PROP_TYPE_STRING),\n busy: makeProp(PROP_TYPE_BOOLEAN, false),\n buttonSize: makeProp(PROP_TYPE_STRING),\n cancelDisabled: makeProp(PROP_TYPE_BOOLEAN, false),\n cancelTitle: makeProp(PROP_TYPE_STRING, 'Cancel'),\n cancelTitleHtml: makeProp(PROP_TYPE_STRING),\n cancelVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n centered: makeProp(PROP_TYPE_BOOLEAN, false),\n contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n dialogClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerBgVariant: makeProp(PROP_TYPE_STRING),\n footerBorderVariant: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerTag: makeProp(PROP_TYPE_STRING, 'footer'),\n footerTextVariant: makeProp(PROP_TYPE_STRING),\n headerBgVariant: makeProp(PROP_TYPE_STRING),\n headerBorderVariant: makeProp(PROP_TYPE_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerCloseContent: makeProp(PROP_TYPE_STRING, '×'),\n headerCloseLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n headerCloseVariant: makeProp(PROP_TYPE_STRING),\n headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n headerTextVariant: makeProp(PROP_TYPE_STRING),\n // TODO: Rename to `noBackdrop` and deprecate `hideBackdrop`\n hideBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n // TODO: Rename to `noFooter` and deprecate `hideFooter`\n hideFooter: makeProp(PROP_TYPE_BOOLEAN, false),\n // TODO: Rename to `noHeader` and deprecate `hideHeader`\n hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n // TODO: Rename to `noHeaderClose` and deprecate `hideHeaderClose`\n hideHeaderClose: makeProp(PROP_TYPE_BOOLEAN, false),\n ignoreEnforceFocusSelector: makeProp(PROP_TYPE_ARRAY_STRING),\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n modalClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n noCloseOnBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnEsc: makeProp(PROP_TYPE_BOOLEAN, false),\n noEnforceFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n noStacking: makeProp(PROP_TYPE_BOOLEAN, false),\n okDisabled: makeProp(PROP_TYPE_BOOLEAN, false),\n okOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n okTitle: makeProp(PROP_TYPE_STRING, 'OK'),\n okTitleHtml: makeProp(PROP_TYPE_STRING),\n okVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n // HTML Element, CSS selector string or Vue component instance\n returnFocus: makeProp([HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING]),\n scrollable: makeProp(PROP_TYPE_BOOLEAN, false),\n size: makeProp(PROP_TYPE_STRING, 'md'),\n static: makeProp(PROP_TYPE_BOOLEAN, false),\n title: makeProp(PROP_TYPE_STRING),\n titleClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n titleHtml: makeProp(PROP_TYPE_STRING),\n titleSrOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n titleTag: makeProp(PROP_TYPE_STRING, 'h5')\n })), NAME_MODAL); // --- Main component ---\n // @vue/component\n\n var BModal = /*#__PURE__*/extend({\n name: NAME_MODAL,\n mixins: [attrsMixin, idMixin, modelMixin$5, listenOnDocumentMixin, listenOnRootMixin, listenOnWindowMixin, normalizeSlotMixin, scopedStyleMixin],\n inheritAttrs: false,\n props: props$V,\n data: function data() {\n return {\n isHidden: true,\n // If modal should not be in document\n isVisible: false,\n // Controls modal visible state\n isTransitioning: false,\n // Used for style control\n isShow: false,\n // Used for style control\n isBlock: false,\n // Used for style control\n isOpening: false,\n // To signal that the modal is in the process of opening\n isClosing: false,\n // To signal that the modal is in the process of closing\n ignoreBackdropClick: false,\n // Used to signify if click out listener should ignore the click\n isModalOverflowing: false,\n // The following items are controlled by the modalManager instance\n scrollbarWidth: 0,\n zIndex: modalManager.getBaseZIndex(),\n isTop: true,\n isBodyOverflowing: false\n };\n },\n computed: {\n modalId: function modalId() {\n return this.safeId();\n },\n modalOuterId: function modalOuterId() {\n return this.safeId('__BV_modal_outer_');\n },\n modalHeaderId: function modalHeaderId() {\n return this.safeId('__BV_modal_header_');\n },\n modalBodyId: function modalBodyId() {\n return this.safeId('__BV_modal_body_');\n },\n modalTitleId: function modalTitleId() {\n return this.safeId('__BV_modal_title_');\n },\n modalContentId: function modalContentId() {\n return this.safeId('__BV_modal_content_');\n },\n modalFooterId: function modalFooterId() {\n return this.safeId('__BV_modal_footer_');\n },\n modalBackdropId: function modalBackdropId() {\n return this.safeId('__BV_modal_backdrop_');\n },\n modalClasses: function modalClasses() {\n return [{\n fade: !this.noFade,\n show: this.isShow\n }, this.modalClass];\n },\n modalStyles: function modalStyles() {\n var sbWidth = \"\".concat(this.scrollbarWidth, \"px\");\n return {\n paddingLeft: !this.isBodyOverflowing && this.isModalOverflowing ? sbWidth : '',\n paddingRight: this.isBodyOverflowing && !this.isModalOverflowing ? sbWidth : '',\n // Needed to fix issue https://github.com/bootstrap-vue/bootstrap-vue/issues/3457\n // Even though we are using v-show, we must ensure 'none' is restored in the styles\n display: this.isBlock ? 'block' : 'none'\n };\n },\n dialogClasses: function dialogClasses() {\n var _ref;\n\n 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];\n },\n headerClasses: function headerClasses() {\n var _ref2;\n\n 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];\n },\n titleClasses: function titleClasses() {\n return [{\n 'sr-only': this.titleSrOnly\n }, this.titleClass];\n },\n bodyClasses: function bodyClasses() {\n var _ref3;\n\n return [(_ref3 = {}, _defineProperty(_ref3, \"bg-\".concat(this.bodyBgVariant), this.bodyBgVariant), _defineProperty(_ref3, \"text-\".concat(this.bodyTextVariant), this.bodyTextVariant), _ref3), this.bodyClass];\n },\n footerClasses: function footerClasses() {\n var _ref4;\n\n 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];\n },\n modalOuterStyle: function modalOuterStyle() {\n // Styles needed for proper stacking of modals\n return {\n position: 'absolute',\n zIndex: this.zIndex\n };\n },\n slotScope: function slotScope() {\n return {\n cancel: this.onCancel,\n close: this.onClose,\n hide: this.hide,\n ok: this.onOk,\n visible: this.isVisible\n };\n },\n computeIgnoreEnforceFocusSelector: function computeIgnoreEnforceFocusSelector() {\n // Normalize to an single selector with selectors separated by `,`\n return concat(this.ignoreEnforceFocusSelector).filter(identity).join(',').trim();\n },\n computedAttrs: function computedAttrs() {\n // If the parent has a scoped style attribute, and the modal\n // is portalled, add the scoped attribute to the modal wrapper\n var scopedStyleAttrs = !this.static ? this.scopedStyleAttrs : {};\n return _objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, scopedStyleAttrs), this.bvAttrs), {}, {\n id: this.modalOuterId\n });\n },\n computedModalAttrs: function computedModalAttrs() {\n var isVisible = this.isVisible,\n ariaLabel = this.ariaLabel;\n return {\n id: this.modalId,\n role: 'dialog',\n 'aria-hidden': isVisible ? null : 'true',\n 'aria-modal': isVisible ? 'true' : null,\n 'aria-label': ariaLabel,\n 'aria-labelledby': this.hideHeader || ariaLabel || // TODO: Rename slot to `title` and deprecate `modal-title`\n !(this.hasNormalizedSlot(SLOT_NAME_MODAL_TITLE) || this.titleHtml || this.title) ? null : this.modalTitleId,\n 'aria-describedby': this.modalBodyId\n };\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME$5, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this[newValue ? 'show' : 'hide']();\n }\n }),\n created: function created() {\n // Define non-reactive properties\n this.$_observer = null;\n this.$_returnFocus = this.returnFocus || null;\n },\n mounted: function mounted() {\n // Set initial z-index as queried from the DOM\n this.zIndex = modalManager.getBaseZIndex(); // Listen for events from others to either open or close ourselves\n // and listen to all modals to enable/disable enforce focus\n\n this.listenOnRoot(getRootActionEventName(NAME_MODAL, EVENT_NAME_SHOW), this.showHandler);\n this.listenOnRoot(getRootActionEventName(NAME_MODAL, EVENT_NAME_HIDE), this.hideHandler);\n this.listenOnRoot(getRootActionEventName(NAME_MODAL, EVENT_NAME_TOGGLE), this.toggleHandler); // Listen for `bv:modal::show events`, and close ourselves if the\n // opening modal not us\n\n this.listenOnRoot(getRootEventName(NAME_MODAL, EVENT_NAME_SHOW), this.modalListener); // Initially show modal?\n\n if (this[MODEL_PROP_NAME$5] === true) {\n this.$nextTick(this.show);\n }\n },\n beforeDestroy: function beforeDestroy() {\n // Ensure everything is back to normal\n modalManager.unregisterModal(this);\n this.setObserver(false);\n\n if (this.isVisible) {\n this.isVisible = false;\n this.isShow = false;\n this.isTransitioning = false;\n }\n },\n methods: {\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.content, this.checkModalOverflow.bind(this), OBSERVER_CONFIG);\n }\n },\n // Private method to update the v-model\n updateModel: function updateModel(value) {\n if (value !== this[MODEL_PROP_NAME$5]) {\n this.$emit(MODEL_EVENT_NAME$5, value);\n }\n },\n // Private method to create a BvModalEvent object\n buildEvent: function buildEvent(type) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new BvModalEvent(type, _objectSpread2$3(_objectSpread2$3({\n // Default options\n cancelable: false,\n target: this.$refs.modal || this.$el || null,\n relatedTarget: null,\n trigger: null\n }, options), {}, {\n // Options that can't be overridden\n vueTarget: this,\n componentId: this.modalId\n }));\n },\n // Public method to show modal\n show: function show() {\n if (this.isVisible || this.isOpening) {\n // If already open, or in the process of opening, do nothing\n\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next */\n\n\n if (this.isClosing) {\n // If we are in the process of closing, wait until hidden before re-opening\n\n /* istanbul ignore next */\n this.$once(EVENT_NAME_HIDDEN, this.show);\n /* istanbul ignore next */\n\n return;\n }\n\n this.isOpening = true; // Set the element to return focus to when closed\n\n this.$_returnFocus = this.$_returnFocus || this.getActiveElement();\n var showEvent = this.buildEvent(EVENT_NAME_SHOW, {\n cancelable: true\n });\n this.emitEvent(showEvent); // Don't show if canceled\n\n if (showEvent.defaultPrevented || this.isVisible) {\n this.isOpening = false; // Ensure the v-model reflects the current state\n\n this.updateModel(false);\n return;\n } // Show the modal\n\n\n this.doShow();\n },\n // Public method to hide modal\n hide: function hide() {\n var trigger = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (!this.isVisible || this.isClosing) {\n /* istanbul ignore next */\n return;\n }\n\n this.isClosing = true;\n var hideEvent = this.buildEvent(EVENT_NAME_HIDE, {\n cancelable: trigger !== TRIGGER_FORCE,\n trigger: trigger || null\n }); // We emit specific event for one of the three built-in buttons\n\n if (trigger === BUTTON_OK) {\n this.$emit(EVENT_NAME_OK, hideEvent);\n } else if (trigger === BUTTON_CANCEL) {\n this.$emit(EVENT_NAME_CANCEL, hideEvent);\n } else if (trigger === BUTTON_CLOSE) {\n this.$emit(EVENT_NAME_CLOSE, hideEvent);\n }\n\n this.emitEvent(hideEvent); // Hide if not canceled\n\n if (hideEvent.defaultPrevented || !this.isVisible) {\n this.isClosing = false; // Ensure v-model reflects current state\n\n this.updateModel(true);\n return;\n } // Stop observing for content changes\n\n\n this.setObserver(false); // Trigger the hide transition\n\n this.isVisible = false; // Update the v-model\n\n this.updateModel(false);\n },\n // Public method to toggle modal visibility\n toggle: function toggle(triggerEl) {\n if (triggerEl) {\n this.$_returnFocus = triggerEl;\n }\n\n if (this.isVisible) {\n this.hide(TRIGGER_TOGGLE);\n } else {\n this.show();\n }\n },\n // Private method to get the current document active element\n getActiveElement: function getActiveElement$1() {\n // Returning focus to `document.body` may cause unwanted scrolls,\n // so we exclude setting focus on body\n var activeElement = getActiveElement(IS_BROWSER ? [document.body] : []); // Preset the fallback return focus value if it is not set\n // `document.activeElement` should be the trigger element that was clicked or\n // in the case of using the v-model, which ever element has current focus\n // Will be overridden by some commands such as toggle, etc.\n // Note: On IE 11, `document.activeElement` may be `null`\n // So we test it for truthiness first\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3206\n\n\n return activeElement && activeElement.focus ? activeElement : null;\n },\n // Private method to finish showing modal\n doShow: function doShow() {\n var _this = this;\n\n /* istanbul ignore next: commenting out for now until we can test stacking */\n if (modalManager.modalsAreOpen && this.noStacking) {\n // If another modal(s) is already open, wait for it(them) to close\n this.listenOnRootOnce(getRootEventName(NAME_MODAL, EVENT_NAME_HIDDEN), this.doShow);\n return;\n }\n\n modalManager.registerModal(this); // Place modal in DOM\n\n this.isHidden = false;\n this.$nextTick(function () {\n // We do this in `$nextTick()` to ensure the modal is in DOM first\n // before we show it\n _this.isVisible = true;\n _this.isOpening = false; // Update the v-model\n\n _this.updateModel(true);\n\n _this.$nextTick(function () {\n // Observe changes in modal content and adjust if necessary\n // In a `$nextTick()` in case modal content is lazy\n _this.setObserver(true);\n });\n });\n },\n // Transition handlers\n onBeforeEnter: function onBeforeEnter() {\n this.isTransitioning = true;\n this.setResizeEvent(true);\n },\n onEnter: function onEnter() {\n var _this2 = this;\n\n this.isBlock = true; // We add the `show` class 1 frame later\n // `requestAF()` runs the callback before the next repaint, so we need\n // two calls to guarantee the next frame has been rendered\n\n requestAF(function () {\n requestAF(function () {\n _this2.isShow = true;\n });\n });\n },\n onAfterEnter: function onAfterEnter() {\n var _this3 = this;\n\n this.checkModalOverflow();\n this.isTransitioning = false; // We use `requestAF()` to allow transition hooks to complete\n // before passing control over to the other handlers\n // This will allow users to not have to use `$nextTick()` or `requestAF()`\n // when trying to pre-focus an element\n\n requestAF(function () {\n _this3.emitEvent(_this3.buildEvent(EVENT_NAME_SHOWN));\n\n _this3.setEnforceFocus(true);\n\n _this3.$nextTick(function () {\n // Delayed in a `$nextTick()` to allow users time to pre-focus\n // an element if the wish\n _this3.focusFirst();\n });\n });\n },\n onBeforeLeave: function onBeforeLeave() {\n this.isTransitioning = true;\n this.setResizeEvent(false);\n this.setEnforceFocus(false);\n },\n onLeave: function onLeave() {\n // Remove the 'show' class\n this.isShow = false;\n },\n onAfterLeave: function onAfterLeave() {\n var _this4 = this;\n\n this.isBlock = false;\n this.isTransitioning = false;\n this.isModalOverflowing = false;\n this.isHidden = true;\n this.$nextTick(function () {\n _this4.isClosing = false;\n modalManager.unregisterModal(_this4);\n\n _this4.returnFocusTo(); // TODO: Need to find a way to pass the `trigger` property\n // to the `hidden` event, not just only the `hide` event\n\n\n _this4.emitEvent(_this4.buildEvent(EVENT_NAME_HIDDEN));\n });\n },\n emitEvent: function emitEvent(bvEvent) {\n var type = bvEvent.type; // We emit on `$root` first in case a global listener wants to cancel\n // the event first before the instance emits its event\n\n this.emitOnRoot(getRootEventName(NAME_MODAL, type), bvEvent, bvEvent.componentId);\n this.$emit(type, bvEvent);\n },\n // UI event handlers\n onDialogMousedown: function onDialogMousedown() {\n var _this5 = this;\n\n // Watch to see if the matching mouseup event occurs outside the dialog\n // And if it does, cancel the clickOut handler\n var modal = this.$refs.modal;\n\n var onceModalMouseup = function onceModalMouseup(event) {\n eventOff(modal, 'mouseup', onceModalMouseup, EVENT_OPTIONS_NO_CAPTURE);\n\n if (event.target === modal) {\n _this5.ignoreBackdropClick = true;\n }\n };\n\n eventOn(modal, 'mouseup', onceModalMouseup, EVENT_OPTIONS_NO_CAPTURE);\n },\n onClickOut: function onClickOut(event) {\n if (this.ignoreBackdropClick) {\n // Click was initiated inside the modal content, but finished outside.\n // Set by the above onDialogMousedown handler\n this.ignoreBackdropClick = false;\n return;\n } // Do nothing if not visible, backdrop click disabled, or element\n // that generated click event is no longer in document body\n\n\n if (!this.isVisible || this.noCloseOnBackdrop || !contains(document.body, event.target)) {\n return;\n } // If backdrop clicked, hide modal\n\n\n if (!contains(this.$refs.content, event.target)) {\n this.hide(TRIGGER_BACKDROP);\n }\n },\n onOk: function onOk() {\n this.hide(BUTTON_OK);\n },\n onCancel: function onCancel() {\n this.hide(BUTTON_CANCEL);\n },\n onClose: function onClose() {\n this.hide(BUTTON_CLOSE);\n },\n onEsc: function onEsc(event) {\n // If ESC pressed, hide modal\n if (event.keyCode === CODE_ESC && this.isVisible && !this.noCloseOnEsc) {\n this.hide(TRIGGER_ESC);\n }\n },\n // Document focusin listener\n focusHandler: function focusHandler(event) {\n // If focus leaves modal content, bring it back\n var content = this.$refs.content;\n var target = event.target;\n\n if (this.noEnforceFocus || !this.isTop || !this.isVisible || !content || document === target || contains(content, target) || this.computeIgnoreEnforceFocusSelector && closest(this.computeIgnoreEnforceFocusSelector, target, true)) {\n return;\n }\n\n var tabables = getTabables(this.$refs.content);\n var bottomTrap = this.$refs['bottom-trap'];\n var topTrap = this.$refs['top-trap'];\n\n if (bottomTrap && target === bottomTrap) {\n // If user pressed TAB out of modal into our bottom trab trap element\n // Find the first tabable element in the modal content and focus it\n if (attemptFocus(tabables[0])) {\n // Focus was successful\n return;\n }\n } else if (topTrap && target === topTrap) {\n // If user pressed CTRL-TAB out of modal and into our top tab trap element\n // Find the last tabable element in the modal content and focus it\n if (attemptFocus(tabables[tabables.length - 1])) {\n // Focus was successful\n return;\n }\n } // Otherwise focus the modal content container\n\n\n attemptFocus(content, {\n preventScroll: true\n });\n },\n // Turn on/off focusin listener\n setEnforceFocus: function setEnforceFocus(on) {\n this.listenDocument(on, 'focusin', this.focusHandler);\n },\n // Resize listener\n setResizeEvent: function setResizeEvent(on) {\n this.listenWindow(on, 'resize', this.checkModalOverflow);\n this.listenWindow(on, 'orientationchange', this.checkModalOverflow);\n },\n // Root listener handlers\n showHandler: function showHandler(id, triggerEl) {\n if (id === this.modalId) {\n this.$_returnFocus = triggerEl || this.getActiveElement();\n this.show();\n }\n },\n hideHandler: function hideHandler(id) {\n if (id === this.modalId) {\n this.hide('event');\n }\n },\n toggleHandler: function toggleHandler(id, triggerEl) {\n if (id === this.modalId) {\n this.toggle(triggerEl);\n }\n },\n modalListener: function modalListener(bvEvent) {\n // If another modal opens, close this one if stacking not permitted\n if (this.noStacking && bvEvent.vueTarget !== this) {\n this.hide();\n }\n },\n // Focus control handlers\n focusFirst: function focusFirst() {\n var _this6 = this;\n\n // Don't try and focus if we are SSR\n if (IS_BROWSER) {\n requestAF(function () {\n var modal = _this6.$refs.modal;\n var content = _this6.$refs.content;\n\n var activeElement = _this6.getActiveElement(); // If the modal contains the activeElement, we don't do anything\n\n\n if (modal && content && !(activeElement && contains(content, activeElement))) {\n var ok = _this6.$refs['ok-button'];\n var cancel = _this6.$refs['cancel-button'];\n var close = _this6.$refs['close-button']; // Focus the appropriate button or modal content wrapper\n\n var autoFocus = _this6.autoFocusButton;\n /* istanbul ignore next */\n\n var el = autoFocus === BUTTON_OK && ok ? ok.$el || ok : autoFocus === BUTTON_CANCEL && cancel ? cancel.$el || cancel : autoFocus === BUTTON_CLOSE && close ? close.$el || close : content; // Focus the element\n\n attemptFocus(el);\n\n if (el === content) {\n // Make sure top of modal is showing (if longer than the viewport)\n _this6.$nextTick(function () {\n modal.scrollTop = 0;\n });\n }\n }\n });\n }\n },\n returnFocusTo: function returnFocusTo() {\n // Prefer `returnFocus` prop over event specified\n // `return_focus` value\n var el = this.returnFocus || this.$_returnFocus || null;\n this.$_returnFocus = null;\n this.$nextTick(function () {\n // Is el a string CSS selector?\n el = isString(el) ? select(el) : el;\n\n if (el) {\n // Possibly could be a component reference\n el = el.$el || el;\n attemptFocus(el);\n }\n });\n },\n checkModalOverflow: function checkModalOverflow() {\n if (this.isVisible) {\n var modal = this.$refs.modal;\n this.isModalOverflowing = modal.scrollHeight > document.documentElement.clientHeight;\n }\n },\n makeModal: function makeModal(h) {\n // Modal header\n var $header = h();\n\n if (!this.hideHeader) {\n // TODO: Rename slot to `header` and deprecate `modal-header`\n var $modalHeader = this.normalizeSlot(SLOT_NAME_MODAL_HEADER, this.slotScope);\n\n if (!$modalHeader) {\n var $closeButton = h();\n\n if (!this.hideHeaderClose) {\n $closeButton = h(BButtonClose, {\n props: {\n content: this.headerCloseContent,\n disabled: this.isTransitioning,\n ariaLabel: this.headerCloseLabel,\n textVariant: this.headerCloseVariant || this.headerTextVariant\n },\n on: {\n click: this.onClose\n },\n ref: 'close-button'\n }, // TODO: Rename slot to `header-close` and deprecate `modal-header-close`\n [this.normalizeSlot(SLOT_NAME_MODAL_HEADER_CLOSE)]);\n }\n\n $modalHeader = [h(this.titleTag, {\n staticClass: 'modal-title',\n class: this.titleClasses,\n attrs: {\n id: this.modalTitleId\n },\n // TODO: Rename slot to `title` and deprecate `modal-title`\n domProps: this.hasNormalizedSlot(SLOT_NAME_MODAL_TITLE) ? {} : htmlOrText(this.titleHtml, this.title)\n }, // TODO: Rename slot to `title` and deprecate `modal-title`\n this.normalizeSlot(SLOT_NAME_MODAL_TITLE, this.slotScope)), $closeButton];\n }\n\n $header = h(this.headerTag, {\n staticClass: 'modal-header',\n class: this.headerClasses,\n attrs: {\n id: this.modalHeaderId\n },\n ref: 'header'\n }, [$modalHeader]);\n } // Modal body\n\n\n var $body = h('div', {\n staticClass: 'modal-body',\n class: this.bodyClasses,\n attrs: {\n id: this.modalBodyId\n },\n ref: 'body'\n }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope)); // Modal footer\n\n var $footer = h();\n\n if (!this.hideFooter) {\n // TODO: Rename slot to `footer` and deprecate `modal-footer`\n var $modalFooter = this.normalizeSlot(SLOT_NAME_MODAL_FOOTER, this.slotScope);\n\n if (!$modalFooter) {\n var $cancelButton = h();\n\n if (!this.okOnly) {\n $cancelButton = h(BButton, {\n props: {\n variant: this.cancelVariant,\n size: this.buttonSize,\n disabled: this.cancelDisabled || this.busy || this.isTransitioning\n },\n // TODO: Rename slot to `cancel-button` and deprecate `modal-cancel`\n domProps: this.hasNormalizedSlot(SLOT_NAME_MODAL_CANCEL) ? {} : htmlOrText(this.cancelTitleHtml, this.cancelTitle),\n on: {\n click: this.onCancel\n },\n ref: 'cancel-button'\n }, // TODO: Rename slot to `cancel-button` and deprecate `modal-cancel`\n this.normalizeSlot(SLOT_NAME_MODAL_CANCEL));\n }\n\n var $okButton = h(BButton, {\n props: {\n variant: this.okVariant,\n size: this.buttonSize,\n disabled: this.okDisabled || this.busy || this.isTransitioning\n },\n // TODO: Rename slot to `ok-button` and deprecate `modal-ok`\n domProps: this.hasNormalizedSlot(SLOT_NAME_MODAL_OK) ? {} : htmlOrText(this.okTitleHtml, this.okTitle),\n on: {\n click: this.onOk\n },\n ref: 'ok-button'\n }, // TODO: Rename slot to `ok-button` and deprecate `modal-ok`\n this.normalizeSlot(SLOT_NAME_MODAL_OK));\n $modalFooter = [$cancelButton, $okButton];\n }\n\n $footer = h(this.footerTag, {\n staticClass: 'modal-footer',\n class: this.footerClasses,\n attrs: {\n id: this.modalFooterId\n },\n ref: 'footer'\n }, [$modalFooter]);\n } // Assemble modal content\n\n\n var $modalContent = h('div', {\n staticClass: 'modal-content',\n class: this.contentClass,\n attrs: {\n id: this.modalContentId,\n tabindex: '-1'\n },\n ref: 'content'\n }, [$header, $body, $footer]); // Tab traps to prevent page from scrolling to next element in\n // tab index during enforce-focus tab cycle\n\n var $tabTrapTop = h();\n var $tabTrapBottom = h();\n\n if (this.isVisible && !this.noEnforceFocus) {\n $tabTrapTop = h('span', {\n attrs: {\n tabindex: '0'\n },\n ref: 'top-trap'\n });\n $tabTrapBottom = h('span', {\n attrs: {\n tabindex: '0'\n },\n ref: 'bottom-trap'\n });\n } // Modal dialog wrapper\n\n\n var $modalDialog = h('div', {\n staticClass: 'modal-dialog',\n class: this.dialogClasses,\n on: {\n mousedown: this.onDialogMousedown\n },\n ref: 'dialog'\n }, [$tabTrapTop, $modalContent, $tabTrapBottom]); // Modal\n\n var $modal = h('div', {\n staticClass: 'modal',\n class: this.modalClasses,\n style: this.modalStyles,\n attrs: this.computedModalAttrs,\n on: {\n keydown: this.onEsc,\n click: this.onClickOut\n },\n directives: [{\n name: 'show',\n value: this.isVisible\n }],\n ref: 'modal'\n }, [$modalDialog]); // Wrap modal in transition\n // Sadly, we can't use `BVTransition` here due to the differences in\n // transition durations for `.modal` and `.modal-dialog`\n // At least until https://github.com/vuejs/vue/issues/9986 is resolved\n\n $modal = h('transition', {\n props: {\n enterClass: '',\n enterToClass: '',\n enterActiveClass: '',\n leaveClass: '',\n leaveActiveClass: '',\n leaveToClass: ''\n },\n on: {\n beforeEnter: this.onBeforeEnter,\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n beforeLeave: this.onBeforeLeave,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [$modal]); // Modal backdrop\n\n var $backdrop = h();\n\n if (!this.hideBackdrop && this.isVisible) {\n $backdrop = h('div', {\n staticClass: 'modal-backdrop',\n attrs: {\n id: this.modalBackdropId\n }\n }, // TODO: Rename slot to `backdrop` and deprecate `modal-backdrop`\n this.normalizeSlot(SLOT_NAME_MODAL_BACKDROP));\n }\n\n $backdrop = h(BVTransition, {\n props: {\n noFade: this.noFade\n }\n }, [$backdrop]); // Assemble modal and backdrop in an outer <div>\n\n return h('div', {\n style: this.modalOuterStyle,\n attrs: this.computedAttrs,\n key: \"modal-outer-\".concat(this[COMPONENT_UID_KEY])\n }, [$modal, $backdrop]);\n }\n },\n render: function render(h) {\n if (this.static) {\n return this.lazy && this.isHidden ? h() : this.makeModal(h);\n } else {\n return this.isHidden ? h() : h(BVTransporter, [this.makeModal(h)]);\n }\n }\n });\n\n var ROOT_ACTION_EVENT_NAME_SHOW = getRootActionEventName(NAME_MODAL, EVENT_NAME_SHOW); // Prop name we use to store info on root element\n\n var PROPERTY = '__bv_modal_directive__';\n\n var getTarget = function getTarget(_ref) {\n var _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? {} : _ref$modifiers,\n arg = _ref.arg,\n value = _ref.value;\n // Try value, then arg, otherwise pick last modifier\n return isString(value) ? value : isString(arg) ? arg : keys(modifiers).reverse()[0];\n };\n\n var getTriggerElement = function getTriggerElement(el) {\n // If root element is a dropdown-item or nav-item, we\n // need to target the inner link or button instead\n return el && matches(el, '.dropdown-menu > li, li.nav-item') ? select('a, button', el) || el : el;\n };\n\n var setRole = function setRole(trigger) {\n // Ensure accessibility on non button elements\n if (trigger && trigger.tagName !== 'BUTTON') {\n // Only set a role if the trigger element doesn't have one\n if (!hasAttr(trigger, 'role')) {\n setAttr(trigger, 'role', 'button');\n } // Add a tabindex is not a button or link, and tabindex is not provided\n\n\n if (trigger.tagName !== 'A' && !hasAttr(trigger, 'tabindex')) {\n setAttr(trigger, 'tabindex', '0');\n }\n }\n };\n\n var bind = function bind(el, binding, vnode) {\n var target = getTarget(binding);\n var trigger = getTriggerElement(el);\n\n if (target && trigger) {\n var handler = function handler(event) {\n // `currentTarget` is the element with the listener on it\n var currentTarget = event.currentTarget;\n\n if (!isDisabled(currentTarget)) {\n var type = event.type;\n var key = event.keyCode; // Open modal only if trigger is not disabled\n\n if (type === 'click' || type === 'keydown' && (key === CODE_ENTER || key === CODE_SPACE)) {\n getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_SHOW, target, currentTarget);\n }\n }\n };\n\n el[PROPERTY] = {\n handler: handler,\n target: target,\n trigger: trigger\n }; // If element is not a button, we add `role=\"button\"` for accessibility\n\n setRole(trigger); // Listen for click events\n\n eventOn(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n\n if (trigger.tagName !== 'BUTTON' && getAttr(trigger, 'role') === 'button') {\n // If trigger isn't a button but has role button,\n // we also listen for `keydown.space` && `keydown.enter`\n eventOn(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n }\n };\n\n var unbind = function unbind(el) {\n var oldProp = el[PROPERTY] || {};\n var trigger = oldProp.trigger;\n var handler = oldProp.handler;\n\n if (trigger && handler) {\n eventOff(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n\n delete el[PROPERTY];\n };\n\n var componentUpdated = function componentUpdated(el, binding, vnode) {\n var oldProp = el[PROPERTY] || {};\n var target = getTarget(binding);\n var trigger = getTriggerElement(el);\n\n if (target !== oldProp.target || trigger !== oldProp.trigger) {\n // We bind and rebind if the target or trigger changes\n unbind(el);\n bind(el, binding, vnode);\n } // If trigger element is not a button, ensure `role=\"button\"`\n // is still set for accessibility\n\n\n setRole(trigger);\n };\n\n var updated = function updated() {};\n /*\n * Export our directive\n */\n\n\n var VBModal = {\n inserted: componentUpdated,\n updated: updated,\n componentUpdated: componentUpdated,\n unbind: unbind\n };\n\n var PROP_NAME$1 = '$bvModal';\n var PROP_NAME_PRIV$1 = '_bv__modal'; // Base modal props that are allowed\n // Some may be ignored or overridden on some message boxes\n // Prop ID is allowed, but really only should be used for testing\n // We need to add it in explicitly as it comes from the `idMixin`\n\n var BASE_PROPS$1 = ['id'].concat(_toConsumableArray$1(keys(omit(props$V, ['busy', 'lazy', 'noStacking', 'static', 'visible'])))); // Fallback event resolver (returns undefined)\n\n var defaultResolver = function defaultResolver() {}; // Map prop names to modal slot names\n\n\n var propsToSlots$1 = {\n msgBoxContent: 'default',\n title: 'modal-title',\n okTitle: 'modal-ok',\n cancelTitle: 'modal-cancel'\n }; // --- Helper methods ---\n // Method to filter only recognized props that are not undefined\n\n var filterOptions$1 = function filterOptions(options) {\n return BASE_PROPS$1.reduce(function (memo, key) {\n if (!isUndefined(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n }; // Method to install `$bvModal` VM injection\n\n\n var plugin$1 = function plugin(Vue) {\n // Create a private sub-component that extends BModal\n // which self-destructs after hidden\n // @vue/component\n var BMsgBox = Vue.extend({\n name: NAME_MSG_BOX,\n extends: BModal,\n mixins: [useParentMixin],\n destroyed: function destroyed() {\n // Make sure we not in document any more\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Self destruct handler\n var handleDestroy = function handleDestroy() {\n _this.$nextTick(function () {\n // In a `requestAF()` to release control back to application\n requestAF(function () {\n _this.$destroy();\n });\n });\n }; // Self destruct if parent destroyed\n\n\n this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy); // Self destruct after hidden\n\n this.$once(EVENT_NAME_HIDDEN, handleDestroy); // Self destruct on route change\n\n /* istanbul ignore if */\n\n if (this.$router && this.$route) {\n // Destroy ourselves if route changes\n\n /* istanbul ignore next */\n this.$once(HOOK_EVENT_NAME_BEFORE_DESTROY, this.$watch('$router', handleDestroy));\n } // Show the `BMsgBox`\n\n\n this.show();\n }\n }); // Method to generate the on-demand modal message box\n // Returns a promise that resolves to a value returned by the resolve\n\n var asyncMsgBox = function asyncMsgBox(parent, props) {\n var resolver = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultResolver;\n\n if (warnNotClient(PROP_NAME$1) || warnNoPromiseSupport(PROP_NAME$1)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BMsgBox` component\n // We set parent as the local VM so these modals can emit events on\n // the app `$root`, as needed by things like tooltips and popovers\n // And it helps to ensure `BMsgBox` is destroyed when parent is destroyed\n\n\n var msgBox = createNewChildComponent(parent, BMsgBox, {\n // Preset the prop values\n propsData: _objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, filterOptions$1(getComponentConfig(NAME_MODAL))), {}, {\n // Defaults that user can override\n hideHeaderClose: true,\n hideHeader: !(props.title || props.titleHtml)\n }, omit(props, keys(propsToSlots$1))), {}, {\n // Props that can't be overridden\n lazy: false,\n busy: false,\n visible: false,\n noStacking: false,\n noEnforceFocus: false\n })\n }); // Convert certain props to scoped slots\n\n keys(propsToSlots$1).forEach(function (prop) {\n if (!isUndefined(props[prop])) {\n // Can be a string, or array of VNodes.\n // Alternatively, user can use HTML version of prop to pass an HTML string.\n msgBox.$slots[propsToSlots$1[prop]] = concat(props[prop]);\n }\n }); // Return a promise that resolves when hidden, or rejects on destroyed\n\n return new Promise(function (resolve, reject) {\n var resolved = false;\n msgBox.$once(HOOK_EVENT_NAME_DESTROYED, function () {\n if (!resolved) {\n /* istanbul ignore next */\n reject(new Error('BootstrapVue MsgBox destroyed before resolve'));\n }\n });\n msgBox.$on(EVENT_NAME_HIDE, function (bvModalEvent) {\n if (!bvModalEvent.defaultPrevented) {\n var result = resolver(bvModalEvent); // If resolver didn't cancel hide, we resolve\n\n if (!bvModalEvent.defaultPrevented) {\n resolved = true;\n resolve(result);\n }\n }\n }); // Create a mount point (a DIV) and mount the msgBo which will trigger it to show\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n msgBox.$mount(div);\n });\n }; // Private utility method to open a user defined message box and returns a promise.\n // Not to be used directly by consumers, as this method may change calling syntax\n\n\n var makeMsgBox = function makeMsgBox(parent, content) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var resolver = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (!content || warnNoPromiseSupport(PROP_NAME$1) || warnNotClient(PROP_NAME$1) || !isFunction$1(resolver)) {\n /* istanbul ignore next */\n return;\n }\n\n return asyncMsgBox(parent, _objectSpread2$3(_objectSpread2$3({}, filterOptions$1(options)), {}, {\n msgBoxContent: content\n }), resolver);\n }; // BvModal instance class\n\n\n var BvModal = /*#__PURE__*/function () {\n function BvModal(vm) {\n _classCallCheck(this, BvModal);\n\n // Assign the new properties to this instance\n assign(this, {\n _vm: vm,\n _root: getEventRoot(vm)\n }); // Set these properties as read-only and non-enumerable\n\n defineProperties(this, {\n _vm: readonlyDescriptor(),\n _root: readonlyDescriptor()\n });\n } // --- Instance methods ---\n // Show modal with the specified ID args are for future use\n\n\n _createClass(BvModal, [{\n key: \"show\",\n value: function show(id) {\n if (id && this._root) {\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, [getRootActionEventName(NAME_MODAL, 'show'), id].concat(args));\n }\n } // Hide modal with the specified ID args are for future use\n\n }, {\n key: \"hide\",\n value: function hide(id) {\n if (id && this._root) {\n var _this$_root2;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (_this$_root2 = this._root).$emit.apply(_this$_root2, [getRootActionEventName(NAME_MODAL, 'hide'), id].concat(args));\n }\n } // The following methods require Promise support!\n // IE 11 and others do not support Promise natively, so users\n // should have a Polyfill loaded (which they need anyways for IE 11 support)\n // Open a message box with OK button only and returns a promise\n\n }, {\n key: \"msgBoxOk\",\n value: function msgBoxOk(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Pick the modal props we support from options\n var props = _objectSpread2$3(_objectSpread2$3({}, options), {}, {\n // Add in overrides and our content prop\n okOnly: true,\n okDisabled: false,\n hideFooter: false,\n msgBoxContent: message\n });\n\n return makeMsgBox(this._vm, message, props, function () {\n // Always resolve to true for OK\n return true;\n });\n } // Open a message box modal with OK and CANCEL buttons\n // and returns a promise\n\n }, {\n key: \"msgBoxConfirm\",\n value: function msgBoxConfirm(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Set the modal props we support from options\n var props = _objectSpread2$3(_objectSpread2$3({}, options), {}, {\n // Add in overrides and our content prop\n okOnly: false,\n okDisabled: false,\n cancelDisabled: false,\n hideFooter: false\n });\n\n return makeMsgBox(this._vm, message, props, function (bvModalEvent) {\n var trigger = bvModalEvent.trigger;\n return trigger === 'ok' ? true : trigger === 'cancel' ? false : null;\n });\n }\n }]);\n\n return BvModal;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvModal` for each VM\n this[PROP_NAME_PRIV$1] = new BvModal(this);\n }\n }); // Define our read-only `$bvModal` instance property\n // Placed in an if just in case in HMR mode\n\n if (!hasOwnProperty(Vue.prototype, PROP_NAME$1)) {\n defineProperty$1(Vue.prototype, PROP_NAME$1, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV$1]) {\n warn(\"\\\"\".concat(PROP_NAME$1, \"\\\" must be accessed from a Vue instance \\\"this\\\" context.\"), NAME_MODAL);\n }\n\n return this[PROP_NAME_PRIV$1];\n }\n });\n }\n };\n\n var BVModalPlugin = /*#__PURE__*/pluginFactory({\n plugins: {\n plugin: plugin$1\n }\n });\n\n var ModalPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BModal: BModal\n },\n directives: {\n VBModal: VBModal\n },\n // $bvModal injection\n plugins: {\n BVModalPlugin: BVModalPlugin\n }\n });\n\n var computeJustifyContent$1 = function computeJustifyContent(value) {\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return \"justify-content-\".concat(value);\n }; // --- Props ---\n\n\n var props$U = makePropsConfigurable({\n align: makeProp(PROP_TYPE_STRING),\n // Set to `true` if placing in a card header\n cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n fill: makeProp(PROP_TYPE_BOOLEAN, false),\n justified: makeProp(PROP_TYPE_BOOLEAN, false),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'ul'),\n vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n }, NAME_NAV); // --- Main component ---\n // @vue/component\n\n var BNav = /*#__PURE__*/extend({\n name: NAME_NAV,\n functional: true,\n props: props$U,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tabs = props.tabs,\n pills = props.pills,\n vertical = props.vertical,\n align = props.align,\n cardHeader = props.cardHeader;\n return h(props.tag, a(data, {\n staticClass: 'nav',\n class: (_class = {\n 'nav-tabs': tabs,\n 'nav-pills': pills && !tabs,\n 'card-header-tabs': !vertical && cardHeader && tabs,\n 'card-header-pills': !vertical && cardHeader && pills && !tabs,\n 'flex-column': vertical,\n 'nav-fill': !vertical && props.fill,\n 'nav-justified': !vertical && props.justified\n }, _defineProperty(_class, computeJustifyContent$1(align), !vertical && align), _defineProperty(_class, \"small\", props.small), _class)\n }), children);\n }\n });\n\n var linkProps$2 = omit(props$2f, ['event', 'routerTag']);\n var props$T = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, linkProps$2), {}, {\n linkAttrs: makeProp(PROP_TYPE_OBJECT, {}),\n linkClasses: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n })), NAME_NAV_ITEM); // --- Main component ---\n // @vue/component\n\n var BNavItem = /*#__PURE__*/extend({\n name: NAME_NAV_ITEM,\n functional: true,\n props: props$T,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n listeners = _ref.listeners,\n children = _ref.children;\n return h('li', a(omit(data, ['on']), {\n staticClass: 'nav-item'\n }), [h(BLink, {\n staticClass: 'nav-link',\n class: props.linkClasses,\n attrs: props.linkAttrs,\n props: pluckProps(linkProps$2, props),\n on: listeners\n }, children)]);\n }\n });\n\n var props$S = {}; // --- Main component ---\n // @vue/component\n\n var BNavText = /*#__PURE__*/extend({\n name: NAME_NAV_TEXT,\n functional: true,\n props: props$S,\n render: function render(h, _ref) {\n var data = _ref.data,\n children = _ref.children;\n return h('li', a(data, {\n staticClass: 'navbar-text'\n }), children);\n }\n });\n\n var formProps = omit(props$1I, ['inline']);\n var props$R = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, formProps), {}, {\n formClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n })), NAME_NAV_FORM); // --- Main component ---\n // @vue/component\n\n var BNavForm = /*#__PURE__*/extend({\n name: NAME_NAV_FORM,\n functional: true,\n props: props$R,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children,\n listeners = _ref.listeners;\n var $form = h(BForm, {\n class: props.formClass,\n props: _objectSpread2$3(_objectSpread2$3({}, pluckProps(formProps, props)), {}, {\n inline: true\n }),\n attrs: data.attrs,\n on: listeners\n }, children);\n return h('li', a(omit(data, ['attrs', 'on']), {\n staticClass: 'form-inline'\n }), [$form]);\n }\n });\n\n var props$Q = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$25), pick$1(props$1N, [].concat(_toConsumableArray$1(keys(props$1O)), ['html', 'lazy', 'menuClass', 'noCaret', 'role', 'text', 'toggleClass'])))), NAME_NAV_ITEM_DROPDOWN); // --- Main component ---\n // @vue/component\n\n var BNavItemDropdown = /*#__PURE__*/extend({\n name: NAME_NAV_ITEM_DROPDOWN,\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props: props$Q,\n computed: {\n toggleId: function toggleId() {\n return this.safeId('_BV_toggle_');\n },\n menuId: function menuId() {\n return this.safeId('_BV_toggle_menu_');\n },\n dropdownClasses: function dropdownClasses() {\n return [this.directionClass, this.boundaryClass, {\n show: this.visible\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n return [this.toggleClass, {\n 'dropdown-toggle-no-caret': this.noCaret\n }];\n }\n },\n render: function render(h) {\n var toggleId = this.toggleId,\n menuId = this.menuId,\n visible = this.visible,\n hide = this.hide;\n var $toggle = h(BLink, {\n staticClass: 'nav-link dropdown-toggle',\n class: this.toggleClasses,\n props: {\n href: \"#\".concat(this.id || ''),\n disabled: this.disabled\n },\n attrs: {\n id: toggleId,\n role: 'button',\n 'aria-haspopup': 'true',\n 'aria-expanded': visible ? 'true' : 'false',\n 'aria-controls': menuId\n },\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 }, [// TODO: The `text` slot is deprecated in favor of the `button-content` slot\n this.normalizeSlot([SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_TEXT]) || h('span', {\n domProps: htmlOrText(this.html, this.text)\n })]);\n var $menu = h('ul', {\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n attrs: {\n tabindex: '-1',\n 'aria-labelledby': toggleId,\n id: menuId\n },\n on: {\n keydown: this.onKeydown // Handle UP, DOWN and ESC\n\n },\n ref: 'menu'\n }, !this.lazy || visible ? this.normalizeSlot(SLOT_NAME_DEFAULT, {\n hide: hide\n }) : [h()]);\n return h('li', {\n staticClass: 'nav-item b-nav-dropdown dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [$toggle, $menu]);\n }\n });\n\n var NavPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BNav: BNav,\n BNavItem: BNavItem,\n BNavText: BNavText,\n BNavForm: BNavForm,\n BNavItemDropdown: BNavItemDropdown,\n BNavItemDd: BNavItemDropdown,\n BNavDropdown: BNavItemDropdown,\n BNavDd: BNavItemDropdown\n },\n plugins: {\n DropdownPlugin: DropdownPlugin\n }\n });\n\n var props$P = makePropsConfigurable({\n fixed: makeProp(PROP_TYPE_STRING),\n print: makeProp(PROP_TYPE_BOOLEAN, false),\n sticky: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'nav'),\n toggleable: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n type: makeProp(PROP_TYPE_STRING, 'light'),\n variant: makeProp(PROP_TYPE_STRING)\n }, NAME_NAVBAR); // --- Main component ---\n // @vue/component\n\n var BNavbar = /*#__PURE__*/extend({\n name: NAME_NAVBAR,\n mixins: [normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvNavbar: function getBvNavbar() {\n return _this;\n }\n };\n },\n props: props$P,\n computed: {\n breakpointClass: function breakpointClass() {\n var toggleable = this.toggleable;\n var xs = getBreakpoints()[0];\n var breakpoint = null;\n\n if (toggleable && isString(toggleable) && toggleable !== xs) {\n breakpoint = \"navbar-expand-\".concat(toggleable);\n } else if (toggleable === false) {\n breakpoint = 'navbar-expand';\n }\n\n return breakpoint;\n }\n },\n render: function render(h) {\n var _ref;\n\n var tag = this.tag,\n type = this.type,\n variant = this.variant,\n fixed = this.fixed;\n return h(tag, {\n staticClass: 'navbar',\n class: [(_ref = {\n 'd-print': this.print,\n 'sticky-top': this.sticky\n }, _defineProperty(_ref, \"navbar-\".concat(type), type), _defineProperty(_ref, \"bg-\".concat(variant), variant), _defineProperty(_ref, \"fixed-\".concat(fixed), fixed), _ref), this.breakpointClass],\n attrs: {\n role: isTag(tag, 'nav') ? null : 'navigation'\n }\n }, [this.normalizeSlot()]);\n }\n });\n\n var computeJustifyContent = function computeJustifyContent(value) {\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return \"justify-content-\".concat(value);\n }; // --- Props ---\n\n\n var props$O = makePropsConfigurable(pick$1(props$U, ['tag', 'fill', 'justified', 'align', 'small']), NAME_NAVBAR_NAV); // --- Main component ---\n // @vue/component\n\n var BNavbarNav = /*#__PURE__*/extend({\n name: NAME_NAVBAR_NAV,\n functional: true,\n props: props$O,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var align = props.align;\n return h(props.tag, a(data, {\n staticClass: 'navbar-nav',\n class: (_class = {\n 'nav-fill': props.fill,\n 'nav-justified': props.justified\n }, _defineProperty(_class, computeJustifyContent(align), align), _defineProperty(_class, \"small\", props.small), _class)\n }), children);\n }\n });\n\n var linkProps$1 = omit(props$2f, ['event', 'routerTag']);\n linkProps$1.href.default = undefined;\n linkProps$1.to.default = undefined;\n var props$N = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, linkProps$1), {}, {\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_NAVBAR_BRAND); // --- Main component ---\n // @vue/component\n\n var BNavbarBrand = /*#__PURE__*/extend({\n name: NAME_NAVBAR_BRAND,\n functional: true,\n props: props$N,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var isLink = props.to || props.href;\n var tag = isLink ? BLink : props.tag;\n return h(tag, a(data, {\n staticClass: 'navbar-brand',\n props: isLink ? pluckProps(linkProps$1, props) : {}\n }), children);\n }\n });\n\n var CLASS_NAME$1 = 'navbar-toggler';\n var ROOT_EVENT_NAME_STATE$1 = getRootEventName(NAME_COLLAPSE, 'state');\n var ROOT_EVENT_NAME_SYNC_STATE$1 = getRootEventName(NAME_COLLAPSE, 'sync-state'); // --- Props ---\n\n var props$M = makePropsConfigurable({\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n label: makeProp(PROP_TYPE_STRING, 'Toggle navigation'),\n target: makeProp(PROP_TYPE_ARRAY_STRING, undefined, true) // Required\n\n }, NAME_NAVBAR_TOGGLE); // --- Main component ---\n // @vue/component\n\n var BNavbarToggle = /*#__PURE__*/extend({\n name: NAME_NAVBAR_TOGGLE,\n directives: {\n VBToggle: VBToggle\n },\n mixins: [listenOnRootMixin, normalizeSlotMixin],\n props: props$M,\n data: function data() {\n return {\n toggleState: false\n };\n },\n created: function created() {\n this.listenOnRoot(ROOT_EVENT_NAME_STATE$1, this.handleStateEvent);\n this.listenOnRoot(ROOT_EVENT_NAME_SYNC_STATE$1, this.handleStateEvent);\n },\n methods: {\n onClick: function onClick(event) {\n if (!this.disabled) {\n // Emit courtesy `click` event\n this.$emit(EVENT_NAME_CLICK, event);\n }\n },\n handleStateEvent: function handleStateEvent(id, state) {\n // We listen for state events so that we can pass the\n // boolean expanded state to the default scoped slot\n if (id === this.target) {\n this.toggleState = state;\n }\n }\n },\n render: function render(h) {\n var disabled = this.disabled;\n return h('button', {\n staticClass: CLASS_NAME$1,\n class: {\n disabled: disabled\n },\n directives: [{\n name: 'VBToggle',\n value: this.target\n }],\n attrs: {\n type: 'button',\n disabled: disabled,\n 'aria-label': this.label\n },\n on: {\n click: this.onClick\n }\n }, [this.normalizeSlot(SLOT_NAME_DEFAULT, {\n expanded: this.toggleState\n }) || h('span', {\n staticClass: \"\".concat(CLASS_NAME$1, \"-icon\")\n })]);\n }\n });\n\n var NavbarPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BNavbar: BNavbar,\n BNavbarNav: BNavbarNav,\n BNavbarBrand: BNavbarBrand,\n BNavbarToggle: BNavbarToggle,\n BNavToggle: BNavbarToggle\n },\n plugins: {\n NavPlugin: NavPlugin,\n CollapsePlugin: CollapsePlugin,\n DropdownPlugin: DropdownPlugin\n }\n });\n\n var props$L = makePropsConfigurable({\n label: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING, 'status'),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n type: makeProp(PROP_TYPE_STRING, 'border'),\n variant: makeProp(PROP_TYPE_STRING)\n }, NAME_SPINNER); // --- Main component ---\n // @vue/component\n\n var BSpinner = /*#__PURE__*/extend({\n name: NAME_SPINNER,\n functional: true,\n props: props$L,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $label = normalizeSlot(SLOT_NAME_LABEL, {}, $scopedSlots, $slots) || props.label;\n\n if ($label) {\n $label = h('span', {\n staticClass: 'sr-only'\n }, $label);\n }\n\n return h(props.tag, a(data, {\n attrs: {\n role: $label ? props.role || 'status' : null,\n 'aria-hidden': $label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n }), [$label || h()]);\n }\n });\n\n var POSITION_COVER = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n }; // --- Props ---\n\n var props$K = makePropsConfigurable({\n // Alternative to variant, allowing a specific\n // CSS color to be applied to the overlay\n bgColor: makeProp(PROP_TYPE_STRING),\n blur: makeProp(PROP_TYPE_STRING, '2px'),\n fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n noCenter: makeProp(PROP_TYPE_BOOLEAN, false),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n // If `true, does not render the default slot\n // and switches to absolute positioning\n noWrap: makeProp(PROP_TYPE_BOOLEAN, false),\n opacity: makeProp(PROP_TYPE_NUMBER_STRING, 0.85, function (value) {\n var number = toFloat(value, 0);\n return number >= 0 && number <= 1;\n }),\n overlayTag: makeProp(PROP_TYPE_STRING, 'div'),\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n show: makeProp(PROP_TYPE_BOOLEAN, false),\n spinnerSmall: makeProp(PROP_TYPE_BOOLEAN, false),\n spinnerType: makeProp(PROP_TYPE_STRING, 'border'),\n spinnerVariant: makeProp(PROP_TYPE_STRING),\n variant: makeProp(PROP_TYPE_STRING, 'light'),\n wrapTag: makeProp(PROP_TYPE_STRING, 'div'),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING, 10)\n }, NAME_OVERLAY); // --- Main component ---\n // @vue/component\n\n var BOverlay = /*#__PURE__*/extend({\n name: NAME_OVERLAY,\n mixins: [normalizeSlotMixin],\n props: props$K,\n computed: {\n computedRounded: function computedRounded() {\n var rounded = this.rounded;\n return rounded === true || rounded === '' ? 'rounded' : !rounded ? '' : \"rounded-\".concat(rounded);\n },\n computedVariant: function computedVariant() {\n var variant = this.variant;\n return variant && !this.bgColor ? \"bg-\".concat(variant) : '';\n },\n slotScope: function slotScope() {\n return {\n spinnerType: this.spinnerType || null,\n spinnerVariant: this.spinnerVariant || null,\n spinnerSmall: this.spinnerSmall\n };\n }\n },\n methods: {\n defaultOverlayFn: function defaultOverlayFn(_ref) {\n var spinnerType = _ref.spinnerType,\n spinnerVariant = _ref.spinnerVariant,\n spinnerSmall = _ref.spinnerSmall;\n return this.$createElement(BSpinner, {\n props: {\n type: spinnerType,\n variant: spinnerVariant,\n small: spinnerSmall\n }\n });\n }\n },\n render: function render(h) {\n var _this = this;\n\n var show = this.show,\n fixed = this.fixed,\n noFade = this.noFade,\n noWrap = this.noWrap,\n slotScope = this.slotScope;\n var $overlay = h();\n\n if (show) {\n var $background = h('div', {\n staticClass: 'position-absolute',\n class: [this.computedVariant, this.computedRounded],\n style: _objectSpread2$3(_objectSpread2$3({}, POSITION_COVER), {}, {\n opacity: this.opacity,\n backgroundColor: this.bgColor || null,\n backdropFilter: this.blur ? \"blur(\".concat(this.blur, \")\") : null\n })\n });\n var $content = h('div', {\n staticClass: 'position-absolute',\n style: this.noCenter ?\n /* istanbul ignore next */\n _objectSpread2$3({}, POSITION_COVER) : {\n top: '50%',\n left: '50%',\n transform: 'translateX(-50%) translateY(-50%)'\n }\n }, [this.normalizeSlot(SLOT_NAME_OVERLAY, slotScope) || this.defaultOverlayFn(slotScope)]);\n $overlay = h(this.overlayTag, {\n staticClass: 'b-overlay',\n class: {\n 'position-absolute': !noWrap || noWrap && !fixed,\n 'position-fixed': noWrap && fixed\n },\n style: _objectSpread2$3(_objectSpread2$3({}, POSITION_COVER), {}, {\n zIndex: this.zIndex || 10\n }),\n on: {\n click: function click(event) {\n return _this.$emit(EVENT_NAME_CLICK, event);\n }\n },\n key: 'overlay'\n }, [$background, $content]);\n } // Wrap in a fade transition\n\n\n $overlay = h(BVTransition, {\n props: {\n noFade: noFade,\n appear: true\n },\n on: {\n 'after-enter': function afterEnter() {\n return _this.$emit(EVENT_NAME_SHOWN);\n },\n 'after-leave': function afterLeave() {\n return _this.$emit(EVENT_NAME_HIDDEN);\n }\n }\n }, [$overlay]);\n\n if (noWrap) {\n return $overlay;\n }\n\n return h(this.wrapTag, {\n staticClass: 'b-overlay-wrap position-relative',\n attrs: {\n 'aria-busy': show ? 'true' : null\n }\n }, noWrap ? [$overlay] : [this.normalizeSlot(), $overlay]);\n }\n });\n\n var OverlayPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BOverlay: BOverlay\n }\n });\n\n var _watch$6;\n // for `<b-pagination>` and `<b-pagination-nav>`\n // --- Constants ---\n\n var _makeModelMixin$4 = makeModelMixin('value', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: null,\n\n /* istanbul ignore next */\n validator: function validator(value) {\n if (!isNull(value) && toInteger(value, 0) < 1) {\n warn('\"v-model\" value must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }\n }),\n modelMixin$4 = _makeModelMixin$4.mixin,\n modelProps$4 = _makeModelMixin$4.props,\n MODEL_PROP_NAME$4 = _makeModelMixin$4.prop,\n MODEL_EVENT_NAME$4 = _makeModelMixin$4.event;\n\n var ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\n var DEFAULT_LIMIT = 5; // --- Helper methods ---\n // Make an array of N to N+X\n\n var makePageArray = function makePageArray(startNumber, numberOfPages) {\n return createArray(numberOfPages, function (_, i) {\n return {\n number: startNumber + i,\n classes: null\n };\n });\n }; // Sanitize the provided limit value (converting to a number)\n\n\n var sanitizeLimit = function sanitizeLimit(value) {\n var limit = toInteger(value) || 1;\n return limit < 1 ? DEFAULT_LIMIT : limit;\n }; // Sanitize the provided current page number (converting to a number)\n\n\n var sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n var page = toInteger(val) || 1;\n return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n }; // Links don't normally respond to SPACE, so we add that\n // functionality via this handler\n\n\n var onSpaceKey = function onSpaceKey(event) {\n if (event.keyCode === CODE_SPACE) {\n // Stop page from scrolling\n stopEvent(event, {\n immediatePropagation: true\n }); // Trigger the click event on the link\n\n event.currentTarget.click();\n return false;\n }\n }; // --- Props ---\n\n\n var props$J = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, modelProps$4), {}, {\n align: makeProp(PROP_TYPE_STRING, 'left'),\n ariaLabel: makeProp(PROP_TYPE_STRING, 'Pagination'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n ellipsisClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n ellipsisText: makeProp(PROP_TYPE_STRING, \"\\u2026\"),\n // '…'\n firstClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n firstNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n firstText: makeProp(PROP_TYPE_STRING, \"\\xAB\"),\n // '«'\n hideEllipsis: makeProp(PROP_TYPE_BOOLEAN, false),\n hideGotoEndButtons: makeProp(PROP_TYPE_BOOLEAN, false),\n labelFirstPage: makeProp(PROP_TYPE_STRING, 'Go to first page'),\n labelLastPage: makeProp(PROP_TYPE_STRING, 'Go to last page'),\n labelNextPage: makeProp(PROP_TYPE_STRING, 'Go to next page'),\n labelPage: makeProp(PROP_TYPE_FUNCTION_STRING, 'Go to page'),\n labelPrevPage: makeProp(PROP_TYPE_STRING, 'Go to previous page'),\n lastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n lastNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n lastText: makeProp(PROP_TYPE_STRING, \"\\xBB\"),\n // '»'\n limit: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_LIMIT,\n /* istanbul ignore next */\n function (value) {\n if (toInteger(value, 0) < 1) {\n warn('Prop \"limit\" must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }),\n nextClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n nextText: makeProp(PROP_TYPE_STRING, \"\\u203A\"),\n // '›'\n pageClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n prevClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n prevText: makeProp(PROP_TYPE_STRING, \"\\u2039\"),\n // '‹'\n size: makeProp(PROP_TYPE_STRING)\n })), 'pagination'); // --- Mixin ---\n // @vue/component\n\n var paginationMixin$1 = extend({\n mixins: [modelMixin$4, normalizeSlotMixin],\n props: props$J,\n data: function data() {\n // `-1` signifies no page initially selected\n var currentPage = toInteger(this[MODEL_PROP_NAME$4], 0);\n currentPage = currentPage > 0 ? currentPage : -1;\n return {\n currentPage: currentPage,\n localNumberOfPages: 1,\n localLimit: DEFAULT_LIMIT\n };\n },\n computed: {\n btnSize: function btnSize() {\n var size = this.size;\n return size ? \"pagination-\".concat(size) : '';\n },\n alignment: function alignment() {\n var align = this.align;\n\n if (align === 'center') {\n return 'justify-content-center';\n } else if (align === 'end' || align === 'right') {\n return 'justify-content-end';\n } else if (align === 'fill') {\n // The page-items will also have 'flex-fill' added\n // We add text centering to make the button appearance better in fill mode\n return 'text-center';\n }\n\n return '';\n },\n styleClass: function styleClass() {\n return this.pills ? 'b-pagination-pills' : '';\n },\n computedCurrentPage: function computedCurrentPage() {\n return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n },\n paginationParams: function paginationParams() {\n // Determine if we should show the the ellipsis\n var limit = this.localLimit,\n numberOfPages = this.localNumberOfPages,\n currentPage = this.computedCurrentPage,\n hideEllipsis = this.hideEllipsis,\n firstNumber = this.firstNumber,\n lastNumber = this.lastNumber;\n var showFirstDots = false;\n var showLastDots = false;\n var numberOfLinks = limit;\n var startNumber = 1;\n\n if (numberOfPages <= limit) {\n // Special case: Less pages available than the limit of displayed pages\n numberOfLinks = numberOfPages;\n } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || lastNumber) {\n showLastDots = true;\n numberOfLinks = limit - (firstNumber ? 0 : 1);\n }\n\n numberOfLinks = mathMin(numberOfLinks, limit);\n } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || firstNumber) {\n showFirstDots = true;\n numberOfLinks = limit - (lastNumber ? 0 : 1);\n }\n\n startNumber = numberOfPages - numberOfLinks + 1;\n } else {\n // We are somewhere in the middle of the page list\n if (limit > ELLIPSIS_THRESHOLD) {\n numberOfLinks = limit - (hideEllipsis ? 0 : 2);\n showFirstDots = !!(!hideEllipsis || firstNumber);\n showLastDots = !!(!hideEllipsis || lastNumber);\n }\n\n startNumber = currentPage - mathFloor(numberOfLinks / 2);\n } // Sanity checks\n\n /* istanbul ignore if */\n\n\n if (startNumber < 1) {\n startNumber = 1;\n showFirstDots = false;\n } else if (startNumber > numberOfPages - numberOfLinks) {\n startNumber = numberOfPages - numberOfLinks + 1;\n showLastDots = false;\n }\n\n if (showFirstDots && firstNumber && startNumber < 4) {\n numberOfLinks = numberOfLinks + 2;\n startNumber = 1;\n showFirstDots = false;\n }\n\n var lastPageNumber = startNumber + numberOfLinks - 1;\n\n if (showLastDots && lastNumber && lastPageNumber > numberOfPages - 3) {\n numberOfLinks = numberOfLinks + (lastPageNumber === numberOfPages - 2 ? 2 : 3);\n showLastDots = false;\n } // Special handling for lower limits (where ellipsis are never shown)\n\n\n if (limit <= ELLIPSIS_THRESHOLD) {\n if (firstNumber && startNumber === 1) {\n numberOfLinks = mathMin(numberOfLinks + 1, numberOfPages, limit + 1);\n } else if (lastNumber && numberOfPages === startNumber + numberOfLinks - 1) {\n startNumber = mathMax(startNumber - 1, 1);\n numberOfLinks = mathMin(numberOfPages - startNumber + 1, numberOfPages, limit + 1);\n }\n }\n\n numberOfLinks = mathMin(numberOfLinks, numberOfPages - startNumber + 1);\n return {\n showFirstDots: showFirstDots,\n showLastDots: showLastDots,\n numberOfLinks: numberOfLinks,\n startNumber: startNumber\n };\n },\n pageList: function pageList() {\n // Generates the pageList array\n var _this$paginationParam = this.paginationParams,\n numberOfLinks = _this$paginationParam.numberOfLinks,\n startNumber = _this$paginationParam.startNumber;\n var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n // So add classes to page links to hide them for XS breakpoint\n // Note: Ellipsis will also be hidden on XS screens\n // TODO: Make this visual limit configurable based on breakpoint(s)\n\n if (pages.length > 3) {\n var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n var classes = 'bv-d-xs-down-none';\n\n if (idx === 0) {\n // Keep leftmost 3 buttons visible when current page is first page\n for (var i = 3; i < pages.length; i++) {\n pages[i].classes = classes;\n }\n } else if (idx === pages.length - 1) {\n // Keep rightmost 3 buttons visible when current page is last page\n for (var _i = 0; _i < pages.length - 3; _i++) {\n pages[_i].classes = classes;\n }\n } else {\n // Hide all except current page, current page - 1 and current page + 1\n for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n // hide some left button(s)\n pages[_i2].classes = classes;\n }\n\n for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n // hide some right button(s)\n pages[_i3].classes = classes;\n }\n }\n }\n\n return pages;\n }\n },\n watch: (_watch$6 = {}, _defineProperty(_watch$6, MODEL_PROP_NAME$4, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n }\n }), _defineProperty(_watch$6, \"currentPage\", function currentPage(newValue, oldValue) {\n if (newValue !== oldValue) {\n // Emit `null` if no page selected\n this.$emit(MODEL_EVENT_NAME$4, newValue > 0 ? newValue : null);\n }\n }), _defineProperty(_watch$6, \"limit\", function limit(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localLimit = sanitizeLimit(newValue);\n }\n }), _watch$6),\n created: function created() {\n var _this = this;\n\n // Set our default values in data\n this.localLimit = sanitizeLimit(this.limit);\n this.$nextTick(function () {\n // Sanity check\n _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n });\n },\n methods: {\n handleKeyNav: function handleKeyNav(event) {\n var keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n /* istanbul ignore if */\n\n if (this.isNav) {\n // We disable left/right keyboard navigation in `<b-pagination-nav>`\n return;\n }\n\n if (keyCode === CODE_LEFT || keyCode === CODE_UP) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusFirst() : this.focusPrev();\n } else if (keyCode === CODE_RIGHT || keyCode === CODE_DOWN) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusLast() : this.focusNext();\n }\n },\n getButtons: function getButtons() {\n // Return only buttons that are visible\n return selectAll('button.page-link, a.page-link', this.$el).filter(function (btn) {\n return isVisible(btn);\n });\n },\n focusCurrent: function focusCurrent() {\n var _this2 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this2.getButtons().find(function (el) {\n return toInteger(getAttr(el, 'aria-posinset'), 0) === _this2.computedCurrentPage;\n });\n\n if (!attemptFocus(btn)) {\n // Fallback if current page is not in button list\n _this2.focusFirst();\n }\n });\n },\n focusFirst: function focusFirst() {\n var _this3 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this3.getButtons().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusLast: function focusLast() {\n var _this4 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this4.getButtons().reverse().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusPrev: function focusPrev() {\n var _this5 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this5.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index > 0 && !isDisabled(buttons[index - 1])) {\n attemptFocus(buttons[index - 1]);\n }\n });\n },\n focusNext: function focusNext() {\n var _this6 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this6.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index < buttons.length - 1 && !isDisabled(buttons[index + 1])) {\n attemptFocus(buttons[index + 1]);\n }\n });\n }\n },\n render: function render(h) {\n var _this7 = this;\n\n var _safeVueInstance = safeVueInstance(this),\n disabled = _safeVueInstance.disabled,\n labelPage = _safeVueInstance.labelPage,\n ariaLabel = _safeVueInstance.ariaLabel,\n isNav = _safeVueInstance.isNav,\n numberOfPages = _safeVueInstance.localNumberOfPages,\n currentPage = _safeVueInstance.computedCurrentPage;\n\n var pageNumbers = this.pageList.map(function (p) {\n return p.number;\n });\n var _this$paginationParam2 = this.paginationParams,\n showFirstDots = _this$paginationParam2.showFirstDots,\n showLastDots = _this$paginationParam2.showLastDots;\n var fill = this.align === 'fill';\n var $buttons = []; // Helper function and flag\n\n var isActivePage = function isActivePage(pageNumber) {\n return pageNumber === currentPage;\n };\n\n var noCurrentPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, btnClass, pageTest, key) {\n var isDisabled = disabled || isActivePage(pageTest) || noCurrentPage || linkTo < 1 || linkTo > numberOfPages;\n var pageNumber = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n var scope = {\n disabled: isDisabled,\n page: pageNumber,\n index: pageNumber - 1\n };\n var $btnContent = _this7.normalizeSlot(btnSlot, scope) || toString(btnText) || h();\n var $inner = h(isDisabled ? 'span' : isNav ? BLink : 'button', {\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !isDisabled && fill\n },\n props: isDisabled || !isNav ? {} : _this7.linkProps(linkTo),\n attrs: {\n role: isNav ? null : 'menuitem',\n type: isNav || isDisabled ? null : 'button',\n tabindex: isDisabled || isNav ? null : '-1',\n 'aria-label': ariaLabel,\n 'aria-controls': safeVueInstance(_this7).ariaControls || null,\n 'aria-disabled': isDisabled ? 'true' : null\n },\n on: isDisabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, linkTo);\n },\n keydown: onSpaceKey\n }\n }, [$btnContent]);\n return h('li', {\n key: key,\n staticClass: 'page-item',\n class: [{\n disabled: isDisabled,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !isDisabled\n }, btnClass],\n attrs: {\n role: isNav ? null : 'presentation',\n 'aria-hidden': isDisabled ? 'true' : null\n }\n }, [$inner]);\n }; // Ellipsis factory\n\n\n var makeEllipsis = function makeEllipsis(isLast) {\n return h('li', {\n staticClass: 'page-item',\n class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : '', _this7.ellipsisClass],\n attrs: {\n role: 'separator'\n },\n key: \"ellipsis-\".concat(isLast ? 'last' : 'first')\n }, [h('span', {\n staticClass: 'page-link'\n }, [_this7.normalizeSlot(SLOT_NAME_ELLIPSIS_TEXT) || toString(_this7.ellipsisText) || h()])]);\n }; // Page button factory\n\n\n var makePageButton = function makePageButton(page, idx) {\n var pageNumber = page.number;\n var active = isActivePage(pageNumber) && !noCurrentPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n var tabIndex = disabled ? null : active || noCurrentPage && idx === 0 ? '0' : '-1';\n var attrs = {\n role: isNav ? null : 'menuitemradio',\n type: isNav || disabled ? null : 'button',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-controls': safeVueInstance(_this7).ariaControls || null,\n 'aria-label': hasPropFunction(labelPage) ?\n /* istanbul ignore next */\n labelPage(pageNumber) : \"\".concat(isFunction$1(labelPage) ? labelPage() : labelPage, \" \").concat(pageNumber),\n 'aria-checked': isNav ? null : active ? 'true' : 'false',\n 'aria-current': isNav && active ? 'page' : null,\n 'aria-posinset': isNav ? null : pageNumber,\n 'aria-setsize': isNav ? null : numberOfPages,\n // ARIA \"roving tabindex\" method (except in `isNav` mode)\n tabindex: isNav ? null : tabIndex\n };\n var btnContent = toString(_this7.makePage(pageNumber));\n var scope = {\n page: pageNumber,\n index: pageNumber - 1,\n content: btnContent,\n active: active,\n disabled: disabled\n };\n var $inner = h(disabled ? 'span' : isNav ? BLink : 'button', {\n props: disabled || !isNav ? {} : _this7.linkProps(pageNumber),\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !disabled && fill\n },\n attrs: attrs,\n on: disabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, pageNumber);\n },\n keydown: onSpaceKey\n }\n }, [_this7.normalizeSlot(SLOT_NAME_PAGE, scope) || btnContent]);\n return h('li', {\n staticClass: 'page-item',\n class: [{\n disabled: disabled,\n active: active,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !disabled\n }, page.classes, _this7.pageClass],\n attrs: {\n role: isNav ? null : 'presentation'\n },\n key: \"page-\".concat(pageNumber)\n }, [$inner]);\n }; // Goto first page button\n // Don't render button when `hideGotoEndButtons` or `firstNumber` is set\n\n\n var $firstPageBtn = h();\n\n if (!this.firstNumber && !this.hideGotoEndButtons) {\n $firstPageBtn = makeEndBtn(1, this.labelFirstPage, SLOT_NAME_FIRST_TEXT, this.firstText, this.firstClass, 1, 'pagination-goto-first');\n }\n\n $buttons.push($firstPageBtn); // Goto previous page button\n\n $buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, SLOT_NAME_PREV_TEXT, this.prevText, this.prevClass, 1, 'pagination-goto-prev')); // Show first (1) button?\n\n $buttons.push(this.firstNumber && pageNumbers[0] !== 1 ? makePageButton({\n number: 1\n }, 0) : h()); // First ellipsis\n\n $buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual page links\n\n this.pageList.forEach(function (page, idx) {\n var offset = showFirstDots && _this7.firstNumber && pageNumbers[0] !== 1 ? 1 : 0;\n $buttons.push(makePageButton(page, idx + offset));\n }); // Last ellipsis\n\n $buttons.push(showLastDots ? makeEllipsis(true) : h()); // Show last page button?\n\n $buttons.push(this.lastNumber && pageNumbers[pageNumbers.length - 1] !== numberOfPages ? makePageButton({\n number: numberOfPages\n }, -1) : h()); // Goto next page button\n\n $buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, SLOT_NAME_NEXT_TEXT, this.nextText, this.nextClass, numberOfPages, 'pagination-goto-next')); // Goto last page button\n // Don't render button when `hideGotoEndButtons` or `lastNumber` is set\n\n var $lastPageBtn = h();\n\n if (!this.lastNumber && !this.hideGotoEndButtons) {\n $lastPageBtn = makeEndBtn(numberOfPages, this.labelLastPage, SLOT_NAME_LAST_TEXT, this.lastText, this.lastClass, numberOfPages, 'pagination-goto-last');\n }\n\n $buttons.push($lastPageBtn); // Assemble the pagination buttons\n\n var $pagination = h('ul', {\n staticClass: 'pagination',\n class: ['b-pagination', this.btnSize, this.alignment, this.styleClass],\n attrs: {\n role: isNav ? null : 'menubar',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-label': isNav ? null : ariaLabel || null\n },\n // We disable keyboard left/right nav when `<b-pagination-nav>`\n on: isNav ? {} : {\n keydown: this.handleKeyNav\n },\n ref: 'ul'\n }, $buttons); // If we are `<b-pagination-nav>`, wrap in `<nav>` wrapper\n\n if (isNav) {\n return h('nav', {\n attrs: {\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-hidden': disabled ? 'true' : 'false',\n 'aria-label': isNav ? ariaLabel || null : null\n }\n }, [$pagination]);\n }\n\n return $pagination;\n }\n });\n\n var DEFAULT_PER_PAGE = 20;\n var DEFAULT_TOTAL_ROWS = 0; // --- Helper methods ---\n // Sanitize the provided per page number (converting to a number)\n\n var sanitizePerPage = function sanitizePerPage(value) {\n return mathMax(toInteger(value) || DEFAULT_PER_PAGE, 1);\n }; // Sanitize the provided total rows number (converting to a number)\n\n\n var sanitizeTotalRows = function sanitizeTotalRows(value) {\n return mathMax(toInteger(value) || DEFAULT_TOTAL_ROWS, 0);\n }; // --- Props ---\n\n\n var props$I = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$J), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_PER_PAGE),\n totalRows: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_TOTAL_ROWS)\n })), NAME_PAGINATION); // --- Main component ---\n // @vue/component\n\n var BPagination = /*#__PURE__*/extend({\n name: NAME_PAGINATION,\n // The render function is brought in via the `paginationMixin`\n mixins: [paginationMixin$1],\n props: props$I,\n computed: {\n numberOfPages: function numberOfPages() {\n var result = mathCeil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n return result < 1 ? 1 : result;\n },\n // Used for watching changes to `perPage` and `numberOfPages`\n pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n return {\n perPage: sanitizePerPage(this.perPage),\n totalRows: sanitizeTotalRows(this.totalRows),\n numberOfPages: this.numberOfPages\n };\n }\n },\n watch: {\n pageSizeNumberOfPages: function pageSizeNumberOfPages(newValue, oldValue) {\n if (!isUndefinedOrNull(oldValue)) {\n if (newValue.perPage !== oldValue.perPage && newValue.totalRows === oldValue.totalRows) {\n // If the page size changes, reset to page 1\n this.currentPage = 1;\n } else if (newValue.numberOfPages !== oldValue.numberOfPages && this.currentPage > newValue.numberOfPages) {\n // If `numberOfPages` changes and is less than\n // the `currentPage` number, reset to page 1\n this.currentPage = 1;\n }\n }\n\n this.localNumberOfPages = newValue.numberOfPages;\n }\n },\n created: function created() {\n var _this = this;\n\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n var currentPage = toInteger(this[MODEL_PROP_NAME$4], 0);\n\n if (currentPage > 0) {\n this.currentPage = currentPage;\n } else {\n this.$nextTick(function () {\n // If this value parses to `NaN` or a value less than `1`\n // trigger an initial emit of `null` if no page specified\n _this.currentPage = 0;\n });\n }\n },\n methods: {\n // These methods are used by the render function\n onClick: function onClick(event, pageNumber) {\n var _this2 = this;\n\n // Dont do anything if clicking the current active page\n if (pageNumber === this.currentPage) {\n return;\n }\n\n var target = event.target; // Emit a user-cancelable `page-click` event\n\n var clickEvent = new BvEvent(EVENT_NAME_PAGE_CLICK, {\n cancelable: true,\n vueTarget: this,\n target: target\n });\n this.$emit(clickEvent.type, clickEvent, pageNumber);\n\n if (clickEvent.defaultPrevented) {\n return;\n } // Update the `v-model`\n\n\n this.currentPage = pageNumber; // Emit event triggered by user interaction\n\n this.$emit(EVENT_NAME_CHANGE, this.currentPage); // Keep the current button focused if possible\n\n this.$nextTick(function () {\n if (isVisible(target) && _this2.$el.contains(target)) {\n attemptFocus(target);\n } else {\n _this2.focusCurrent();\n }\n });\n },\n makePage: function makePage(pageNum) {\n return pageNum;\n },\n\n /* istanbul ignore next */\n linkProps: function linkProps() {\n // No props, since we render a plain button\n return {};\n }\n }\n });\n\n var PaginationPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BPagination: BPagination\n }\n });\n\n // Sanitize the provided number of pages (converting to a number)\n\n var sanitizeNumberOfPages = function sanitizeNumberOfPages(value) {\n return mathMax(toInteger(value, 0), 1);\n }; // --- Props ---\n\n var _linkProps = omit(props$2f, ['event', 'routerTag']);\n\n var props$H = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$J), _linkProps), {}, {\n baseUrl: makeProp(PROP_TYPE_STRING, '/'),\n linkGen: makeProp(PROP_TYPE_FUNCTION),\n // Disable auto page number detection if `true`\n noPageDetect: makeProp(PROP_TYPE_BOOLEAN, false),\n numberOfPages: makeProp(PROP_TYPE_NUMBER_STRING, 1,\n /* istanbul ignore next */\n function (value) {\n var number = toInteger(value, 0);\n\n if (number < 1) {\n warn('Prop \"number-of-pages\" must be a number greater than \"0\"', NAME_PAGINATION_NAV);\n return false;\n }\n\n return true;\n }),\n pageGen: makeProp(PROP_TYPE_FUNCTION),\n // Optional array of page links\n pages: makeProp(PROP_TYPE_ARRAY),\n useRouter: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_PAGINATION_NAV); // --- Main component ---\n // @vue/component\n\n var BPaginationNav = /*#__PURE__*/extend({\n name: NAME_PAGINATION_NAV,\n // The render function is brought in via the pagination mixin\n mixins: [paginationMixin$1],\n props: props$H,\n computed: {\n // Used by render function to trigger wrapping in '<nav>' element\n isNav: function isNav() {\n return true;\n },\n computedValue: function computedValue() {\n // Returns the value prop as a number or `null` if undefined or < 1\n var value = toInteger(this.value, 0);\n return value < 1 ? null : value;\n }\n },\n watch: {\n numberOfPages: function numberOfPages() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setNumberOfPages();\n });\n },\n pages: function pages() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setNumberOfPages();\n });\n }\n },\n created: function created() {\n this.setNumberOfPages();\n },\n mounted: function mounted() {\n var _this3 = this;\n\n if (this.$router) {\n // We only add the watcher if vue router is detected\n this.$watch('$route', function () {\n _this3.$nextTick(function () {\n requestAF(function () {\n _this3.guessCurrentPage();\n });\n });\n });\n }\n },\n methods: {\n setNumberOfPages: function setNumberOfPages() {\n var _this4 = this;\n\n if (isArray(this.pages) && this.pages.length > 0) {\n this.localNumberOfPages = this.pages.length;\n } else {\n this.localNumberOfPages = sanitizeNumberOfPages(this.numberOfPages);\n }\n\n this.$nextTick(function () {\n _this4.guessCurrentPage();\n });\n },\n onClick: function onClick(event, pageNumber) {\n var _this5 = this;\n\n // Dont do anything if clicking the current active page\n if (pageNumber === this.currentPage) {\n return;\n }\n\n var target = event.currentTarget || event.target; // Emit a user-cancelable `page-click` event\n\n var clickEvent = new BvEvent(EVENT_NAME_PAGE_CLICK, {\n cancelable: true,\n vueTarget: this,\n target: target\n });\n this.$emit(clickEvent.type, clickEvent, pageNumber);\n\n if (clickEvent.defaultPrevented) {\n return;\n } // Update the `v-model`\n // Done in in requestAF() to allow browser to complete the\n // native browser click handling of a link\n\n\n requestAF(function () {\n _this5.currentPage = pageNumber;\n\n _this5.$emit(EVENT_NAME_CHANGE, pageNumber);\n }); // Emulate native link click page reloading behaviour by blurring the\n // paginator and returning focus to the document\n // Done in a `nextTick()` to ensure rendering complete\n\n this.$nextTick(function () {\n attemptBlur(target);\n });\n },\n getPageInfo: function getPageInfo(pageNumber) {\n if (!isArray(this.pages) || this.pages.length === 0 || isUndefined(this.pages[pageNumber - 1])) {\n var link = \"\".concat(this.baseUrl).concat(pageNumber);\n return {\n link: this.useRouter ? {\n path: link\n } : link,\n text: toString(pageNumber)\n };\n }\n\n var info = this.pages[pageNumber - 1];\n\n if (isObject(info)) {\n var _link = info.link;\n return {\n // Normalize link for router use\n link: isObject(_link) ? _link : this.useRouter ? {\n path: _link\n } : _link,\n // Make sure text has a value\n text: toString(info.text || pageNumber)\n };\n } else {\n return {\n link: toString(info),\n text: toString(pageNumber)\n };\n }\n },\n makePage: function makePage(pageNumber) {\n var pageGen = this.pageGen;\n var info = this.getPageInfo(pageNumber);\n\n if (hasPropFunction(pageGen)) {\n return pageGen(pageNumber, info);\n }\n\n return info.text;\n },\n makeLink: function makeLink(pageNumber) {\n var linkGen = this.linkGen;\n var info = this.getPageInfo(pageNumber);\n\n if (hasPropFunction(linkGen)) {\n return linkGen(pageNumber, info);\n }\n\n return info.link;\n },\n linkProps: function linkProps(pageNumber) {\n var props = pluckProps(_linkProps, this);\n var link = this.makeLink(pageNumber);\n\n if (this.useRouter || isObject(link)) {\n props.to = link;\n } else {\n props.href = link;\n }\n\n return props;\n },\n resolveLink: function resolveLink() {\n var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // Given a to (or href string), convert to normalized route-like structure\n // Works only client side!\n var link;\n\n try {\n // Convert the `to` to a HREF via a temporary `a` tag\n link = document.createElement('a');\n link.href = computeHref({\n to: to\n }, 'a', '/', '/'); // We need to add the anchor to the document to make sure the\n // `pathname` is correctly detected in any browser (i.e. IE)\n\n document.body.appendChild(link); // Once href is assigned, the link will be normalized to the full URL bits\n\n var _link2 = link,\n pathname = _link2.pathname,\n hash = _link2.hash,\n search = _link2.search; // Remove link from document\n\n document.body.removeChild(link); // Return the location in a route-like object\n\n return {\n path: pathname,\n hash: hash,\n query: parseQuery(search)\n };\n } catch (e) {\n /* istanbul ignore next */\n try {\n link && link.parentNode && link.parentNode.removeChild(link);\n } catch (_unused) {}\n /* istanbul ignore next */\n\n\n return {};\n }\n },\n resolveRoute: function resolveRoute() {\n var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n // Given a to (or href string), convert to normalized route location structure\n // Works only when router available!\n try {\n var route = this.$router.resolve(to, this.$route).route;\n return {\n path: route.path,\n hash: route.hash,\n query: route.query\n };\n } catch (e) {\n /* istanbul ignore next */\n return {};\n }\n },\n guessCurrentPage: function guessCurrentPage() {\n var $router = this.$router,\n $route = this.$route;\n var guess = this.computedValue; // This section only occurs if we are client side, or server-side with `$router`\n\n if (!this.noPageDetect && !guess && (IS_BROWSER || !IS_BROWSER && $router)) {\n // Current route (if router available)\n var currentRoute = $router && $route ? {\n path: $route.path,\n hash: $route.hash,\n query: $route.query\n } : {}; // Current page full HREF (if client side)\n // Can't be done as a computed prop!\n\n var loc = IS_BROWSER ? window.location || document.location : null;\n var currentLink = loc ? {\n path: loc.pathname,\n hash: loc.hash,\n query: parseQuery(loc.search)\n } :\n /* istanbul ignore next */\n {}; // Loop through the possible pages looking for a match until found\n\n for (var pageNumber = 1; !guess && pageNumber <= this.localNumberOfPages; pageNumber++) {\n var to = this.makeLink(pageNumber);\n\n if ($router && (isObject(to) || this.useRouter)) {\n // Resolve the page via the `$router`\n guess = looseEqual(this.resolveRoute(to), currentRoute) ? pageNumber : null;\n } else if (IS_BROWSER) {\n // If no `$router` available (or `!this.useRouter` when `to` is a string)\n // we compare using parsed URIs\n guess = looseEqual(this.resolveLink(to), currentLink) ? pageNumber : null;\n } else {\n // Probably SSR, but no `$router` so we can't guess,\n // so lets break out of the loop early\n\n /* istanbul ignore next */\n guess = -1;\n }\n }\n } // We set `currentPage` to `0` to trigger an `$emit('input', null)`\n // As the default for `currentPage` is `-1` when no value is specified\n // Valid page numbers are greater than `0`\n\n\n this.currentPage = guess > 0 ? guess : 0;\n }\n }\n });\n\n var PaginationNavPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BPaginationNav: BPaginationNav\n }\n });\n\n // Base on-demand component for tooltip / popover templates\n\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left',\n TOPLEFT: 'top',\n TOPRIGHT: 'top',\n RIGHTTOP: 'right',\n RIGHTBOTTOM: 'right',\n BOTTOMLEFT: 'bottom',\n BOTTOMRIGHT: 'bottom',\n LEFTTOP: 'left',\n LEFTBOTTOM: 'left'\n };\n var OffsetMap = {\n AUTO: 0,\n TOPLEFT: -1,\n TOP: 0,\n TOPRIGHT: +1,\n RIGHTTOP: -1,\n RIGHT: 0,\n RIGHTBOTTOM: +1,\n BOTTOMLEFT: -1,\n BOTTOM: 0,\n BOTTOMRIGHT: +1,\n LEFTTOP: -1,\n LEFT: 0,\n LEFTBOTTOM: +1\n }; // --- Props ---\n\n var props$G = {\n // The minimum distance (in `px`) from the edge of the\n // tooltip/popover that the arrow can be positioned\n arrowPadding: makeProp(PROP_TYPE_NUMBER_STRING, 6),\n // 'scrollParent', 'viewport', 'window', or `Element`\n boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),\n // Tooltip/popover will try and stay away from\n // boundary edge by this many pixels\n boundaryPadding: makeProp(PROP_TYPE_NUMBER_STRING, 5),\n fallbackPlacement: makeProp(PROP_TYPE_ARRAY_STRING, 'flip'),\n offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n placement: makeProp(PROP_TYPE_STRING, 'top'),\n // Element that the tooltip/popover is positioned relative to\n target: makeProp([HTMLElement, SVGElement])\n }; // --- Main component ---\n // @vue/component\n\n var BVPopper = /*#__PURE__*/extend({\n name: NAME_POPPER,\n mixins: [useParentMixin],\n props: props$G,\n data: function data() {\n return {\n // reactive props set by parent\n noFade: false,\n // State related data\n localShow: true,\n attachment: this.getAttachment(this.placement)\n };\n },\n computed: {\n /* istanbul ignore next */\n templateType: function templateType() {\n // Overridden by template component\n return 'unknown';\n },\n popperConfig: function popperConfig() {\n var _this = this;\n\n var placement = this.placement;\n return {\n placement: this.getAttachment(placement),\n modifiers: {\n offset: {\n offset: this.getOffset(placement)\n },\n flip: {\n behavior: this.fallbackPlacement\n },\n // `arrow.element` can also be a reference to an HTML Element\n // maybe we should make this a `$ref` in the templates?\n arrow: {\n element: '.arrow'\n },\n preventOverflow: {\n padding: this.boundaryPadding,\n boundariesElement: this.boundary\n }\n },\n onCreate: function onCreate(data) {\n // Handle flipping arrow classes\n if (data.originalPlacement !== data.placement) {\n /* istanbul ignore next: can't test in JSDOM */\n _this.popperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n // Handle flipping arrow classes\n _this.popperPlacementChange(data);\n }\n };\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Note: We are created on-demand, and should be guaranteed that\n // DOM is rendered/ready by the time the created hook runs\n this.$_popper = null; // Ensure we show as we mount\n\n this.localShow = true; // Create popper instance before shown\n\n this.$on(EVENT_NAME_SHOW, function (el) {\n _this2.popperCreate(el);\n }); // Self destruct handler\n\n var handleDestroy = function handleDestroy() {\n _this2.$nextTick(function () {\n // In a `requestAF()` to release control back to application\n requestAF(function () {\n _this2.$destroy();\n });\n });\n }; // Self destruct if parent destroyed\n\n\n this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy); // Self destruct after hidden\n\n this.$once(EVENT_NAME_HIDDEN, handleDestroy);\n },\n beforeMount: function beforeMount() {\n // Ensure that the attachment position is correct before mounting\n // as our propsData is added after `new Template({...})`\n this.attachment = this.getAttachment(this.placement);\n },\n updated: function updated() {\n // Update popper if needed\n // TODO: Should this be a watcher on `this.popperConfig` instead?\n this.updatePopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.destroyPopper();\n },\n destroyed: function destroyed() {\n // Make sure template is removed from DOM\n var el = this.$el;\n el && el.parentNode && el.parentNode.removeChild(el);\n },\n methods: {\n // \"Public\" method to trigger hide template\n hide: function hide() {\n this.localShow = false;\n },\n // Private\n getAttachment: function getAttachment(placement) {\n return AttachmentMap[String(placement).toUpperCase()] || 'auto';\n },\n getOffset: function getOffset(placement) {\n if (!this.offset) {\n // Could set a ref for the arrow element\n var arrow = this.$refs.arrow || select('.arrow', this.$el);\n var arrowOffset = toFloat(getCS(arrow).width, 0) + toFloat(this.arrowPadding, 0);\n\n switch (OffsetMap[String(placement).toUpperCase()] || 0) {\n /* istanbul ignore next: can't test in JSDOM */\n case +1:\n /* istanbul ignore next: can't test in JSDOM */\n return \"+50%p - \".concat(arrowOffset, \"px\");\n\n /* istanbul ignore next: can't test in JSDOM */\n\n case -1:\n /* istanbul ignore next: can't test in JSDOM */\n return \"-50%p + \".concat(arrowOffset, \"px\");\n\n default:\n return 0;\n }\n }\n /* istanbul ignore next */\n\n\n return this.offset;\n },\n popperCreate: function popperCreate(el) {\n this.destroyPopper(); // We use `el` rather than `this.$el` just in case the original\n // mountpoint root element type was changed by the template\n\n this.$_popper = new Popper(this.target, el, this.popperConfig);\n },\n destroyPopper: function destroyPopper() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n updatePopper: function updatePopper() {\n this.$_popper && this.$_popper.scheduleUpdate();\n },\n popperPlacementChange: function popperPlacementChange(data) {\n // Callback used by popper to adjust the arrow placement\n this.attachment = this.getAttachment(data.placement);\n },\n\n /* istanbul ignore next */\n renderTemplate: function renderTemplate(h) {\n // Will be overridden by templates\n return h('div');\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n var noFade = this.noFade; // Note: 'show' and 'fade' classes are only appled during transition\n\n return h(BVTransition, {\n // Transitions as soon as mounted\n props: {\n appear: true,\n noFade: noFade\n },\n on: {\n // Events used by parent component/instance\n beforeEnter: function beforeEnter(el) {\n return _this3.$emit(EVENT_NAME_SHOW, el);\n },\n afterEnter: function afterEnter(el) {\n return _this3.$emit(EVENT_NAME_SHOWN, el);\n },\n beforeLeave: function beforeLeave(el) {\n return _this3.$emit(EVENT_NAME_HIDE, el);\n },\n afterLeave: function afterLeave(el) {\n return _this3.$emit(EVENT_NAME_HIDDEN, el);\n }\n }\n }, [this.localShow ? this.renderTemplate(h) : h()]);\n }\n });\n\n var props$F = {\n // Used only by the directive versions\n html: makeProp(PROP_TYPE_BOOLEAN, false),\n // Other non-reactive (while open) props are pulled in from BVPopper\n id: makeProp(PROP_TYPE_STRING)\n }; // --- Main component ---\n // @vue/component\n\n var BVTooltipTemplate = /*#__PURE__*/extend({\n name: NAME_TOOLTIP_TEMPLATE,\n extends: BVPopper,\n mixins: [scopedStyleMixin],\n props: props$F,\n data: function data() {\n // We use data, rather than props to ensure reactivity\n // Parent component will directly set this data\n return {\n title: '',\n content: '',\n variant: null,\n customClass: null,\n interactive: true\n };\n },\n computed: {\n templateType: function templateType() {\n return 'tooltip';\n },\n templateClasses: function templateClasses() {\n var _ref;\n\n var variant = this.variant,\n attachment = this.attachment,\n templateType = this.templateType;\n return [(_ref = {\n // Disables pointer events to hide the tooltip when the user\n // hovers over its content\n noninteractive: !this.interactive\n }, _defineProperty(_ref, \"b-\".concat(templateType, \"-\").concat(variant), variant), _defineProperty(_ref, \"bs-\".concat(templateType, \"-\").concat(attachment), attachment), _ref), this.customClass];\n },\n templateAttributes: function templateAttributes() {\n var id = this.id;\n return _objectSpread2$3(_objectSpread2$3({}, this.bvParent.bvParent.$attrs), {}, {\n id: id,\n role: 'tooltip',\n tabindex: '-1'\n }, this.scopedStyleAttrs);\n },\n templateListeners: function templateListeners() {\n var _this = this;\n\n // Used for hover/focus trigger listeners\n return {\n mouseenter:\n /* istanbul ignore next */\n function mouseenter(event) {\n _this.$emit(EVENT_NAME_MOUSEENTER, event);\n },\n mouseleave:\n /* istanbul ignore next */\n function mouseleave(event) {\n _this.$emit(EVENT_NAME_MOUSELEAVE, event);\n },\n focusin:\n /* istanbul ignore next */\n function focusin(event) {\n _this.$emit(EVENT_NAME_FOCUSIN, event);\n },\n focusout:\n /* istanbul ignore next */\n function focusout(event) {\n _this.$emit(EVENT_NAME_FOCUSOUT, event);\n }\n };\n }\n },\n methods: {\n renderTemplate: function renderTemplate(h) {\n var title = this.title; // Title can be a scoped slot function\n\n var $title = isFunction$1(title) ? title({}) : title; // Directive versions only\n\n var domProps = this.html && !isFunction$1(title) ? {\n innerHTML: title\n } : {};\n return h('div', {\n staticClass: 'tooltip b-tooltip',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n }, [h('div', {\n staticClass: 'arrow',\n ref: 'arrow'\n }), h('div', {\n staticClass: 'tooltip-inner',\n domProps: domProps\n }, [$title])]);\n }\n }\n });\n\n // Modal container selector for appending tooltip/popover\n\n var MODAL_SELECTOR = '.modal-content'; // Modal `$root` hidden event\n\n var ROOT_EVENT_NAME_MODAL_HIDDEN = getRootEventName(NAME_MODAL, EVENT_NAME_HIDDEN); // Sidebar container selector for appending tooltip/popover\n\n var SIDEBAR_SELECTOR = '.b-sidebar'; // For finding the container to append to\n\n var CONTAINER_SELECTOR = [MODAL_SELECTOR, SIDEBAR_SELECTOR].join(', '); // For dropdown sniffing\n\n var DROPDOWN_CLASS = 'dropdown';\n var DROPDOWN_OPEN_SELECTOR = '.dropdown-menu.show'; // Data attribute to temporary store the `title` attribute's value\n\n var DATA_TITLE_ATTR = 'data-original-title'; // Data specific to popper and template\n // We don't use props, as we need reactivity (we can't pass reactive props)\n\n var templateData = {\n // Text string or Scoped slot function\n title: '',\n // Text string or Scoped slot function\n content: '',\n // String\n variant: null,\n // String, Array, Object\n customClass: null,\n // String or array of Strings (overwritten by BVPopper)\n triggers: '',\n // String (overwritten by BVPopper)\n placement: 'auto',\n // String or array of strings\n fallbackPlacement: 'flip',\n // Element or Component reference (or function that returns element) of\n // the element that will have the trigger events bound, and is also\n // default element for positioning\n target: null,\n // HTML ID, Element or Component reference\n container: null,\n // 'body'\n // Boolean\n noFade: false,\n // 'scrollParent', 'viewport', 'window', Element, or Component reference\n boundary: 'scrollParent',\n // Tooltip/popover will try and stay away from\n // boundary edge by this many pixels (Number)\n boundaryPadding: 5,\n // Arrow offset (Number)\n offset: 0,\n // Hover/focus delay (Number or Object)\n delay: 0,\n // Arrow of Tooltip/popover will try and stay away from\n // the edge of tooltip/popover edge by this many pixels\n arrowPadding: 6,\n // Interactive state (Boolean)\n interactive: true,\n // Disabled state (Boolean)\n disabled: false,\n // ID to use for tooltip/popover\n id: null,\n // Flag used by directives only, for HTML content\n html: false\n }; // --- Main component ---\n // @vue/component\n\n var BVTooltip = /*#__PURE__*/extend({\n name: NAME_TOOLTIP_HELPER,\n mixins: [listenOnRootMixin, useParentMixin],\n data: function data() {\n return _objectSpread2$3(_objectSpread2$3({}, templateData), {}, {\n // State management data\n activeTrigger: {\n // manual: false,\n hover: false,\n click: false,\n focus: false\n },\n localShow: false\n });\n },\n computed: {\n templateType: function templateType() {\n // Overwritten by BVPopover\n return 'tooltip';\n },\n computedId: function computedId() {\n return this.id || \"__bv_\".concat(this.templateType, \"_\").concat(this[COMPONENT_UID_KEY], \"__\");\n },\n computedDelay: function computedDelay() {\n // Normalizes delay into object form\n var delay = {\n show: 0,\n hide: 0\n };\n\n if (isPlainObject(this.delay)) {\n delay.show = mathMax(toInteger(this.delay.show, 0), 0);\n delay.hide = mathMax(toInteger(this.delay.hide, 0), 0);\n } else if (isNumber(this.delay) || isString(this.delay)) {\n delay.show = delay.hide = mathMax(toInteger(this.delay, 0), 0);\n }\n\n return delay;\n },\n computedTriggers: function computedTriggers() {\n // Returns the triggers in sorted array form\n // TODO: Switch this to object form for easier lookup\n return concat(this.triggers).filter(identity).join(' ').trim().toLowerCase().split(/\\s+/).sort();\n },\n isWithActiveTrigger: function isWithActiveTrigger() {\n for (var trigger in this.activeTrigger) {\n if (this.activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n },\n computedTemplateData: function computedTemplateData() {\n var title = this.title,\n content = this.content,\n variant = this.variant,\n customClass = this.customClass,\n noFade = this.noFade,\n interactive = this.interactive;\n return {\n title: title,\n content: content,\n variant: variant,\n customClass: customClass,\n noFade: noFade,\n interactive: interactive\n };\n }\n },\n watch: {\n computedTriggers: function computedTriggers(newTriggers, oldTriggers) {\n var _this = this;\n\n // Triggers have changed, so re-register them\n\n /* istanbul ignore next */\n if (!looseEqual(newTriggers, oldTriggers)) {\n this.$nextTick(function () {\n // Disable trigger listeners\n _this.unListen(); // Clear any active triggers that are no longer in the list of triggers\n\n\n oldTriggers.forEach(function (trigger) {\n if (!arrayIncludes(newTriggers, trigger)) {\n if (_this.activeTrigger[trigger]) {\n _this.activeTrigger[trigger] = false;\n }\n }\n }); // Re-enable the trigger listeners\n\n _this.listen();\n });\n }\n },\n computedTemplateData: function computedTemplateData() {\n // If any of the while open reactive \"props\" change,\n // ensure that the template updates accordingly\n this.handleTemplateUpdate();\n },\n title: function title(newValue, oldValue) {\n // Make sure to hide the tooltip when the title is set empty\n if (newValue !== oldValue && !newValue) {\n this.hide();\n }\n },\n disabled: function disabled(newValue) {\n if (newValue) {\n this.disable();\n } else {\n this.enable();\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create non-reactive properties\n this.$_tip = null;\n this.$_hoverTimeout = null;\n this.$_hoverState = '';\n this.$_visibleInterval = null;\n this.$_enabled = !this.disabled;\n this.$_noop = noop.bind(this); // Destroy ourselves when the parent is destroyed\n\n if (this.bvParent) {\n this.bvParent.$once(HOOK_EVENT_NAME_BEFORE_DESTROY, function () {\n _this2.$nextTick(function () {\n // In a `requestAF()` to release control back to application\n requestAF(function () {\n _this2.$destroy();\n });\n });\n });\n }\n\n this.$nextTick(function () {\n var target = _this2.getTarget();\n\n if (target && contains(document.body, target)) {\n // Copy the parent's scoped style attribute\n _this2.scopeId = getScopeId(_this2.bvParent); // Set up all trigger handlers and listeners\n\n _this2.listen();\n } else {\n /* istanbul ignore next */\n warn(isString(_this2.target) ? \"Unable to find target element by ID \\\"#\".concat(_this2.target, \"\\\" in document.\") : 'The provided target is no valid HTML element.', _this2.templateType);\n }\n });\n },\n\n /* istanbul ignore next */\n updated: function updated() {\n // Usually called when the slots/data changes\n this.$nextTick(this.handleTemplateUpdate);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // In a keepalive that has been deactivated, so hide\n // the tooltip/popover if it is showing\n this.forceHide();\n },\n beforeDestroy: function beforeDestroy() {\n // Remove all handler/listeners\n this.unListen();\n this.setWhileOpenListeners(false); // Clear any timeouts/intervals\n\n this.clearHoverTimeout();\n this.clearVisibilityInterval(); // Destroy the template\n\n this.destroyTemplate(); // Remove any other private properties created during create\n\n this.$_noop = null;\n },\n methods: {\n // --- Methods for creating and destroying the template ---\n getTemplate: function getTemplate() {\n // Overridden by BVPopover\n return BVTooltipTemplate;\n },\n updateData: function updateData() {\n var _this3 = this;\n\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Method for updating popper/template data\n // We only update data if it exists, and has not changed\n var titleUpdated = false;\n keys(templateData).forEach(function (prop) {\n if (!isUndefined(data[prop]) && _this3[prop] !== data[prop]) {\n _this3[prop] = data[prop];\n\n if (prop === 'title') {\n titleUpdated = true;\n }\n }\n }); // If the title has updated, we may need to handle the `title`\n // attribute on the trigger target\n // We only do this while the template is open\n\n if (titleUpdated && this.localShow) {\n this.fixTitle();\n }\n },\n createTemplateAndShow: function createTemplateAndShow() {\n // Creates the template instance and show it\n var container = this.getContainer();\n var Template = this.getTemplate();\n var $tip = this.$_tip = createNewChildComponent(this, Template, {\n // The following is not reactive to changes in the props data\n propsData: {\n // These values cannot be changed while template is showing\n id: this.computedId,\n html: this.html,\n placement: this.placement,\n fallbackPlacement: this.fallbackPlacement,\n target: this.getPlacementTarget(),\n boundary: this.getBoundary(),\n // Ensure the following are integers\n offset: toInteger(this.offset, 0),\n arrowPadding: toInteger(this.arrowPadding, 0),\n boundaryPadding: toInteger(this.boundaryPadding, 0)\n }\n }); // We set the initial reactive data (values that can be changed while open)\n\n this.handleTemplateUpdate(); // Template transition phase events (handled once only)\n // When the template has mounted, but not visibly shown yet\n\n $tip.$once(EVENT_NAME_SHOW, this.onTemplateShow); // When the template has completed showing\n\n $tip.$once(EVENT_NAME_SHOWN, this.onTemplateShown); // When the template has started to hide\n\n $tip.$once(EVENT_NAME_HIDE, this.onTemplateHide); // When the template has completed hiding\n\n $tip.$once(EVENT_NAME_HIDDEN, this.onTemplateHidden); // When the template gets destroyed for any reason\n\n $tip.$once(HOOK_EVENT_NAME_DESTROYED, this.destroyTemplate); // Convenience events from template\n // To save us from manually adding/removing DOM\n // listeners to tip element when it is open\n\n $tip.$on(EVENT_NAME_FOCUSIN, this.handleEvent);\n $tip.$on(EVENT_NAME_FOCUSOUT, this.handleEvent);\n $tip.$on(EVENT_NAME_MOUSEENTER, this.handleEvent);\n $tip.$on(EVENT_NAME_MOUSELEAVE, this.handleEvent); // Mount (which triggers the `show`)\n\n $tip.$mount(container.appendChild(document.createElement('div'))); // Template will automatically remove its markup from DOM when hidden\n },\n hideTemplate: function hideTemplate() {\n // Trigger the template to start hiding\n // The template will emit the `hide` event after this and\n // then emit the `hidden` event once it is fully hidden\n // The `hook:destroyed` will also be called (safety measure)\n this.$_tip && this.$_tip.hide(); // Clear out any stragging active triggers\n\n this.clearActiveTriggers(); // Reset the hover state\n\n this.$_hoverState = '';\n },\n // Destroy the template instance and reset state\n destroyTemplate: function destroyTemplate() {\n this.setWhileOpenListeners(false);\n this.clearHoverTimeout();\n this.$_hoverState = '';\n this.clearActiveTriggers();\n this.localPlacementTarget = null;\n\n try {\n this.$_tip.$destroy();\n } catch (_unused) {}\n\n this.$_tip = null;\n this.removeAriaDescribedby();\n this.restoreTitle();\n this.localShow = false;\n },\n getTemplateElement: function getTemplateElement() {\n return this.$_tip ? this.$_tip.$el : null;\n },\n handleTemplateUpdate: function handleTemplateUpdate() {\n var _this4 = this;\n\n // Update our template title/content \"props\"\n // So that the template updates accordingly\n var $tip = this.$_tip;\n\n if ($tip) {\n var props = ['title', 'content', 'variant', 'customClass', 'noFade', 'interactive']; // Only update the values if they have changed\n\n props.forEach(function (prop) {\n if ($tip[prop] !== _this4[prop]) {\n $tip[prop] = _this4[prop];\n }\n });\n }\n },\n // --- Show/Hide handlers ---\n // Show the tooltip\n show: function show() {\n var target = this.getTarget();\n\n if (!target || !contains(document.body, target) || !isVisible(target) || this.dropdownOpen() || (isUndefinedOrNull(this.title) || this.title === '') && (isUndefinedOrNull(this.content) || this.content === '')) {\n // If trigger element isn't in the DOM or is not visible, or\n // is on an open dropdown toggle, or has no content, then\n // we exit without showing\n return;\n } // If tip already exists, exit early\n\n\n if (this.$_tip || this.localShow) {\n /* istanbul ignore next */\n return;\n } // In the process of showing\n\n\n this.localShow = true; // Create a cancelable BvEvent\n\n var showEvent = this.buildEvent(EVENT_NAME_SHOW, {\n cancelable: true\n });\n this.emitEvent(showEvent); // Don't show if event cancelled\n\n /* istanbul ignore if */\n\n if (showEvent.defaultPrevented) {\n // Destroy the template (if for some reason it was created)\n this.destroyTemplate();\n return;\n } // Fix the title attribute on target\n\n\n this.fixTitle(); // Set aria-describedby on target\n\n this.addAriaDescribedby(); // Create and show the tooltip\n\n this.createTemplateAndShow();\n },\n hide: function hide() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n // Hide the tooltip\n var tip = this.getTemplateElement();\n /* istanbul ignore if */\n\n if (!tip || !this.localShow) {\n this.restoreTitle();\n return;\n } // Emit cancelable BvEvent 'hide'\n // We disable cancelling if `force` is true\n\n\n var hideEvent = this.buildEvent(EVENT_NAME_HIDE, {\n cancelable: !force\n });\n this.emitEvent(hideEvent);\n /* istanbul ignore if: ignore for now */\n\n if (hideEvent.defaultPrevented) {\n // Don't hide if event cancelled\n return;\n } // Tell the template to hide\n\n\n this.hideTemplate();\n },\n forceHide: function forceHide() {\n // Forcefully hides/destroys the template, regardless of any active triggers\n var tip = this.getTemplateElement();\n\n if (!tip || !this.localShow) {\n /* istanbul ignore next */\n return;\n } // Disable while open listeners/watchers\n // This is also done in the template `hide` event handler\n\n\n this.setWhileOpenListeners(false); // Clear any hover enter/leave event\n\n this.clearHoverTimeout();\n this.$_hoverState = '';\n this.clearActiveTriggers(); // Disable the fade animation on the template\n\n if (this.$_tip) {\n this.$_tip.noFade = true;\n } // Hide the tip (with force = true)\n\n\n this.hide(true);\n },\n enable: function enable() {\n this.$_enabled = true; // Create a non-cancelable BvEvent\n\n this.emitEvent(this.buildEvent(EVENT_NAME_ENABLED));\n },\n disable: function disable() {\n this.$_enabled = false; // Create a non-cancelable BvEvent\n\n this.emitEvent(this.buildEvent(EVENT_NAME_DISABLED));\n },\n // --- Handlers for template events ---\n // When template is inserted into DOM, but not yet shown\n onTemplateShow: function onTemplateShow() {\n // Enable while open listeners/watchers\n this.setWhileOpenListeners(true);\n },\n // When template show transition completes\n onTemplateShown: function onTemplateShown() {\n var prevHoverState = this.$_hoverState;\n this.$_hoverState = '';\n /* istanbul ignore next: occasional Node 10 coverage error */\n\n if (prevHoverState === 'out') {\n this.leave(null);\n } // Emit a non-cancelable BvEvent 'shown'\n\n\n this.emitEvent(this.buildEvent(EVENT_NAME_SHOWN));\n },\n // When template is starting to hide\n onTemplateHide: function onTemplateHide() {\n // Disable while open listeners/watchers\n this.setWhileOpenListeners(false);\n },\n // When template has completed closing (just before it self destructs)\n onTemplateHidden: function onTemplateHidden() {\n // Destroy the template\n this.destroyTemplate(); // Emit a non-cancelable BvEvent 'shown'\n\n this.emitEvent(this.buildEvent(EVENT_NAME_HIDDEN));\n },\n // --- Helper methods ---\n getTarget: function getTarget() {\n var target = this.target;\n\n if (isString(target)) {\n target = getById(target.replace(/^#/, ''));\n } else if (isFunction$1(target)) {\n target = target();\n } else if (target) {\n target = target.$el || target;\n }\n\n return isElement(target) ? target : null;\n },\n getPlacementTarget: function getPlacementTarget() {\n // This is the target that the tooltip will be placed on, which may not\n // necessarily be the same element that has the trigger event listeners\n // For now, this is the same as target\n // TODO:\n // Add in child selector support\n // Add in visibility checks for this element\n // Fallback to target if not found\n return this.getTarget();\n },\n getTargetId: function getTargetId() {\n // Returns the ID of the trigger element\n var target = this.getTarget();\n return target && target.id ? target.id : null;\n },\n getContainer: function getContainer() {\n // Handle case where container may be a component ref\n var container = this.container ? this.container.$el || this.container : false;\n var body = document.body;\n var target = this.getTarget(); // If we are in a modal, we append to the modal, If we\n // are in a sidebar, we append to the sidebar, else append\n // to body, unless a container is specified\n // TODO:\n // Template should periodically check to see if it is in dom\n // And if not, self destruct (if container got v-if'ed out of DOM)\n // Or this could possibly be part of the visibility check\n\n return container === false ? closest(CONTAINER_SELECTOR, target) || body :\n /*istanbul ignore next */\n isString(container) ?\n /*istanbul ignore next */\n getById(container.replace(/^#/, '')) || body :\n /*istanbul ignore next */\n body;\n },\n getBoundary: function getBoundary() {\n return this.boundary ? this.boundary.$el || this.boundary : 'scrollParent';\n },\n isInModal: function isInModal() {\n var target = this.getTarget();\n return target && closest(MODAL_SELECTOR, target);\n },\n isDropdown: function isDropdown() {\n // Returns true if trigger is a dropdown\n var target = this.getTarget();\n return target && hasClass(target, DROPDOWN_CLASS);\n },\n dropdownOpen: function dropdownOpen() {\n // Returns true if trigger is a dropdown and the dropdown menu is open\n var target = this.getTarget();\n return this.isDropdown() && target && select(DROPDOWN_OPEN_SELECTOR, target);\n },\n clearHoverTimeout: function clearHoverTimeout() {\n clearTimeout(this.$_hoverTimeout);\n this.$_hoverTimeout = null;\n },\n clearVisibilityInterval: function clearVisibilityInterval() {\n clearInterval(this.$_visibleInterval);\n this.$_visibleInterval = null;\n },\n clearActiveTriggers: function clearActiveTriggers() {\n for (var trigger in this.activeTrigger) {\n this.activeTrigger[trigger] = false;\n }\n },\n addAriaDescribedby: function addAriaDescribedby() {\n // Add aria-describedby on trigger element, without removing any other IDs\n var target = this.getTarget();\n var desc = getAttr(target, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).concat(this.computedId).join(' ').trim(); // Update/add aria-described by\n\n setAttr(target, 'aria-describedby', desc);\n },\n removeAriaDescribedby: function removeAriaDescribedby() {\n var _this5 = this;\n\n // Remove aria-describedby on trigger element, without removing any other IDs\n var target = this.getTarget();\n var desc = getAttr(target, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).filter(function (d) {\n return d !== _this5.computedId;\n }).join(' ').trim(); // Update or remove aria-describedby\n\n if (desc) {\n /* istanbul ignore next */\n setAttr(target, 'aria-describedby', desc);\n } else {\n removeAttr(target, 'aria-describedby');\n }\n },\n fixTitle: function fixTitle() {\n // If the target has a `title` attribute,\n // remove it and store it on a data attribute\n var target = this.getTarget();\n\n if (hasAttr(target, 'title')) {\n // Get `title` attribute value and remove it from target\n var title = getAttr(target, 'title');\n setAttr(target, 'title', ''); // Only set the data attribute when the value is truthy\n\n if (title) {\n setAttr(target, DATA_TITLE_ATTR, title);\n }\n }\n },\n restoreTitle: function restoreTitle() {\n // If the target had a `title` attribute,\n // restore it and remove the data attribute\n var target = this.getTarget();\n\n if (hasAttr(target, DATA_TITLE_ATTR)) {\n // Get data attribute value and remove it from target\n var title = getAttr(target, DATA_TITLE_ATTR);\n removeAttr(target, DATA_TITLE_ATTR); // Only restore the `title` attribute when the value is truthy\n\n if (title) {\n setAttr(target, 'title', title);\n }\n }\n },\n // --- BvEvent helpers ---\n buildEvent: function buildEvent(type) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Defaults to a non-cancellable event\n return new BvEvent(type, _objectSpread2$3({\n cancelable: false,\n target: this.getTarget(),\n relatedTarget: this.getTemplateElement() || null,\n componentId: this.computedId,\n vueTarget: this\n }, options));\n },\n emitEvent: function emitEvent(bvEvent) {\n var type = bvEvent.type;\n this.emitOnRoot(getRootEventName(this.templateType, type), bvEvent);\n this.$emit(type, bvEvent);\n },\n // --- Event handler setup methods ---\n listen: function listen() {\n var _this6 = this;\n\n // Enable trigger event handlers\n var el = this.getTarget();\n\n if (!el) {\n /* istanbul ignore next */\n return;\n } // Listen for global show/hide events\n\n\n this.setRootListener(true); // Set up our listeners on the target trigger element\n\n this.computedTriggers.forEach(function (trigger) {\n if (trigger === 'click') {\n eventOn(el, 'click', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n } else if (trigger === 'focus') {\n eventOn(el, 'focusin', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n eventOn(el, 'focusout', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n } else if (trigger === 'blur') {\n // Used to close $tip when element loses focus\n\n /* istanbul ignore next */\n eventOn(el, 'focusout', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n } else if (trigger === 'hover') {\n eventOn(el, 'mouseenter', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n eventOn(el, 'mouseleave', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n }\n }, this);\n },\n\n /* istanbul ignore next */\n unListen: function unListen() {\n var _this7 = this;\n\n // Remove trigger event handlers\n var events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave'];\n var target = this.getTarget(); // Stop listening for global show/hide/enable/disable events\n\n this.setRootListener(false); // Clear out any active target listeners\n\n events.forEach(function (event) {\n target && eventOff(target, event, _this7.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n }, this);\n },\n setRootListener: function setRootListener(on) {\n // Listen for global `bv::{hide|show}::{tooltip|popover}` hide request event\n var method = on ? 'listenOnRoot' : 'listenOffRoot';\n var type = this.templateType;\n this[method](getRootActionEventName(type, EVENT_NAME_HIDE), this.doHide);\n this[method](getRootActionEventName(type, EVENT_NAME_SHOW), this.doShow);\n this[method](getRootActionEventName(type, EVENT_NAME_DISABLE), this.doDisable);\n this[method](getRootActionEventName(type, EVENT_NAME_ENABLE), this.doEnable);\n },\n setWhileOpenListeners: function setWhileOpenListeners(on) {\n // Events that are only registered when the template is showing\n // Modal close events\n this.setModalListener(on); // Dropdown open events (if we are attached to a dropdown)\n\n this.setDropdownListener(on); // Periodic $element visibility check\n // For handling when tip target is in <keepalive>, tabs, carousel, etc\n\n this.visibleCheck(on); // On-touch start listeners\n\n this.setOnTouchStartListener(on);\n },\n // Handler for periodic visibility check\n visibleCheck: function visibleCheck(on) {\n var _this8 = this;\n\n this.clearVisibilityInterval();\n var target = this.getTarget();\n\n if (on) {\n this.$_visibleInterval = setInterval(function () {\n var tip = _this8.getTemplateElement();\n\n if (tip && _this8.localShow && (!target.parentNode || !isVisible(target))) {\n // Target element is no longer visible or not in DOM, so force-hide the tooltip\n _this8.forceHide();\n }\n }, 100);\n }\n },\n setModalListener: function setModalListener(on) {\n // Handle case where tooltip/target is in a modal\n if (this.isInModal()) {\n // We can listen for modal hidden events on `$root`\n this[on ? 'listenOnRoot' : 'listenOffRoot'](ROOT_EVENT_NAME_MODAL_HIDDEN, this.forceHide);\n }\n },\n\n /* istanbul ignore next: JSDOM doesn't support `ontouchstart` */\n setOnTouchStartListener: function setOnTouchStartListener(on) {\n var _this9 = this;\n\n // If this is a touch-enabled device we add extra empty\n // `mouseover` listeners to the body's immediate children\n // Only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n from(document.body.children).forEach(function (el) {\n eventOnOff(on, el, 'mouseover', _this9.$_noop);\n });\n }\n },\n setDropdownListener: function setDropdownListener(on) {\n var target = this.getTarget();\n\n if (!target || !this.bvEventRoot || !this.isDropdown) {\n return;\n } // We can listen for dropdown shown events on its instance\n // TODO:\n // We could grab the ID from the dropdown, and listen for\n // $root events for that particular dropdown id\n // Dropdown shown and hidden events will need to emit\n // Note: Dropdown auto-ID happens in a `$nextTick()` after mount\n // So the ID lookup would need to be done in a `$nextTick()`\n\n\n var instance = getInstanceFromElement(target);\n\n if (instance) {\n instance[on ? '$on' : '$off'](EVENT_NAME_SHOWN, this.forceHide);\n }\n },\n // --- Event handlers ---\n handleEvent: function handleEvent(event) {\n // General trigger event handler\n // target is the trigger element\n var target = this.getTarget();\n\n if (!target || isDisabled(target) || !this.$_enabled || this.dropdownOpen()) {\n // If disabled or not enabled, or if a dropdown that is open, don't do anything\n // If tip is shown before element gets disabled, then tip will not\n // close until no longer disabled or forcefully closed\n return;\n }\n\n var type = event.type;\n var triggers = this.computedTriggers;\n\n if (type === 'click' && arrayIncludes(triggers, 'click')) {\n this.click(event);\n } else if (type === 'mouseenter' && arrayIncludes(triggers, 'hover')) {\n // `mouseenter` is a non-bubbling event\n this.enter(event);\n } else if (type === 'focusin' && arrayIncludes(triggers, 'focus')) {\n // `focusin` is a bubbling event\n // `event` includes `relatedTarget` (element losing focus)\n this.enter(event);\n } else if (type === 'focusout' && (arrayIncludes(triggers, 'focus') || arrayIncludes(triggers, 'blur')) || type === 'mouseleave' && arrayIncludes(triggers, 'hover')) {\n // `focusout` is a bubbling event\n // `mouseleave` is a non-bubbling event\n // `tip` is the template (will be null if not open)\n var tip = this.getTemplateElement(); // `eventTarget` is the element which is losing focus/hover and\n\n var eventTarget = event.target; // `relatedTarget` is the element gaining focus/hover\n\n var relatedTarget = event.relatedTarget;\n /* istanbul ignore next */\n\n if ( // From tip to target\n tip && contains(tip, eventTarget) && contains(target, relatedTarget) || // From target to tip\n tip && contains(target, eventTarget) && contains(tip, relatedTarget) || // Within tip\n tip && contains(tip, eventTarget) && contains(tip, relatedTarget) || // Within target\n contains(target, eventTarget) && contains(target, relatedTarget)) {\n // If focus/hover moves within `tip` and `target`, don't trigger a leave\n return;\n } // Otherwise trigger a leave\n\n\n this.leave(event);\n }\n },\n doHide: function doHide(id) {\n // Programmatically hide tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Close all tooltips or popovers, or this specific tip (with ID)\n this.forceHide();\n }\n },\n doShow: function doShow(id) {\n // Programmatically show tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Open all tooltips or popovers, or this specific tip (with ID)\n this.show();\n }\n },\n\n /*istanbul ignore next: ignore for now */\n doDisable: function doDisable(id)\n /*istanbul ignore next: ignore for now */\n {\n // Programmatically disable tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Disable all tooltips or popovers (no ID), or this specific tip (with ID)\n this.disable();\n }\n },\n\n /*istanbul ignore next: ignore for now */\n doEnable: function doEnable(id)\n /*istanbul ignore next: ignore for now */\n {\n // Programmatically enable tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Enable all tooltips or popovers (no ID), or this specific tip (with ID)\n this.enable();\n }\n },\n click: function click(event) {\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return;\n } // Get around a WebKit bug where `click` does not trigger focus events\n // On most browsers, `click` triggers a `focusin`/`focus` event first\n // Needed so that trigger 'click blur' works on iOS\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/5099\n // We use `currentTarget` rather than `target` to trigger on the\n // element, not the inner content\n\n\n attemptFocus(event.currentTarget);\n this.activeTrigger.click = !this.activeTrigger.click;\n\n if (this.isWithActiveTrigger) {\n this.enter(null);\n } else {\n /* istanbul ignore next */\n this.leave(null);\n }\n },\n\n /* istanbul ignore next */\n toggle: function toggle() {\n // Manual toggle handler\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return;\n } // Should we register as an active trigger?\n // this.activeTrigger.manual = !this.activeTrigger.manual\n\n\n if (this.localShow) {\n this.leave(null);\n } else {\n this.enter(null);\n }\n },\n enter: function enter() {\n var _this10 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n // Opening trigger handler\n // Note: Click events are sent with event === null\n if (event) {\n this.activeTrigger[event.type === 'focusin' ? 'focus' : 'hover'] = true;\n }\n /* istanbul ignore next */\n\n\n if (this.localShow || this.$_hoverState === 'in') {\n this.$_hoverState = 'in';\n return;\n }\n\n this.clearHoverTimeout();\n this.$_hoverState = 'in';\n\n if (!this.computedDelay.show) {\n this.show();\n } else {\n // Hide any title attribute while enter delay is active\n this.fixTitle();\n this.$_hoverTimeout = setTimeout(function () {\n /* istanbul ignore else */\n if (_this10.$_hoverState === 'in') {\n _this10.show();\n } else if (!_this10.localShow) {\n _this10.restoreTitle();\n }\n }, this.computedDelay.show);\n }\n },\n leave: function leave() {\n var _this11 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n // Closing trigger handler\n // Note: Click events are sent with event === null\n if (event) {\n this.activeTrigger[event.type === 'focusout' ? 'focus' : 'hover'] = false;\n /* istanbul ignore next */\n\n if (event.type === 'focusout' && arrayIncludes(this.computedTriggers, 'blur')) {\n // Special case for `blur`: we clear out the other triggers\n this.activeTrigger.click = false;\n this.activeTrigger.hover = false;\n }\n }\n /* istanbul ignore next: ignore for now */\n\n\n if (this.isWithActiveTrigger) {\n return;\n }\n\n this.clearHoverTimeout();\n this.$_hoverState = 'out';\n\n if (!this.computedDelay.hide) {\n this.hide();\n } else {\n this.$_hoverTimeout = setTimeout(function () {\n if (_this11.$_hoverState === 'out') {\n _this11.hide();\n }\n }, this.computedDelay.hide);\n }\n }\n }\n });\n\n var _makePropsConfigurabl, _watch$5;\n\n var MODEL_PROP_NAME_ENABLED = 'disabled';\n var MODEL_EVENT_NAME_ENABLED = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ENABLED;\n var MODEL_PROP_NAME_SHOW = 'show';\n var MODEL_EVENT_NAME_SHOW = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SHOW; // --- Props ---\n\n var props$E = makePropsConfigurable((_makePropsConfigurabl = {\n // String: scrollParent, window, or viewport\n // Element: element reference\n // Object: Vue component\n boundary: makeProp([HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING], 'scrollParent'),\n boundaryPadding: makeProp(PROP_TYPE_NUMBER_STRING, 50),\n // String: HTML ID of container, if null body is used (default)\n // HTMLElement: element reference reference\n // Object: Vue Component\n container: makeProp([HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING]),\n customClass: makeProp(PROP_TYPE_STRING),\n delay: makeProp(PROP_TYPE_NUMBER_OBJECT_STRING, 50)\n }, _defineProperty(_makePropsConfigurabl, MODEL_PROP_NAME_ENABLED, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_makePropsConfigurabl, \"fallbackPlacement\", makeProp(PROP_TYPE_ARRAY_STRING, 'flip')), _defineProperty(_makePropsConfigurabl, \"id\", makeProp(PROP_TYPE_STRING)), _defineProperty(_makePropsConfigurabl, \"noFade\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_makePropsConfigurabl, \"noninteractive\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_makePropsConfigurabl, \"offset\", makeProp(PROP_TYPE_NUMBER_STRING, 0)), _defineProperty(_makePropsConfigurabl, \"placement\", makeProp(PROP_TYPE_STRING, 'top')), _defineProperty(_makePropsConfigurabl, MODEL_PROP_NAME_SHOW, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_makePropsConfigurabl, \"target\", makeProp([HTMLElement, SVGElement, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING], undefined, true)), _defineProperty(_makePropsConfigurabl, \"title\", makeProp(PROP_TYPE_STRING)), _defineProperty(_makePropsConfigurabl, \"triggers\", makeProp(PROP_TYPE_ARRAY_STRING, 'hover focus')), _defineProperty(_makePropsConfigurabl, \"variant\", makeProp(PROP_TYPE_STRING)), _makePropsConfigurabl), NAME_TOOLTIP); // --- Main component ---\n // @vue/component\n\n var BTooltip = /*#__PURE__*/extend({\n name: NAME_TOOLTIP,\n mixins: [normalizeSlotMixin, useParentMixin],\n inheritAttrs: false,\n props: props$E,\n data: function data() {\n return {\n localShow: this[MODEL_PROP_NAME_SHOW],\n localTitle: '',\n localContent: ''\n };\n },\n computed: {\n // Data that will be passed to the template and popper\n templateData: function templateData() {\n return _objectSpread2$3({\n title: this.localTitle,\n content: this.localContent,\n interactive: !this.noninteractive\n }, pick$1(this.$props, ['boundary', 'boundaryPadding', 'container', 'customClass', 'delay', 'fallbackPlacement', 'id', 'noFade', 'offset', 'placement', 'target', 'target', 'triggers', 'variant', MODEL_PROP_NAME_ENABLED]));\n },\n // Used to watch for changes to the title and content props\n templateTitleContent: function templateTitleContent() {\n var title = this.title,\n content = this.content;\n return {\n title: title,\n content: content\n };\n }\n },\n watch: (_watch$5 = {}, _defineProperty(_watch$5, MODEL_PROP_NAME_SHOW, function (newValue, oldValue) {\n if (newValue !== oldValue && newValue !== this.localShow && this.$_toolpop) {\n if (newValue) {\n this.$_toolpop.show();\n } else {\n // We use `forceHide()` to override any active triggers\n this.$_toolpop.forceHide();\n }\n }\n }), _defineProperty(_watch$5, MODEL_PROP_NAME_ENABLED, function (newValue) {\n if (newValue) {\n this.doDisable();\n } else {\n this.doEnable();\n }\n }), _defineProperty(_watch$5, \"localShow\", function localShow(newValue) {\n // TODO: May need to be done in a `$nextTick()`\n this.$emit(MODEL_EVENT_NAME_SHOW, newValue);\n }), _defineProperty(_watch$5, \"templateData\", function templateData() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.$_toolpop) {\n _this.$_toolpop.updateData(_this.templateData);\n }\n });\n }), _defineProperty(_watch$5, \"templateTitleContent\", function templateTitleContent() {\n this.$nextTick(this.updateContent);\n }), _watch$5),\n created: function created() {\n // Create private non-reactive props\n this.$_toolpop = null;\n },\n updated: function updated() {\n // Update the `propData` object\n // Done in a `$nextTick()` to ensure slot(s) have updated\n this.$nextTick(this.updateContent);\n },\n beforeDestroy: function beforeDestroy() {\n // Shutdown our local event listeners\n this.$off(EVENT_NAME_OPEN, this.doOpen);\n this.$off(EVENT_NAME_CLOSE, this.doClose);\n this.$off(EVENT_NAME_DISABLE, this.doDisable);\n this.$off(EVENT_NAME_ENABLE, this.doEnable); // Destroy the tip instance\n\n if (this.$_toolpop) {\n this.$_toolpop.$destroy();\n this.$_toolpop = null;\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n // Instantiate a new BVTooltip instance\n // Done in a `$nextTick()` to ensure DOM has completed rendering\n // so that target can be found\n this.$nextTick(function () {\n // Load the on demand child instance\n var Component = _this2.getComponent(); // Ensure we have initial content\n\n\n _this2.updateContent(); // Pass down the scoped style attribute if available\n\n\n var scopeId = getScopeId(_this2) || getScopeId(_this2.bvParent); // Create the instance\n\n var $toolpop = _this2.$_toolpop = createNewChildComponent(_this2, Component, {\n // Pass down the scoped style ID\n _scopeId: scopeId || undefined\n }); // Set the initial data\n\n $toolpop.updateData(_this2.templateData); // Set listeners\n\n $toolpop.$on(EVENT_NAME_SHOW, _this2.onShow);\n $toolpop.$on(EVENT_NAME_SHOWN, _this2.onShown);\n $toolpop.$on(EVENT_NAME_HIDE, _this2.onHide);\n $toolpop.$on(EVENT_NAME_HIDDEN, _this2.onHidden);\n $toolpop.$on(EVENT_NAME_DISABLED, _this2.onDisabled);\n $toolpop.$on(EVENT_NAME_ENABLED, _this2.onEnabled); // Initially disabled?\n\n if (_this2[MODEL_PROP_NAME_ENABLED]) {\n // Initially disabled\n _this2.doDisable();\n } // Listen to open signals from others\n\n\n _this2.$on(EVENT_NAME_OPEN, _this2.doOpen); // Listen to close signals from others\n\n\n _this2.$on(EVENT_NAME_CLOSE, _this2.doClose); // Listen to disable signals from others\n\n\n _this2.$on(EVENT_NAME_DISABLE, _this2.doDisable); // Listen to enable signals from others\n\n\n _this2.$on(EVENT_NAME_ENABLE, _this2.doEnable); // Initially show tooltip?\n\n\n if (_this2.localShow) {\n $toolpop.show();\n }\n });\n },\n methods: {\n getComponent: function getComponent() {\n // Overridden by BPopover\n return BVTooltip;\n },\n updateContent: function updateContent() {\n // Overridden by BPopover\n // Tooltip: Default slot is `title`\n // Popover: Default slot is `content`, `title` slot is title\n // We pass a scoped slot function reference by default (Vue v2.6x)\n // And pass the title prop as a fallback\n this.setTitle(this.normalizeSlot() || this.title);\n },\n // Helper methods for `updateContent()`\n setTitle: function setTitle(value) {\n value = isUndefinedOrNull(value) ? '' : value; // We only update the value if it has changed\n\n if (this.localTitle !== value) {\n this.localTitle = value;\n }\n },\n setContent: function setContent(value) {\n value = isUndefinedOrNull(value) ? '' : value; // We only update the value if it has changed\n\n if (this.localContent !== value) {\n this.localContent = value;\n }\n },\n // --- Template event handlers ---\n onShow: function onShow(bvEvent) {\n // Placeholder\n this.$emit(EVENT_NAME_SHOW, bvEvent);\n\n if (bvEvent) {\n this.localShow = !bvEvent.defaultPrevented;\n }\n },\n onShown: function onShown(bvEvent) {\n // Tip is now showing\n this.localShow = true;\n this.$emit(EVENT_NAME_SHOWN, bvEvent);\n },\n onHide: function onHide(bvEvent) {\n this.$emit(EVENT_NAME_HIDE, bvEvent);\n },\n onHidden: function onHidden(bvEvent) {\n // Tip is no longer showing\n this.$emit(EVENT_NAME_HIDDEN, bvEvent);\n this.localShow = false;\n },\n onDisabled: function onDisabled(bvEvent) {\n // Prevent possible endless loop if user mistakenly\n // fires `disabled` instead of `disable`\n if (bvEvent && bvEvent.type === EVENT_NAME_DISABLED) {\n this.$emit(MODEL_EVENT_NAME_ENABLED, true);\n this.$emit(EVENT_NAME_DISABLED, bvEvent);\n }\n },\n onEnabled: function onEnabled(bvEvent) {\n // Prevent possible endless loop if user mistakenly\n // fires `enabled` instead of `enable`\n if (bvEvent && bvEvent.type === EVENT_NAME_ENABLED) {\n this.$emit(MODEL_EVENT_NAME_ENABLED, false);\n this.$emit(EVENT_NAME_ENABLED, bvEvent);\n }\n },\n // --- Local event listeners ---\n doOpen: function doOpen() {\n !this.localShow && this.$_toolpop && this.$_toolpop.show();\n },\n doClose: function doClose() {\n this.localShow && this.$_toolpop && this.$_toolpop.hide();\n },\n doDisable: function doDisable() {\n this.$_toolpop && this.$_toolpop.disable();\n },\n doEnable: function doEnable() {\n this.$_toolpop && this.$_toolpop.enable();\n }\n },\n render: function render(h) {\n // Always renders a comment node\n // TODO:\n // Future: Possibly render a target slot (single root element)\n // which we can apply the listeners to (pass `this.$el` to BVTooltip)\n return h();\n }\n });\n\n var BVPopoverTemplate = /*#__PURE__*/extend({\n name: NAME_POPOVER_TEMPLATE,\n extends: BVTooltipTemplate,\n computed: {\n templateType: function templateType() {\n return 'popover';\n }\n },\n methods: {\n renderTemplate: function renderTemplate(h) {\n var title = this.title,\n content = this.content; // Title and content could be a scoped slot function\n\n var $title = isFunction$1(title) ? title({}) : title;\n var $content = isFunction$1(content) ? content({}) : content; // Directive usage only\n\n var titleDomProps = this.html && !isFunction$1(title) ? {\n innerHTML: title\n } : {};\n var contentDomProps = this.html && !isFunction$1(content) ? {\n innerHTML: content\n } : {};\n return h('div', {\n staticClass: 'popover b-popover',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n }, [h('div', {\n staticClass: 'arrow',\n ref: 'arrow'\n }), isUndefinedOrNull($title) || $title === '' ?\n /* istanbul ignore next */\n h() : h('h3', {\n staticClass: 'popover-header',\n domProps: titleDomProps\n }, [$title]), isUndefinedOrNull($content) || $content === '' ?\n /* istanbul ignore next */\n h() : h('div', {\n staticClass: 'popover-body',\n domProps: contentDomProps\n }, [$content])]);\n }\n }\n });\n\n // Popover \"Class\" (Built as a renderless Vue instance)\n\n var BVPopover = /*#__PURE__*/extend({\n name: NAME_POPOVER_HELPER,\n extends: BVTooltip,\n computed: {\n // Overwrites BVTooltip\n templateType: function templateType() {\n return 'popover';\n }\n },\n methods: {\n getTemplate: function getTemplate() {\n // Overwrites BVTooltip\n return BVPopoverTemplate;\n }\n }\n });\n\n var props$D = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$E), {}, {\n content: makeProp(PROP_TYPE_STRING),\n placement: makeProp(PROP_TYPE_STRING, 'right'),\n triggers: makeProp(PROP_TYPE_ARRAY_STRING, EVENT_NAME_CLICK)\n })), NAME_POPOVER); // --- Main component ---\n // @vue/component\n\n var BPopover = /*#__PURE__*/extend({\n name: NAME_POPOVER,\n extends: BTooltip,\n inheritAttrs: false,\n props: props$D,\n methods: {\n getComponent: function getComponent() {\n // Overridden by BPopover\n return BVPopover;\n },\n updateContent: function updateContent() {\n // Tooltip: Default slot is `title`\n // Popover: Default slot is `content`, `title` slot is title\n // We pass a scoped slot function references by default (Vue v2.6x)\n // And pass the title prop as a fallback\n this.setContent(this.normalizeSlot() || this.content);\n this.setTitle(this.normalizeSlot(SLOT_NAME_TITLE) || this.title);\n }\n } // Render function provided by BTooltip\n\n });\n\n var BV_POPOVER = '__BV_Popover__'; // Default trigger\n\n var DefaultTrigger$1 = 'click'; // Valid event triggers\n\n var validTriggers$1 = {\n focus: true,\n hover: true,\n click: true,\n blur: true,\n manual: true\n }; // Directive modifier test regular expressions. Pre-compile for performance\n\n var htmlRE$1 = /^html$/i;\n var noFadeRE$1 = /^nofade$/i;\n var placementRE$1 = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\n var boundaryRE$1 = /^(window|viewport|scrollParent)$/i;\n var delayRE$1 = /^d\\d+$/i;\n var delayShowRE$1 = /^ds\\d+$/i;\n var delayHideRE$1 = /^dh\\d+$/i;\n var offsetRE$2 = /^o-?\\d+$/i;\n var variantRE$1 = /^v-.+$/i;\n var spacesRE$1 = /\\s+/; // Build a Popover config based on bindings (if any)\n // Arguments and modifiers take precedence over passed value config object\n\n var parseBindings$2 = function parseBindings(bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n // We start out with a basic config\n var config = {\n title: undefined,\n content: undefined,\n trigger: '',\n // Default set below if needed\n placement: 'right',\n fallbackPlacement: 'flip',\n container: false,\n // Default of body\n animation: true,\n offset: 0,\n disabled: false,\n id: null,\n html: false,\n delay: getComponentConfig(NAME_POPOVER, 'delay', 50),\n boundary: String(getComponentConfig(NAME_POPOVER, 'boundary', 'scrollParent')),\n boundaryPadding: toInteger(getComponentConfig(NAME_POPOVER, 'boundaryPadding', 5), 0),\n variant: getComponentConfig(NAME_POPOVER, 'variant'),\n customClass: getComponentConfig(NAME_POPOVER, 'customClass')\n }; // Process `bindings.value`\n\n if (isString(bindings.value) || isNumber(bindings.value)) {\n // Value is popover content (html optionally supported)\n config.content = bindings.value;\n } else if (isFunction$1(bindings.value)) {\n // Content generator function\n config.content = bindings.value;\n } else if (isPlainObject(bindings.value)) {\n // Value is config object, so merge\n config = _objectSpread2$3(_objectSpread2$3({}, config), bindings.value);\n } // If argument, assume element ID of container element\n\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = \"#\".concat(bindings.arg);\n } // If title is not provided, try title attribute\n\n\n if (isUndefined(config.title)) {\n // Try attribute\n var data = vnode.data || {};\n config.title = data.attrs && !isUndefinedOrNull(data.attrs.title) ? data.attrs.title : undefined;\n } // Normalize delay\n\n\n if (!isPlainObject(config.delay)) {\n config.delay = {\n show: toInteger(config.delay, 0),\n hide: toInteger(config.delay, 0)\n };\n } // Process modifiers\n\n\n keys(bindings.modifiers).forEach(function (mod) {\n if (htmlRE$1.test(mod)) {\n // Title/content allows HTML\n config.html = true;\n } else if (noFadeRE$1.test(mod)) {\n // No animation\n config.animation = false;\n } else if (placementRE$1.test(mod)) {\n // Placement of popover\n config.placement = mod;\n } else if (boundaryRE$1.test(mod)) {\n // Boundary of popover\n mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n config.boundary = mod;\n } else if (delayRE$1.test(mod)) {\n // Delay value\n var delay = toInteger(mod.slice(1), 0);\n config.delay.show = delay;\n config.delay.hide = delay;\n } else if (delayShowRE$1.test(mod)) {\n // Delay show value\n config.delay.show = toInteger(mod.slice(2), 0);\n } else if (delayHideRE$1.test(mod)) {\n // Delay hide value\n config.delay.hide = toInteger(mod.slice(2), 0);\n } else if (offsetRE$2.test(mod)) {\n // Offset value, negative allowed\n config.offset = toInteger(mod.slice(1), 0);\n } else if (variantRE$1.test(mod)) {\n // Variant\n config.variant = mod.slice(2) || null;\n }\n }); // Special handling of event trigger modifiers trigger is\n // a space separated list\n\n var selectedTriggers = {}; // Parse current config object trigger\n\n concat(config.trigger || '').filter(identity).join(' ').trim().toLowerCase().split(spacesRE$1).forEach(function (trigger) {\n if (validTriggers$1[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Parse modifiers for triggers\n\n keys(bindings.modifiers).forEach(function (mod) {\n mod = mod.toLowerCase();\n\n if (validTriggers$1[mod]) {\n // If modifier is a valid trigger\n selectedTriggers[mod] = true;\n }\n }); // Sanitize triggers\n\n config.trigger = keys(selectedTriggers).join(' ');\n\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus';\n }\n\n if (!config.trigger) {\n // Use default trigger\n config.trigger = DefaultTrigger$1;\n }\n\n return config;\n }; // Add or update Popover on our element\n\n\n var applyPopover = function applyPopover(el, bindings, vnode) {\n if (!IS_BROWSER) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings$2(bindings, vnode);\n\n if (!el[BV_POPOVER]) {\n var parent = getInstanceFromDirective(vnode, bindings);\n el[BV_POPOVER] = createNewChildComponent(parent, BVPopover, {\n // Add the parent's scoped style attribute data\n _scopeId: getScopeId(parent, undefined)\n });\n el[BV_POPOVER].__bv_prev_data__ = {};\n el[BV_POPOVER].$on(EVENT_NAME_SHOW, function ()\n /* istanbul ignore next: for now */\n {\n // Before showing the popover, we update the title\n // and content if they are functions\n var data = {};\n\n if (isFunction$1(config.title)) {\n data.title = config.title(el);\n }\n\n if (isFunction$1(config.content)) {\n data.content = config.content(el);\n }\n\n if (keys(data).length > 0) {\n el[BV_POPOVER].updateData(data);\n }\n });\n }\n\n var data = {\n title: config.title,\n content: config.content,\n triggers: config.trigger,\n placement: config.placement,\n fallbackPlacement: config.fallbackPlacement,\n variant: config.variant,\n customClass: config.customClass,\n container: config.container,\n boundary: config.boundary,\n delay: config.delay,\n offset: config.offset,\n noFade: !config.animation,\n id: config.id,\n disabled: config.disabled,\n html: config.html\n };\n var oldData = el[BV_POPOVER].__bv_prev_data__;\n el[BV_POPOVER].__bv_prev_data__ = data;\n\n if (!looseEqual(data, oldData)) {\n // We only update the instance if data has changed\n var newData = {\n target: el\n };\n keys(data).forEach(function (prop) {\n // We only pass data properties that have changed\n if (data[prop] !== oldData[prop]) {\n // If title/content is a function, we execute it here\n newData[prop] = (prop === 'title' || prop === 'content') && isFunction$1(data[prop]) ?\n /* istanbul ignore next */\n data[prop](el) : data[prop];\n }\n });\n el[BV_POPOVER].updateData(newData);\n }\n }; // Remove Popover from our element\n\n\n var removePopover = function removePopover(el) {\n if (el[BV_POPOVER]) {\n el[BV_POPOVER].$destroy();\n el[BV_POPOVER] = null;\n }\n\n delete el[BV_POPOVER];\n }; // Export our directive\n\n\n var VBPopover = {\n bind: function bind(el, bindings, vnode) {\n applyPopover(el, bindings, vnode);\n },\n // We use `componentUpdated` here instead of `update`, as the former\n // waits until the containing component and children have finished updating\n componentUpdated: function componentUpdated(el, bindings, vnode) {\n // Performed in a `$nextTick()` to prevent endless render/update loops\n nextTick(function () {\n applyPopover(el, bindings, vnode);\n });\n },\n unbind: function unbind(el) {\n removePopover(el);\n }\n };\n\n var VBPopoverPlugin = /*#__PURE__*/pluginFactory({\n directives: {\n VBPopover: VBPopover\n }\n });\n\n var PopoverPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BPopover: BPopover\n },\n plugins: {\n VBPopoverPlugin: VBPopoverPlugin\n }\n });\n\n var props$C = makePropsConfigurable({\n animated: makeProp(PROP_TYPE_BOOLEAN, null),\n label: makeProp(PROP_TYPE_STRING),\n labelHtml: makeProp(PROP_TYPE_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING, null),\n precision: makeProp(PROP_TYPE_NUMBER_STRING, null),\n showProgress: makeProp(PROP_TYPE_BOOLEAN, null),\n showValue: makeProp(PROP_TYPE_BOOLEAN, null),\n striped: makeProp(PROP_TYPE_BOOLEAN, null),\n value: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n variant: makeProp(PROP_TYPE_STRING)\n }, NAME_PROGRESS_BAR); // --- Main component ---\n // @vue/component\n\n var BProgressBar = /*#__PURE__*/extend({\n name: NAME_PROGRESS_BAR,\n mixins: [normalizeSlotMixin],\n inject: {\n getBvProgress: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n props: props$C,\n computed: {\n bvProgress: function bvProgress() {\n return this.getBvProgress();\n },\n progressBarClasses: function progressBarClasses() {\n var computedAnimated = this.computedAnimated,\n computedVariant = this.computedVariant;\n return [computedVariant ? \"bg-\".concat(computedVariant) : '', this.computedStriped || computedAnimated ? 'progress-bar-striped' : '', computedAnimated ? 'progress-bar-animated' : ''];\n },\n progressBarStyles: function progressBarStyles() {\n return {\n width: 100 * (this.computedValue / this.computedMax) + '%'\n };\n },\n computedValue: function computedValue() {\n return toFloat(this.value, 0);\n },\n computedMax: function computedMax() {\n // Prefer our max over parent setting\n // Default to `100` for invalid values (`-x`, `0`, `NaN`)\n var max = toFloat(this.max) || toFloat(this.bvProgress.max, 0);\n return max > 0 ? max : 100;\n },\n computedPrecision: function computedPrecision() {\n // Prefer our precision over parent setting\n // Default to `0` for invalid values (`-x`, `NaN`)\n return mathMax(toInteger(this.precision, toInteger(this.bvProgress.precision, 0)), 0);\n },\n computedProgress: function computedProgress() {\n var precision = this.computedPrecision;\n var p = mathPow(10, precision);\n return toFixed(100 * p * this.computedValue / this.computedMax / p, precision);\n },\n computedVariant: function computedVariant() {\n // Prefer our variant over parent setting\n return this.variant || this.bvProgress.variant;\n },\n computedStriped: function computedStriped() {\n // Prefer our striped over parent setting\n return isBoolean(this.striped) ? this.striped : this.bvProgress.striped || false;\n },\n computedAnimated: function computedAnimated() {\n // Prefer our animated over parent setting\n return isBoolean(this.animated) ? this.animated : this.bvProgress.animated || false;\n },\n computedShowProgress: function computedShowProgress() {\n // Prefer our showProgress over parent setting\n return isBoolean(this.showProgress) ? this.showProgress : this.bvProgress.showProgress || false;\n },\n computedShowValue: function computedShowValue() {\n // Prefer our showValue over parent setting\n return isBoolean(this.showValue) ? this.showValue : this.bvProgress.showValue || false;\n }\n },\n render: function render(h) {\n var label = this.label,\n labelHtml = this.labelHtml,\n computedValue = this.computedValue,\n computedPrecision = this.computedPrecision;\n var $children;\n var domProps = {};\n\n if (this.hasNormalizedSlot()) {\n $children = this.normalizeSlot();\n } else if (label || labelHtml) {\n domProps = htmlOrText(labelHtml, label);\n } else if (this.computedShowProgress) {\n $children = this.computedProgress;\n } else if (this.computedShowValue) {\n $children = toFixed(computedValue, computedPrecision);\n }\n\n return h('div', {\n staticClass: 'progress-bar',\n class: this.progressBarClasses,\n style: this.progressBarStyles,\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': toString(this.computedMax),\n 'aria-valuenow': toFixed(computedValue, computedPrecision)\n },\n domProps: domProps\n }, $children);\n }\n });\n\n var progressBarProps = omit(props$C, ['label', 'labelHtml']);\n var props$B = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, progressBarProps), {}, {\n animated: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING, 100),\n precision: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n showProgress: makeProp(PROP_TYPE_BOOLEAN, false),\n showValue: makeProp(PROP_TYPE_BOOLEAN, false),\n striped: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_PROGRESS); // --- Main component ---\n // @vue/component\n\n var BProgress = /*#__PURE__*/extend({\n name: NAME_PROGRESS,\n mixins: [normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvProgress: function getBvProgress() {\n return _this;\n }\n };\n },\n props: props$B,\n computed: {\n progressHeight: function progressHeight() {\n return {\n height: this.height || null\n };\n }\n },\n render: function render(h) {\n var $childNodes = this.normalizeSlot();\n\n if (!$childNodes) {\n $childNodes = h(BProgressBar, {\n props: pluckProps(progressBarProps, this.$props)\n });\n }\n\n return h('div', {\n staticClass: 'progress',\n style: this.progressHeight\n }, [$childNodes]);\n }\n });\n\n var ProgressPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BProgress: BProgress,\n BProgressBar: BProgressBar\n }\n });\n\n var _watch$4;\n\n var CLASS_NAME = 'b-sidebar';\n var ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\n var ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\n var ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\n var ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\n var _makeModelMixin$3 = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false,\n event: EVENT_NAME_CHANGE\n }),\n modelMixin$3 = _makeModelMixin$3.mixin,\n modelProps$3 = _makeModelMixin$3.props,\n MODEL_PROP_NAME$3 = _makeModelMixin$3.prop,\n MODEL_EVENT_NAME$3 = _makeModelMixin$3.event; // --- Props ---\n\n\n var props$A = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$3), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // If `true`, shows a basic backdrop\n backdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n backdropVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n bgVariant: makeProp(PROP_TYPE_STRING, 'light'),\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // `aria-label` for close button\n closeLabel: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerTag: makeProp(PROP_TYPE_STRING, 'footer'),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnEsc: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnRouteChange: makeProp(PROP_TYPE_BOOLEAN, false),\n noEnforceFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeaderClose: makeProp(PROP_TYPE_BOOLEAN, false),\n noSlide: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n shadow: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sidebarClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n title: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING)\n })), NAME_SIDEBAR); // --- Render methods ---\n\n var renderHeaderTitle = function renderHeaderTitle(h, ctx) {\n // Render a empty `<span>` when to title was provided\n var title = ctx.normalizeSlot(SLOT_NAME_TITLE, ctx.slotScope) || ctx.title;\n\n if (!title) {\n return h('span');\n }\n\n return h('strong', {\n attrs: {\n id: ctx.safeId('__title__')\n }\n }, [title]);\n };\n\n var renderHeaderClose = function renderHeaderClose(h, ctx) {\n if (ctx.noHeaderClose) {\n return h();\n }\n\n var closeLabel = ctx.closeLabel,\n textVariant = ctx.textVariant,\n hide = ctx.hide;\n return h(BButtonClose, {\n props: {\n ariaLabel: closeLabel,\n textVariant: textVariant\n },\n on: {\n click: hide\n },\n ref: 'close-button'\n }, [ctx.normalizeSlot(SLOT_NAME_HEADER_CLOSE) || h(BIconX)]);\n };\n\n var renderHeader = function renderHeader(h, ctx) {\n if (ctx.noHeader) {\n return h();\n }\n\n var $content = ctx.normalizeSlot(SLOT_NAME_HEADER, ctx.slotScope);\n\n if (!$content) {\n var $title = renderHeaderTitle(h, ctx);\n var $close = renderHeaderClose(h, ctx);\n $content = ctx.right ? [$close, $title] : [$title, $close];\n }\n\n return h(ctx.headerTag, {\n staticClass: \"\".concat(CLASS_NAME, \"-header\"),\n class: ctx.headerClass,\n key: 'header'\n }, $content);\n };\n\n var renderBody = function renderBody(h, ctx) {\n return h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-body\"),\n class: ctx.bodyClass,\n key: 'body'\n }, [ctx.normalizeSlot(SLOT_NAME_DEFAULT, ctx.slotScope)]);\n };\n\n var renderFooter = function renderFooter(h, ctx) {\n var $footer = ctx.normalizeSlot(SLOT_NAME_FOOTER, ctx.slotScope);\n\n if (!$footer) {\n return h();\n }\n\n return h(ctx.footerTag, {\n staticClass: \"\".concat(CLASS_NAME, \"-footer\"),\n class: ctx.footerClass,\n key: 'footer'\n }, [$footer]);\n };\n\n var renderContent = function renderContent(h, ctx) {\n // We render the header even if `lazy` is enabled as it\n // acts as the accessible label for the sidebar\n var $header = renderHeader(h, ctx);\n\n if (ctx.lazy && !ctx.isOpen) {\n return $header;\n }\n\n return [$header, renderBody(h, ctx), renderFooter(h, ctx)];\n };\n\n var renderBackdrop = function renderBackdrop(h, ctx) {\n if (!ctx.backdrop) {\n return h();\n }\n\n var backdropVariant = ctx.backdropVariant;\n return h('div', {\n directives: [{\n name: 'show',\n value: ctx.localShow\n }],\n staticClass: 'b-sidebar-backdrop',\n class: _defineProperty({}, \"bg-\".concat(backdropVariant), backdropVariant),\n on: {\n click: ctx.onBackdropClick\n }\n });\n }; // --- Main component ---\n // @vue/component\n\n\n var BSidebar = /*#__PURE__*/extend({\n name: NAME_SIDEBAR,\n mixins: [attrsMixin, idMixin, modelMixin$3, listenOnRootMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props$A,\n data: function data() {\n var visible = !!this[MODEL_PROP_NAME$3];\n return {\n // Internal `v-model` state\n localShow: visible,\n // For lazy render triggering\n isOpen: visible\n };\n },\n computed: {\n transitionProps: function transitionProps() {\n return this.noSlide ?\n /* istanbul ignore next */\n {\n css: true\n } : {\n css: true,\n enterClass: '',\n enterActiveClass: 'slide',\n enterToClass: 'show',\n leaveClass: 'show',\n leaveActiveClass: 'slide',\n leaveToClass: ''\n };\n },\n slotScope: function slotScope() {\n var hide = this.hide,\n right = this.right,\n visible = this.localShow;\n return {\n hide: hide,\n right: right,\n visible: visible\n };\n },\n hasTitle: function hasTitle() {\n var $scopedSlots = this.$scopedSlots,\n $slots = this.$slots;\n return !this.noHeader && !this.hasNormalizedSlot(SLOT_NAME_HEADER) && !!(this.normalizeSlot(SLOT_NAME_TITLE, this.slotScope, $scopedSlots, $slots) || this.title);\n },\n titleId: function titleId() {\n return this.hasTitle ? this.safeId('__title__') : null;\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread2$3(_objectSpread2$3({}, this.bvAttrs), {}, {\n id: this.safeId(),\n tabindex: '-1',\n role: 'dialog',\n 'aria-modal': this.backdrop ? 'true' : 'false',\n 'aria-hidden': this.localShow ? null : 'true',\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || this.titleId || null\n });\n }\n },\n watch: (_watch$4 = {}, _defineProperty(_watch$4, MODEL_PROP_NAME$3, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localShow = newValue;\n }\n }), _defineProperty(_watch$4, \"localShow\", function localShow(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState(newValue);\n this.$emit(MODEL_EVENT_NAME$3, newValue);\n }\n }), _defineProperty(_watch$4, \"$route\", function $route() {\n var newValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var oldValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.noCloseOnRouteChange && newValue.fullPath !== oldValue.fullPath) {\n this.hide();\n }\n }), _watch$4),\n created: function created() {\n // Define non-reactive properties\n this.$_returnFocusEl = null;\n },\n mounted: function mounted() {\n var _this = this;\n\n // Add `$root` listeners\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggle);\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, this.handleSync); // Send out a gratuitous state event to ensure toggle button is synced\n\n this.$nextTick(function () {\n _this.emitState(_this.localShow);\n });\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n this.localShow = false;\n this.$_returnFocusEl = null;\n },\n methods: {\n hide: function hide() {\n this.localShow = false;\n },\n emitState: function emitState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, this.safeId(), state);\n },\n emitSync: function emitSync() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), state);\n },\n handleToggle: function handleToggle(id) {\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.localShow = !this.localShow;\n }\n },\n handleSync: function handleSync(id) {\n var _this2 = this;\n\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.$nextTick(function () {\n _this2.emitSync(_this2.localShow);\n });\n }\n },\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (!this.noCloseOnEsc && keyCode === CODE_ESC && this.localShow) {\n this.hide();\n }\n },\n onBackdropClick: function onBackdropClick() {\n if (this.localShow && !this.noCloseOnBackdrop) {\n this.hide();\n }\n },\n\n /* istanbul ignore next */\n onTopTrapFocus: function onTopTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables.reverse()[0]);\n },\n\n /* istanbul ignore next */\n onBottomTrapFocus: function onBottomTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables[0]);\n },\n onBeforeEnter: function onBeforeEnter() {\n // Returning focus to `document.body` may cause unwanted scrolls,\n // so we exclude setting focus on body\n this.$_returnFocusEl = getActiveElement(IS_BROWSER ? [document.body] : []); // Trigger lazy render\n\n this.isOpen = true;\n },\n onAfterEnter: function onAfterEnter(el) {\n if (!contains(el, getActiveElement())) {\n this.enforceFocus(el);\n }\n\n this.$emit(EVENT_NAME_SHOWN);\n },\n onAfterLeave: function onAfterLeave() {\n this.enforceFocus(this.$_returnFocusEl);\n this.$_returnFocusEl = null; // Trigger lazy render\n\n this.isOpen = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n enforceFocus: function enforceFocus(el) {\n if (!this.noEnforceFocus) {\n attemptFocus(el);\n }\n }\n },\n render: function render(h) {\n var _ref;\n\n var bgVariant = this.bgVariant,\n width = this.width,\n textVariant = this.textVariant,\n localShow = this.localShow;\n var shadow = this.shadow === '' ? true : this.shadow;\n var $sidebar = h(this.tag, {\n staticClass: CLASS_NAME,\n class: [(_ref = {\n shadow: shadow === true\n }, _defineProperty(_ref, \"shadow-\".concat(shadow), shadow && shadow !== true), _defineProperty(_ref, \"\".concat(CLASS_NAME, \"-right\"), this.right), _defineProperty(_ref, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_ref, \"text-\".concat(textVariant), textVariant), _ref), this.sidebarClass],\n style: {\n width: width\n },\n attrs: this.computedAttrs,\n directives: [{\n name: 'show',\n value: localShow\n }],\n ref: 'content'\n }, [renderContent(h, this)]);\n $sidebar = h('transition', {\n props: this.transitionProps,\n on: {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n afterLeave: this.onAfterLeave\n }\n }, [$sidebar]);\n var $backdrop = h(BVTransition, {\n props: {\n noFade: this.noSlide\n }\n }, [renderBackdrop(h, this)]);\n var $tabTrapTop = h();\n var $tabTrapBottom = h();\n\n if (this.backdrop && localShow) {\n $tabTrapTop = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onTopTrapFocus\n }\n });\n $tabTrapBottom = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onBottomTrapFocus\n }\n });\n }\n\n return h('div', {\n staticClass: 'b-sidebar-outer',\n style: {\n zIndex: this.zIndex\n },\n attrs: {\n tabindex: '-1'\n },\n on: {\n keydown: this.onKeydown\n }\n }, [$tabTrapTop, $sidebar, $tabTrapBottom, $backdrop]);\n }\n });\n\n var SidebarPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BSidebar: BSidebar\n },\n plugins: {\n VBTogglePlugin: VBTogglePlugin\n }\n });\n\n var props$z = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING, 'wave'),\n height: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n type: makeProp(PROP_TYPE_STRING, 'text'),\n variant: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING)\n }, NAME_SKELETON); // --- Main component ---\n // @vue/component\n\n var BSkeleton = /*#__PURE__*/extend({\n name: NAME_SKELETON,\n functional: true,\n props: props$z,\n render: function render(h, _ref) {\n var _class;\n\n var data = _ref.data,\n props = _ref.props;\n var size = props.size,\n animation = props.animation,\n variant = props.variant;\n return h('div', a(data, {\n staticClass: 'b-skeleton',\n style: {\n width: size || props.width,\n height: size || props.height\n },\n class: (_class = {}, _defineProperty(_class, \"b-skeleton-\".concat(props.type), true), _defineProperty(_class, \"b-skeleton-animate-\".concat(animation), animation), _defineProperty(_class, \"bg-\".concat(variant), variant), _class)\n }));\n }\n });\n\n makePropsConfigurable(omit(props$2h, ['content', 'stacked']), NAME_ICONSTACK); // --- Main component ---\n\n var props$y = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING, 'wave'),\n icon: makeProp(PROP_TYPE_STRING),\n iconProps: makeProp(PROP_TYPE_OBJECT, {})\n }, NAME_SKELETON_ICON); // --- Main component ---\n // @vue/component\n\n var BSkeletonIcon = /*#__PURE__*/extend({\n name: NAME_SKELETON_ICON,\n functional: true,\n props: props$y,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props;\n var icon = props.icon,\n animation = props.animation;\n var $icon = h(BIcon, {\n staticClass: 'b-skeleton-icon',\n props: _objectSpread2$3(_objectSpread2$3({}, props.iconProps), {}, {\n icon: icon\n })\n });\n return h('div', a(data, {\n staticClass: 'b-skeleton-icon-wrapper position-relative d-inline-block overflow-hidden',\n class: _defineProperty({}, \"b-skeleton-animate-\".concat(animation), animation)\n }), [$icon]);\n }\n });\n\n var props$x = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING),\n aspect: makeProp(PROP_TYPE_STRING, '16:9'),\n cardImg: makeProp(PROP_TYPE_STRING),\n height: makeProp(PROP_TYPE_STRING),\n noAspect: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING)\n }, NAME_SKELETON_IMG); // --- Main component ---\n // @vue/component\n\n var BSkeletonImg = /*#__PURE__*/extend({\n name: NAME_SKELETON_IMG,\n functional: true,\n props: props$x,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props;\n var aspect = props.aspect,\n width = props.width,\n height = props.height,\n animation = props.animation,\n variant = props.variant,\n cardImg = props.cardImg;\n var $img = h(BSkeleton, a(data, {\n props: {\n type: 'img',\n width: width,\n height: height,\n animation: animation,\n variant: variant\n },\n class: _defineProperty({}, \"card-img-\".concat(cardImg), cardImg)\n }));\n return props.noAspect ? $img : h(BAspect, {\n props: {\n aspect: aspect\n }\n }, [$img]);\n }\n });\n\n // Mixin to determine if an event listener has been registered\n\n var hasListenerMixin = extend({\n methods: {\n hasListener: function hasListener(name) {\n if (isVue3) {\n return true;\n } // Only includes listeners registered via `v-on:name`\n\n\n var $listeners = this.$listeners || {}; // Includes `v-on:name` and `this.$on('name')` registered listeners\n // Note this property is not part of the public Vue API, but it is\n // the only way to determine if a listener was added via `vm.$on`\n\n var $events = this._events || {}; // Registered listeners in `this._events` are always an array,\n // but might be zero length\n\n return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\n }\n }\n });\n\n var LIGHT = 'light';\n var DARK = 'dark'; // --- Props ---\n\n var props$w = makePropsConfigurable({\n variant: makeProp(PROP_TYPE_STRING)\n }, NAME_TR); // --- Main component ---\n // TODO:\n // In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n // to the child elements, so this can be converted to a functional component\n // @vue/component\n\n var BTr = /*#__PURE__*/extend({\n name: NAME_TR,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTableTr: function getBvTableTr() {\n return _this;\n }\n };\n },\n inject: {\n getBvTableRowGroup: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props$w,\n computed: {\n bvTableRowGroup: function bvTableRowGroup() {\n return this.getBvTableRowGroup();\n },\n // Sniffed by `<b-td>` / `<b-th>`\n inTbody: function inTbody() {\n return this.bvTableRowGroup.isTbody;\n },\n // Sniffed by `<b-td>` / `<b-th>`\n inThead: function inThead() {\n return this.bvTableRowGroup.isThead;\n },\n // Sniffed by `<b-td>` / `<b-th>`\n inTfoot: function inTfoot() {\n return this.bvTableRowGroup.isTfoot;\n },\n // Sniffed by `<b-td>` / `<b-th>`\n isDark: function isDark() {\n return this.bvTableRowGroup.isDark;\n },\n // Sniffed by `<b-td>` / `<b-th>`\n isStacked: function isStacked() {\n return this.bvTableRowGroup.isStacked;\n },\n // Sniffed by `<b-td>` / `<b-th>`\n isResponsive: function isResponsive() {\n return this.bvTableRowGroup.isResponsive;\n },\n // Sniffed by `<b-td>` / `<b-th>`\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return this.bvTableRowGroup.isStickyHeader;\n },\n // Sniffed by <b-tr> / `<b-td>` / `<b-th>`\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n },\n // Sniffed by `<b-td>` / `<b-th>`\n tableVariant: function tableVariant() {\n return this.bvTableRowGroup.tableVariant;\n },\n // Sniffed by `<b-td>` / `<b-th>`\n headVariant: function headVariant() {\n return this.inThead ? this.bvTableRowGroup.headVariant : null;\n },\n // Sniffed by `<b-td>` / `<b-th>`\n footVariant: function footVariant() {\n return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n },\n isRowDark: function isRowDark() {\n return this.headVariant === LIGHT || this.footVariant === LIGHT ?\n /* istanbul ignore next */\n false : this.headVariant === DARK || this.footVariant === DARK ?\n /* istanbul ignore next */\n true : this.isDark;\n },\n trClasses: function trClasses() {\n var variant = this.variant;\n return [variant ? \"\".concat(this.isRowDark ? 'bg' : 'table', \"-\").concat(variant) : null];\n },\n trAttrs: function trAttrs() {\n return _objectSpread2$3({\n role: 'row'\n }, this.bvAttrs);\n }\n },\n render: function render(h) {\n return h('tr', {\n class: this.trClasses,\n attrs: this.trAttrs,\n // Pass native listeners to child\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n });\n\n var props$v = {}; // --- Mixin ---\n // @vue/component\n\n var bottomRowMixin = extend({\n props: props$v,\n methods: {\n renderBottomRow: function renderBottomRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-bottom-row',\n class: [isFunction$1(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n attrs: isFunction$1(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n key: 'b-bottom-row'\n }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n columns: fields.length,\n fields: fields\n }));\n }\n }\n });\n\n // Parse a rowspan or colspan into a digit (or `null` if < `1` )\n\n var parseSpan = function parseSpan(value) {\n value = toInteger(value, 0);\n return value > 0 ? value : null;\n };\n /* istanbul ignore next */\n\n\n var spanValidator = function spanValidator(value) {\n return isUndefinedOrNull(value) || parseSpan(value) > 0;\n }; // --- Props ---\n\n\n var props$u = makePropsConfigurable({\n colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n stackedHeading: makeProp(PROP_TYPE_STRING),\n stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING)\n }, NAME_TABLE_CELL); // --- Main component ---\n // TODO:\n // In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n // to the child elements, so this can be converted to a functional component\n // @vue/component\n\n var BTd = /*#__PURE__*/extend({\n name: NAME_TABLE_CELL,\n // Mixin order is important!\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n inject: {\n getBvTableTr: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props$u,\n computed: {\n bvTableTr: function bvTableTr() {\n return this.getBvTableTr();\n },\n // Overridden by `<b-th>`\n tag: function tag() {\n return 'td';\n },\n inTbody: function inTbody() {\n return this.bvTableTr.inTbody;\n },\n inThead: function inThead() {\n return this.bvTableTr.inThead;\n },\n inTfoot: function inTfoot() {\n return this.bvTableTr.inTfoot;\n },\n isDark: function isDark() {\n return this.bvTableTr.isDark;\n },\n isStacked: function isStacked() {\n return this.bvTableTr.isStacked;\n },\n // We only support stacked-heading in tbody in stacked mode\n isStackedCell: function isStackedCell() {\n return this.inTbody && this.isStacked;\n },\n isResponsive: function isResponsive() {\n return this.bvTableTr.isResponsive;\n },\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky headers only apply to cells in table `thead`\n isStickyHeader: function isStickyHeader() {\n return this.bvTableTr.isStickyHeader;\n },\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return this.bvTableTr.hasStickyHeader;\n },\n // Needed to handle background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky column cells are only available in responsive\n // mode (horizontal scrolling) or when sticky header mode\n // Applies to cells in `thead`, `tbody` and `tfoot`\n isStickyColumn: function isStickyColumn() {\n return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n },\n rowVariant: function rowVariant() {\n return this.bvTableTr.variant;\n },\n headVariant: function headVariant() {\n return this.bvTableTr.headVariant;\n },\n footVariant: function footVariant() {\n return this.bvTableTr.footVariant;\n },\n tableVariant: function tableVariant() {\n return this.bvTableTr.tableVariant;\n },\n computedColspan: function computedColspan() {\n return parseSpan(this.colspan);\n },\n computedRowspan: function computedRowspan() {\n return parseSpan(this.rowspan);\n },\n // We use computed props here for improved performance by caching\n // the results of the string interpolation\n cellClasses: function cellClasses() {\n var variant = this.variant,\n headVariant = this.headVariant,\n isStickyColumn = this.isStickyColumn;\n\n if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n // Needed for sticky-header mode as Bootstrap v4 table cells do\n // not inherit parent's `background-color`\n variant = this.rowVariant || this.tableVariant || 'b-table-default';\n }\n\n return [variant ? \"\".concat(this.isDark ? 'bg' : 'table', \"-\").concat(variant) : null, isStickyColumn ? 'b-table-sticky-column' : null];\n },\n cellAttrs: function cellAttrs() {\n var stackedHeading = this.stackedHeading; // We use computed props here for improved performance by caching\n // the results of the object spread (Object.assign)\n\n var headOrFoot = this.inThead || this.inTfoot; // Make sure col/rowspan's are > 0 or null\n\n var colspan = this.computedColspan;\n var rowspan = this.computedRowspan; // Default role and scope\n\n var role = 'cell';\n var scope = null; // Compute role and scope\n // We only add scopes with an explicit span of 1 or greater\n\n if (headOrFoot) {\n // Header or footer cells\n role = 'columnheader';\n scope = colspan > 0 ? 'colspan' : 'col';\n } else if (isTag(this.tag, 'th')) {\n // th's in tbody\n role = 'rowheader';\n scope = rowspan > 0 ? 'rowgroup' : 'row';\n }\n\n return _objectSpread2$3(_objectSpread2$3({\n colspan: colspan,\n rowspan: rowspan,\n role: role,\n scope: scope\n }, this.bvAttrs), {}, {\n // Add in the stacked cell label data-attribute if in\n // stacked mode (if a stacked heading label is provided)\n 'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ?\n /* istanbul ignore next */\n toString(stackedHeading) : null\n });\n }\n },\n render: function render(h) {\n var $content = [this.normalizeSlot()];\n return h(this.tag, {\n class: this.cellClasses,\n attrs: this.cellAttrs,\n // Transfer any native listeners\n on: this.bvListeners\n }, [this.isStackedCell ? h('div', [$content]) : $content]);\n }\n });\n\n var MODEL_PROP_NAME_BUSY = 'busy';\n var MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\n var props$t = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n // @vue/component\n\n var busyMixin = extend({\n props: props$t,\n data: function data() {\n return {\n localBusy: false\n };\n },\n computed: {\n computedBusy: function computedBusy() {\n return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n }\n },\n watch: {\n localBusy: function localBusy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n }\n }\n },\n methods: {\n // Event handler helper\n stopIfBusy: function stopIfBusy(event) {\n // If table is busy (via provider) then don't propagate\n if (this.computedBusy) {\n stopEvent(event);\n return true;\n }\n\n return false;\n },\n // Render the busy indicator or return `null` if not busy\n renderBusy: function renderBusy() {\n var tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n return h(BTr, {\n staticClass: 'b-table-busy-slot',\n class: [isFunction$1(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n attrs: isFunction$1(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n key: 'table-busy-slot'\n }, [h(BTd, {\n props: {\n colspan: this.computedFields.length || null\n }\n }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n } // We return `null` here so that we can determine if we need to\n // render the table items rows or not\n\n\n return null;\n }\n }\n });\n\n var props$s = {\n caption: makeProp(PROP_TYPE_STRING),\n captionHtml: makeProp(PROP_TYPE_STRING) // `caption-top` is part of table-render mixin (styling)\n // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n\n }; // --- Mixin ---\n // @vue/component\n\n var captionMixin = extend({\n props: props$s,\n computed: {\n captionId: function captionId() {\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var caption = this.caption,\n captionHtml = this.captionHtml;\n var h = this.$createElement;\n var $caption = h();\n var hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n\n if (hasCaptionSlot || caption || captionHtml) {\n $caption = h('caption', {\n attrs: {\n id: this.captionId\n },\n domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n key: 'caption',\n ref: 'caption'\n }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n }\n\n return $caption;\n }\n }\n });\n\n var props$r = {}; // --- Mixin ---\n // @vue/component\n\n var colgroupMixin = extend({\n methods: {\n renderColgroup: function renderColgroup() {\n var fields = this.computedFields;\n var h = this.$createElement;\n var $colgroup = h();\n\n if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\n }\n }\n });\n\n var props$q = {\n emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n emptyHtml: makeProp(PROP_TYPE_STRING),\n emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n }; // --- Mixin ---\n // @vue/component\n\n var emptyMixin = extend({\n props: props$q,\n methods: {\n renderEmpty: function renderEmpty() {\n var _safeVueInstance = safeVueInstance(this),\n items = _safeVueInstance.computedItems,\n computedBusy = _safeVueInstance.computedBusy;\n\n var h = this.$createElement;\n var $empty = h();\n\n if (this.showEmpty && (!items || items.length === 0) && !(computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n var fields = this.computedFields,\n isFiltered = this.isFiltered,\n emptyText = this.emptyText,\n emptyHtml = this.emptyHtml,\n emptyFilteredText = this.emptyFilteredText,\n emptyFilteredHtml = this.emptyFilteredHtml,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n emptyFilteredHtml: emptyFilteredHtml,\n emptyFilteredText: emptyFilteredText,\n emptyHtml: emptyHtml,\n emptyText: emptyText,\n fields: fields,\n // Not sure why this is included, as it will always be an empty array\n items: items\n });\n\n if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n });\n }\n\n $empty = h(BTd, {\n props: {\n colspan: fields.length || null\n }\n }, [h('div', {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite'\n }\n }, [$empty])]);\n $empty = h(BTr, {\n staticClass: 'b-table-empty-row',\n class: [isFunction$1(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n attrs: isFunction$1(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n }, [$empty]);\n }\n\n return $empty;\n }\n }\n });\n\n // SSR safe deterministic way (keys are sorted before stringification)\n //\n // ex:\n // { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n // becomes\n // 'one 3 2 zzz 10 12 11'\n //\n // Strings are returned as-is\n // Numbers get converted to string\n // `null` and `undefined` values are filtered out\n // Dates are converted to their native string format\n\n var stringifyObjectValues = function stringifyObjectValues(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n } // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n\n\n if (isObject(value) && !isDate(value)) {\n return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .map(function (k) {\n return stringifyObjectValues(value[k]);\n }).filter(function (v) {\n return !!v;\n }) // Ignore empty strings\n .join(' ');\n }\n\n return toString(value);\n };\n\n // Constants used by table helpers\n var FIELD_KEY_CELL_VARIANT = '_cellVariants';\n var FIELD_KEY_ROW_VARIANT = '_rowVariant';\n var FIELD_KEY_SHOW_DETAILS = '_showDetails'; // Object of item keys that should be ignored for headers and\n // stringification and filter events\n\n var IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce(function (result, key) {\n return _objectSpread2$3(_objectSpread2$3({}, result), {}, _defineProperty({}, key, true));\n }, {}); // Filter CSS selector for click/dblclick/etc. events\n // If any of these selectors match the clicked element, we ignore the event\n\n var EVENT_FILTER = ['a', 'a *', // Include content inside links\n 'button', 'button *', // Include content inside buttons\n 'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');\n\n var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // We first need to format the row based on the field configurations\n // This ensures that we add formatted values for keys that may not\n // exist in the row itself\n var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n var field = fieldsObj[key];\n var filterByFormatted = field.filterByFormatted;\n var formatter = isFunction$1(filterByFormatted) ?\n /* istanbul ignore next */\n filterByFormatted : filterByFormatted ?\n /* istanbul ignore next */\n field.formatter : null;\n\n if (isFunction$1(formatter)) {\n result[key] = formatter(row[key], key, row);\n }\n\n return result;\n }, clone(row)); // Determine the allowed keys:\n // - Ignore special fields that start with `_`\n // - Ignore fields in the `ignoreFields` array\n // - Include only fields in the `includeFields` array\n\n var allowedKeys = keys(formattedRow).filter(function (key) {\n return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n });\n return pick$1(formattedRow, allowedKeys);\n };\n\n // TODO: Add option to stringify `scopedSlot` items\n\n var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n /* istanbul ignore next */\n '';\n };\n\n var DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"<b-form-input>\" instead.'; // --- Props ---\n\n var props$p = {\n filter: makeProp([].concat(_toConsumableArray$1(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n return RX_DIGITS.test(String(value));\n }),\n filterFunction: makeProp(PROP_TYPE_FUNCTION),\n filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n }; // --- Mixin ---\n // @vue/component\n\n var filteringMixin = extend({\n props: props$p,\n data: function data() {\n return {\n // Flag for displaying which empty slot to show and some event triggering\n isFiltered: false,\n // Where we store the copy of the filter criteria after debouncing\n // We pre-set it with the sanitized filter value\n localFilter: this.filterSanitize(this.filter)\n };\n },\n computed: {\n computedFilterIgnored: function computedFilterIgnored() {\n return concat(this.filterIgnoredFields || []).filter(identity);\n },\n computedFilterIncluded: function computedFilterIncluded() {\n return concat(this.filterIncludedFields || []).filter(identity);\n },\n computedFilterDebounce: function computedFilterDebounce() {\n var ms = toInteger(this.filterDebounce, 0);\n /* istanbul ignore next */\n\n if (ms > 0) {\n warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n }\n\n return ms;\n },\n localFiltering: function localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true;\n },\n // For watching changes to `filteredItems` vs `localItems`\n filteredCheck: function filteredCheck() {\n var filteredItems = this.filteredItems,\n localItems = this.localItems,\n localFilter = this.localFilter;\n return {\n filteredItems: filteredItems,\n localItems: localItems,\n localFilter: localFilter\n };\n },\n // Sanitized/normalize filter-function prop\n localFilterFn: function localFilterFn() {\n // Return `null` to signal to use internal filter function\n var filterFunction = this.filterFunction;\n return hasPropFunction(filterFunction) ? filterFunction : null;\n },\n // Returns the records in `localItems` that match the filter criteria\n // Returns the original `localItems` array if not sorting\n filteredItems: function filteredItems() {\n // Note the criteria is debounced and sanitized\n var items = this.localItems,\n criteria = this.localFilter; // Resolve the filtering function, when requested\n // We prefer the provided filtering function and fallback to the internal one\n // When no filtering criteria is specified the filtering factories will return `null`\n\n var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n }\n },\n watch: {\n // Watch for debounce being set to 0\n computedFilterDebounce: function computedFilterDebounce(newValue) {\n if (!newValue && this.$_filterTimer) {\n this.clearFilterTimer();\n this.localFilter = this.filterSanitize(this.filter);\n }\n },\n // Watch for changes to the filter criteria, and debounce if necessary\n filter: {\n // We need a deep watcher in case the user passes\n // an object when using `filter-function`\n deep: true,\n handler: function handler(newCriteria) {\n var _this = this;\n\n var timeout = this.computedFilterDebounce;\n this.clearFilterTimer();\n\n if (timeout && timeout > 0) {\n // If we have a debounce time, delay the update of `localFilter`\n this.$_filterTimer = setTimeout(function () {\n _this.localFilter = _this.filterSanitize(newCriteria);\n }, timeout);\n } else {\n // Otherwise, immediately update `localFilter` with `newFilter` value\n this.localFilter = this.filterSanitize(newCriteria);\n }\n }\n },\n // Watch for changes to the filter criteria and filtered items vs `localItems`\n // Set visual state and emit events as required\n filteredCheck: function filteredCheck(_ref) {\n var filteredItems = _ref.filteredItems,\n localFilter = _ref.localFilter;\n // Determine if the dataset is filtered or not\n var isFiltered = false;\n\n if (!localFilter) {\n // If filter criteria is falsey\n isFiltered = false;\n } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n // If filter criteria is an empty array or object\n isFiltered = false;\n } else if (localFilter) {\n // If filter criteria is truthy\n isFiltered = true;\n }\n\n if (isFiltered) {\n this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n }\n\n this.isFiltered = isFiltered;\n },\n isFiltered: function isFiltered(newValue, oldValue) {\n if (newValue === false && oldValue === true) {\n // We need to emit a filtered event if `isFiltered` transitions from `true` to\n // `false` so that users can update their pagination controls\n var localItems = this.localItems;\n this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create private non-reactive props\n this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n // This will trigger any watchers/dependents\n // this.localFilter = this.filterSanitize(this.filter)\n // Set the initial filtered state in a `$nextTick()` so that\n // we trigger a filtered event if needed\n\n this.$nextTick(function () {\n _this2.isFiltered = Boolean(_this2.localFilter);\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearFilterTimer();\n },\n methods: {\n clearFilterTimer: function clearFilterTimer() {\n clearTimeout(this.$_filterTimer);\n this.$_filterTimer = null;\n },\n filterSanitize: function filterSanitize(criteria) {\n // Sanitizes filter criteria based on internal or external filtering\n if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n // If using internal filter function, which only accepts string or RegExp,\n // return '' to signify no filter\n return '';\n } // Could be a string, object or array, as needed by external filter function\n // We use `cloneDeep` to ensure we have a new copy of an object or array\n // without Vue's reactive observers\n\n\n return cloneDeep(criteria);\n },\n // Filter Function factories\n filterFnFactory: function filterFnFactory(filterFn, criteria) {\n // Wrapper factory for external filter functions\n // Wrap the provided filter-function and return a new function\n // Returns `null` if no filter-function defined or if criteria is falsey\n // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n // we have it passed, so that the caller computed prop will be reactive to changes\n // in the original filter-function (as this routine is a method)\n if (!filterFn || !isFunction$1(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n return null;\n } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n var fn = function fn(item) {\n // Generated function returns true if the criteria matches part\n // of the serialized data, otherwise false\n return filterFn(item, criteria);\n }; // Return the wrapped function\n\n\n return fn;\n },\n defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n var _this3 = this;\n\n // Generates the default filter function, using the given filter criteria\n // Returns `null` if no criteria or criteria format not supported\n if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n // Built in filter can only support strings or RegExp criteria (at the moment)\n return null;\n } // Build the RegExp needed for filtering\n\n\n var regExp = criteria;\n\n if (isString(regExp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n\n regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n } // Generate the wrapped filter test function to use\n\n\n var fn = function fn(item) {\n // This searches all row values (and sub property values) in the entire (excluding\n // special `_` prefixed keys), because we convert the record to a space-separated\n // string containing all the value properties (recursively), even ones that are\n // not visible (not specified in this.fields)\n // Users can ignore filtering on specific fields, or on only certain fields,\n // and can optionall specify searching results of fields with formatter\n //\n // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n //\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n //\n // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n regExp.lastIndex = 0;\n return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n }; // Return the generated function\n\n\n return fn;\n }\n }\n });\n\n var processField = function processField(key, value) {\n var field = null;\n\n if (isString(value)) {\n // Label shortcut\n field = {\n key: key,\n label: value\n };\n } else if (isFunction$1(value)) {\n // Formatter shortcut\n field = {\n key: key,\n formatter: value\n };\n } else if (isObject(value)) {\n field = clone(value);\n field.key = field.key || key;\n } else if (value !== false) {\n // Fallback to just key\n\n /* istanbul ignore next */\n field = {\n key: key\n };\n }\n\n return field;\n }; // We normalize fields into an array of objects\n // [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\n var normalizeFields = function normalizeFields(origFields, items) {\n var fields = [];\n\n if (isArray(origFields)) {\n // Normalize array Form\n origFields.filter(identity).forEach(function (f) {\n if (isString(f)) {\n fields.push({\n key: f,\n label: startCase(f)\n });\n } else if (isObject(f) && f.key && isString(f.key)) {\n // Full object definition. We use assign so that we don't mutate the original\n fields.push(clone(f));\n } else if (isObject(f) && keys(f).length === 1) {\n // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n var key = keys(f)[0];\n var field = processField(key, f[key]);\n\n if (field) {\n fields.push(field);\n }\n }\n });\n } // If no field provided, take a sample from first record (if exits)\n\n\n if (fields.length === 0 && isArray(items) && items.length > 0) {\n var sample = items[0];\n keys(sample).forEach(function (k) {\n if (!IGNORED_FIELD_KEYS[k]) {\n fields.push({\n key: k,\n label: startCase(k)\n });\n }\n });\n } // Ensure we have a unique array of fields and that they have String labels\n\n\n var memo = {};\n return fields.filter(function (f) {\n if (!memo[f.key]) {\n memo[f.key] = true;\n f.label = isString(f.label) ? f.label : startCase(f.key);\n return true;\n }\n\n return false;\n });\n };\n\n var _makeModelMixin$2 = makeModelMixin('value', {\n type: PROP_TYPE_ARRAY,\n defaultValue: []\n }),\n modelMixin$2 = _makeModelMixin$2.mixin,\n modelProps$2 = _makeModelMixin$2.props,\n MODEL_PROP_NAME$2 = _makeModelMixin$2.prop,\n MODEL_EVENT_NAME$2 = _makeModelMixin$2.event;\n\n var props$o = sortKeys(_objectSpread2$3(_objectSpread2$3({}, modelProps$2), {}, _defineProperty({\n fields: makeProp(PROP_TYPE_ARRAY, null),\n // Provider mixin adds in `Function` type\n items: makeProp(PROP_TYPE_ARRAY, []),\n // Primary key for record\n // If provided the value in each row must be unique!\n primaryKey: makeProp(PROP_TYPE_STRING)\n }, MODEL_PROP_NAME$2, makeProp(PROP_TYPE_ARRAY, [])))); // --- Mixin ---\n // @vue/component\n\n var itemsMixin = extend({\n mixins: [modelMixin$2, useParentMixin],\n props: props$o,\n data: function data() {\n var items = this.items;\n return {\n // Our local copy of the items\n // Must be an array\n localItems: isArray(items) ? items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return normalizeFields(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj() {\n // Fields as a simple lookup hash object\n // Mainly for formatter lookup and use in `scopedSlots` for convenience\n // If the field has a formatter, it normalizes formatter to a\n // function ref or `undefined` if no formatter\n var bvParent = this.bvParent;\n return this.computedFields.reduce(function (obj, f) {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = clone(f);\n\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n var formatter = f.formatter;\n\n if (isString(formatter) && isFunction$1(bvParent[formatter])) {\n formatter = bvParent[formatter];\n } else if (!isFunction$1(formatter)) {\n /* istanbul ignore next */\n formatter = undefined;\n } // Return formatter function or `undefined` if none\n\n\n obj[f.key].formatter = formatter;\n }\n\n return obj;\n }, {});\n },\n computedItems: function computedItems() {\n var _safeVueInstance = safeVueInstance(this),\n paginatedItems = _safeVueInstance.paginatedItems,\n sortedItems = _safeVueInstance.sortedItems,\n filteredItems = _safeVueInstance.filteredItems,\n localItems = _safeVueInstance.localItems; // Fallback if various mixins not provided\n\n\n return (paginatedItems || sortedItems || filteredItems || localItems ||\n /* istanbul ignore next */\n []).slice();\n },\n context: function context() {\n var _safeVueInstance2 = safeVueInstance(this),\n perPage = _safeVueInstance2.perPage,\n currentPage = _safeVueInstance2.currentPage; // Current state of sorting, filtering and pagination props/values\n\n\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: mathMax(toInteger(perPage, 0), 0),\n currentPage: mathMax(toInteger(currentPage, 0), 1),\n apiUrl: this.apiUrl\n };\n }\n },\n watch: {\n items: function items(newValue) {\n // Set `localItems`/`filteredItems` to a copy of the provided array\n this.localItems = isArray(newValue) ? newValue.slice() : [];\n },\n // Watch for changes on `computedItems` and update the `v-model`\n computedItems: function computedItems(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME$2, newValue);\n }\n },\n // Watch for context changes\n context: function context(newValue, oldValue) {\n // Emit context information for external paging/filtering/sorting handling\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the `v-model` of displayed items\n this.$emit(MODEL_EVENT_NAME$2, this.computedItems);\n },\n methods: {\n // Method to get the formatter method for a given field key\n getFieldFormatter: function getFieldFormatter(key) {\n var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n\n return field ? field.formatter : undefined;\n }\n }\n });\n\n var props$n = {\n currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n }; // --- Mixin ---\n // @vue/component\n\n var paginationMixin = extend({\n props: props$n,\n computed: {\n localPaging: function localPaging() {\n return this.hasProvider ? !!this.noProviderPaging : true;\n },\n paginatedItems: function paginatedItems() {\n var _safeVueInstance = safeVueInstance(this),\n sortedItems = _safeVueInstance.sortedItems,\n filteredItems = _safeVueInstance.filteredItems,\n localItems = _safeVueInstance.localItems;\n\n var items = sortedItems || filteredItems || localItems || [];\n var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n if (this.localPaging && perPage) {\n // Grab the current page of data (which may be past filtered items limit)\n items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n } // Return the items to display in the table\n\n\n return items;\n }\n }\n });\n\n var ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\n var ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\n var props$m = {\n // Passed to the context object\n // Not used by `<b-table>` directly\n apiUrl: makeProp(PROP_TYPE_STRING),\n // Adds in 'Function' support\n items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n }; // --- Mixin ---\n // @vue/component\n\n var providerMixin = extend({\n mixins: [listenOnRootMixin],\n props: props$m,\n computed: {\n hasProvider: function hasProvider() {\n return isFunction$1(this.items);\n },\n providerTriggerContext: function providerTriggerContext() {\n // Used to trigger the provider function via a watcher. Only the fields that\n // are needed for triggering a provider update are included. Note that the\n // regular this.context is sent to the provider during fetches though, as they\n // may need all the prop info.\n var ctx = {\n apiUrl: this.apiUrl,\n filter: null,\n sortBy: null,\n sortDesc: null,\n perPage: null,\n currentPage: null\n };\n\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter;\n }\n\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy;\n ctx.sortDesc = this.localSortDesc;\n }\n\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage;\n ctx.currentPage = this.currentPage;\n }\n\n return clone(ctx);\n }\n },\n watch: {\n // Provider update triggering\n items: function items(newValue) {\n // If a new provider has been specified, trigger an update\n if (this.hasProvider || isFunction$1(newValue)) {\n this.$nextTick(this._providerUpdate);\n }\n },\n providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n // Trigger the provider to update as the relevant context values have changed.\n if (!looseEqual(newValue, oldValue)) {\n this.$nextTick(this._providerUpdate);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Call the items provider if necessary\n if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n // Fetch on mount if localItems is empty\n this._providerUpdate();\n } // Listen for global messages to tell us to force refresh the table\n\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n if (id === _this.id || id === _this) {\n _this.refresh();\n }\n });\n },\n methods: {\n refresh: function refresh() {\n var _safeVueInstance = safeVueInstance(this),\n items = _safeVueInstance.items,\n refresh = _safeVueInstance.refresh,\n computedBusy = _safeVueInstance.computedBusy; // Public Method: Force a refresh of the provider function\n\n\n this.$off(EVENT_NAME_REFRESHED, refresh);\n\n if (computedBusy) {\n // Can't force an update when forced busy by user (busy prop === true)\n if (this.localBusy && this.hasProvider) {\n // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n this.$on(EVENT_NAME_REFRESHED, refresh);\n }\n } else {\n this.clearSelected();\n\n if (this.hasProvider) {\n this.$nextTick(this._providerUpdate);\n } else {\n /* istanbul ignore next */\n this.localItems = isArray(items) ? items.slice() : [];\n }\n }\n },\n // Provider related methods\n _providerSetLocal: function _providerSetLocal(items) {\n this.localItems = isArray(items) ? items.slice() : [];\n this.localBusy = false;\n this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n if (this.id) {\n this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n }\n },\n _providerUpdate: function _providerUpdate() {\n var _this2 = this;\n\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return;\n } // If table is busy, wait until refreshed before calling again\n\n\n if (safeVueInstance(this).computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh);\n return;\n } // Set internal busy state\n\n\n this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n this.$nextTick(function () {\n try {\n // Call provider function passing it the context and optional callback\n var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n if (isPromise(data)) {\n // Provider returned Promise\n data.then(function (items) {\n // Provider resolved with items\n _this2._providerSetLocal(items);\n });\n } else if (isArray(data)) {\n // Provider returned Array data\n _this2._providerSetLocal(data);\n } else {\n /* istanbul ignore if */\n if (_this2.items.length !== 2) {\n // Check number of arguments provider function requested\n // Provider not using callback (didn't request second argument), so we clear\n // busy state as most likely there was an error in the provider function\n\n /* istanbul ignore next */\n warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n _this2.localBusy = false;\n }\n }\n } catch (e)\n /* istanbul ignore next */\n {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n _this2.localBusy = false;\n\n _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n }\n });\n }\n }\n });\n\n var SELECT_MODES = ['range', 'multi', 'single'];\n var ROLE_GRID = 'grid'; // --- Props ---\n\n var props$l = {\n // Disable use of click handlers for row selection\n noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n return arrayIncludes(SELECT_MODES, value);\n }),\n selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n }; // --- Mixin ---\n // @vue/component\n\n var selectableMixin = extend({\n props: props$l,\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n hasSelectableRowClick: function hasSelectableRowClick() {\n return this.isSelectable && !this.noSelectOnClick;\n },\n supportsSelectableRows: function supportsSelectableRows() {\n return true;\n },\n selectableHasSelection: function selectableHasSelection() {\n var selectedRows = this.selectedRows;\n return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n var isSelectable = this.isSelectable;\n return _ref = {\n 'b-table-selectable': isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n if (!this.isSelectable) {\n return {};\n }\n\n var role = this.bvAttrs.role || ROLE_GRID;\n return {\n role: role,\n // TODO:\n // Should this attribute not be included when `no-select-on-click` is set\n // since this attribute implies keyboard navigation?\n 'aria-multiselectable': role === ROLE_GRID ? toString(this.selectableIsMultiSelect) : null\n };\n }\n },\n watch: {\n computedItems: function computedItems(newValue, oldValue) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n for (var i = 0; equal && i < newValue.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(newValue);\n },\n selectMode: function selectMode() {\n this.clearSelected();\n },\n hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(!newValue);\n },\n selectedRows: function selectedRows(_selectedRows, oldValue) {\n var _this = this;\n\n if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit(EVENT_NAME_ROW_SELECTED, items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers if needed\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return !!(isNumber(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n }\n\n return {};\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method](EVENT_NAME_FILTERED, this.clearSelected);\n this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, event) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable || this.noSelectOnClick) {\n // Don't do anything if table is not in selectable mode\n this.clearSelected();\n return;\n }\n\n var selectMode = this.selectMode,\n selectedLastRow = this.selectedLastRow;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (selectedLastRow > -1 && event.shiftKey) {\n // range\n for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(event.ctrlKey || event.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n if (selected) this.selectedLastRow = index;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n });\n\n /*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\n var stableSort$1 = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n };\n\n var normalizeValue = function normalizeValue(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n }\n\n if (isNumeric$1(value)) {\n return toFloat(value, value);\n }\n\n return value;\n }; // Default sort compare routine\n //\n // TODO:\n // Add option to sort by multiple columns (tri-state per column,\n // plus order of columns in sort) where `sortBy` could be an array\n // of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n // or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n // Multisort will most likely be handled in `mixin-sort.js` by\n // calling this method for each sortBy\n\n\n var defaultSortCompare = function defaultSortCompare(a, b) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n _ref$formatter = _ref.formatter,\n formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? undefined : _ref$locale,\n _ref$localeOptions = _ref.localeOptions,\n localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n _ref$nullLast = _ref.nullLast,\n nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n // Get the value by `sortBy`\n var aa = get(a, sortBy, null);\n var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n if (isFunction$1(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n } // Internally normalize value\n // `null` / `undefined` => ''\n // `'0'` => `0`\n\n\n aa = normalizeValue(aa);\n bb = normalizeValue(bb);\n\n if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting `null` / `undefined` / '' last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting `null` / `undefined` / '' last\n return -1;\n } // Do localized string comparison\n\n\n return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n };\n\n var _props, _watch$3;\n\n var MODEL_PROP_NAME_SORT_BY = 'sortBy';\n var MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\n var MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\n var MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\n var SORT_DIRECTION_ASC = 'asc';\n var SORT_DIRECTION_DESC = 'desc';\n var SORT_DIRECTION_LAST = 'last';\n var SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\n var props$k = (_props = {\n labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort ascending'),\n labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort descending'),\n noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n // Another prop that should have had a better name\n // It should be `noSortClear` (on non-sortable headers)\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n }, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n numeric: true\n })), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n return arrayIncludes(SORT_DIRECTIONS, value);\n })), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n // @vue/component\n\n var sortingMixin = extend({\n props: props$k,\n data: function data() {\n return {\n localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n // Sorts the filtered items and returns a new array of the sorted items\n // When not sorted, the original items array will be returned\n sortedItems: function sortedItems() {\n var _safeVueInstance = safeVueInstance(this),\n sortBy = _safeVueInstance.localSortBy,\n sortDesc = _safeVueInstance.localSortDesc,\n locale = _safeVueInstance.sortCompareLocale,\n nullLast = _safeVueInstance.sortNullLast,\n sortCompare = _safeVueInstance.sortCompare,\n localSorting = _safeVueInstance.localSorting,\n filteredItems = _safeVueInstance.filteredItems,\n localItems = _safeVueInstance.localItems;\n\n var items = (filteredItems || localItems || []).slice();\n\n var localeOptions = _objectSpread2$3(_objectSpread2$3({}, this.sortCompareOptions), {}, {\n usage: 'sort'\n });\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = isFunction$1(sortByFormatted) ?\n /* istanbul ignore next */\n sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return stableSort$1(items, function (a, b) {\n var result = null; // Call user provided `sortCompare` routine first\n\n if (isFunction$1(sortCompare)) {\n // TODO:\n // Change the `sortCompare` signature to the one of `defaultSortCompare`\n // with the next major version bump\n result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n // is not defined or returns `null`/`false`\n\n\n if (isUndefinedOrNull(result) || result === false) {\n result = defaultSortCompare(a, b, {\n sortBy: sortBy,\n formatter: formatter,\n locale: locale,\n localeOptions: localeOptions,\n nullLast: nullLast\n });\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: (_watch$3 = {\n /* istanbul ignore next: pain in the butt to test */\n isSortable: function isSortable(newValue) {\n if (newValue) {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n } else {\n this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n }\n }, _defineProperty(_watch$3, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortDesc) {\n return;\n }\n\n this.localSortDesc = newValue || false;\n }), _defineProperty(_watch$3, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortBy) {\n return;\n }\n\n this.localSortBy = newValue || '';\n }), _defineProperty(_watch$3, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n // Emit update to sort-desc.sync\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n }\n }), _defineProperty(_watch$3, \"localSortBy\", function localSortBy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n }\n }), _watch$3),\n created: function created() {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, event, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n _this.localSortDesc = false;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n _this.localSortDesc = true;\n } else ;\n };\n\n if (field.sortable) {\n var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n if (this.localSortBy === sortKey) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = sortKey; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n var _field$sortKey;\n\n var isSortable = this.isSortable,\n noFooterSorting = this.noFooterSorting,\n localSortDesc = this.localSortDesc,\n localSortBy = this.localSortBy,\n localSorting = this.localSorting;\n\n if (!isSortable || isFoot && noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable;\n var sortKey = !localSorting ? (_field$sortKey = field.sortKey) !== null && _field$sortKey !== void 0 ? _field$sortKey : key : key; // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && localSortBy === sortKey ? localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n return {\n 'aria-sort': ariaSort\n };\n },\n // A label to be placed in an `.sr-only` element in the header cell\n sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n // No label if not a sortable table\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n return null;\n }\n\n var localSortBy = this.localSortBy,\n localSortDesc = this.localSortDesc,\n labelSortAsc = this.labelSortAsc,\n labelSortDesc = this.labelSortDesc;\n var sortable = field.sortable; // The correctness of these labels is very important for screen reader users\n\n var labelSorting = '';\n\n if (sortable) {\n if (localSortBy === key) {\n // Currently sorted sortable column\n labelSorting = localSortDesc ? labelSortAsc : labelSortDesc;\n } else {\n // Not currently sorted sortable column\n // Not using nested ternary's here for clarity/readability\n // Default for `aria-label`\n labelSorting = localSortDesc ? labelSortDesc : labelSortAsc; // Handle `sortDirection` setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n labelSorting = labelSortAsc;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n labelSorting = labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n labelSorting = localSortBy ? this.labelSortClear : '';\n } // Return the `.sr-only` sort label or `null` if no label\n\n\n return trim(labelSorting) || null;\n }\n }\n });\n\n var props$j = {\n stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n }; // --- Mixin ---\n // @vue/component\n\n var stackedMixin = extend({\n props: props$j,\n computed: {\n isStacked: function isStacked() {\n var stacked = this.stacked; // `true` when always stacked, or returns breakpoint specified\n\n return stacked === '' ? true : stacked;\n },\n isStackedAlways: function isStackedAlways() {\n return this.isStacked === true;\n },\n stackedTableClasses: function stackedTableClasses() {\n var isStackedAlways = this.isStackedAlways;\n return _defineProperty({\n 'b-table-stacked': isStackedAlways\n }, \"b-table-stacked-\".concat(this.stacked), !isStackedAlways && this.isStacked);\n }\n }\n });\n\n // Includes all main table styling options\n // --- Props ---\n\n var props$i = {\n bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n dark: makeProp(PROP_TYPE_BOOLEAN, false),\n fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n hover: makeProp(PROP_TYPE_BOOLEAN, false),\n noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n // If a string, it is assumed to be the table `max-height` value\n stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n striped: makeProp(PROP_TYPE_BOOLEAN, false),\n tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tableVariant: makeProp(PROP_TYPE_STRING)\n }; // --- Mixin ---\n // @vue/component\n\n var tableRendererMixin = extend({\n mixins: [attrsMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTable: function getBvTable() {\n return _this;\n }\n };\n },\n // Don't place attributes on root element automatically,\n // as table could be wrapped in responsive `<div>`\n inheritAttrs: false,\n props: props$i,\n computed: {\n isTableSimple: function isTableSimple() {\n return false;\n },\n // Layout related computed props\n isResponsive: function isResponsive() {\n var responsive = this.responsive;\n return responsive === '' ? true : responsive;\n },\n isStickyHeader: function isStickyHeader() {\n var stickyHeader = this.stickyHeader;\n stickyHeader = stickyHeader === '' ? true : stickyHeader;\n return this.isStacked ? false : stickyHeader;\n },\n wrapperClasses: function wrapperClasses() {\n var isResponsive = this.isResponsive;\n return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? \"table-responsive-\".concat(this.responsive) : ''].filter(identity);\n },\n wrapperStyles: function wrapperStyles() {\n var isStickyHeader = this.isStickyHeader;\n return isStickyHeader && !isBoolean(isStickyHeader) ? {\n maxHeight: isStickyHeader\n } : {};\n },\n tableClasses: function tableClasses() {\n var _safeVueInstance = safeVueInstance(this),\n hover = _safeVueInstance.hover,\n tableVariant = _safeVueInstance.tableVariant,\n selectableTableClasses = _safeVueInstance.selectableTableClasses,\n stackedTableClasses = _safeVueInstance.stackedTableClasses,\n tableClass = _safeVueInstance.tableClass,\n computedBusy = _safeVueInstance.computedBusy;\n\n hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !computedBusy;\n return [// User supplied classes\n tableClass, // Styling classes\n {\n 'table-striped': this.striped,\n 'table-hover': hover,\n 'table-dark': this.dark,\n 'table-bordered': this.bordered,\n 'table-borderless': this.borderless,\n 'table-sm': this.small,\n // The following are b-table custom styles\n border: this.outlined,\n 'b-table-fixed': this.fixed,\n 'b-table-caption-top': this.captionTop,\n 'b-table-no-border-collapse': this.noBorderCollapse\n }, tableVariant ? \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(tableVariant) : '', // Stacked table classes\n stackedTableClasses, // Selectable classes\n selectableTableClasses];\n },\n tableAttrs: function tableAttrs() {\n var _safeVueInstance2 = safeVueInstance(this),\n items = _safeVueInstance2.computedItems,\n filteredItems = _safeVueInstance2.filteredItems,\n fields = _safeVueInstance2.computedFields,\n selectableTableAttrs = _safeVueInstance2.selectableTableAttrs,\n computedBusy = _safeVueInstance2.computedBusy;\n\n var ariaAttrs = this.isTableSimple ? {} : {\n 'aria-busy': toString(computedBusy),\n 'aria-colcount': toString(fields.length),\n // Preserve user supplied `aria-describedby`, if provided\n 'aria-describedby': this.bvAttrs['aria-describedby'] || this.$refs.caption ? this.captionId : null\n };\n var rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n return _objectSpread2$3(_objectSpread2$3(_objectSpread2$3({\n // We set `aria-rowcount` before merging in `$attrs`,\n // in case user has supplied their own\n 'aria-rowcount': rowCount\n }, this.bvAttrs), {}, {\n // Now we can override any `$attrs` here\n id: this.safeId(),\n role: this.bvAttrs.role || 'table'\n }, ariaAttrs), selectableTableAttrs);\n }\n },\n render: function render(h) {\n var _safeVueInstance3 = safeVueInstance(this),\n wrapperClasses = _safeVueInstance3.wrapperClasses,\n renderCaption = _safeVueInstance3.renderCaption,\n renderColgroup = _safeVueInstance3.renderColgroup,\n renderThead = _safeVueInstance3.renderThead,\n renderTbody = _safeVueInstance3.renderTbody,\n renderTfoot = _safeVueInstance3.renderTfoot;\n\n var $content = [];\n\n if (this.isTableSimple) {\n $content.push(this.normalizeSlot());\n } else {\n // Build the `<caption>` (from caption mixin)\n $content.push(renderCaption ? renderCaption() : null); // Build the `<colgroup>`\n\n $content.push(renderColgroup ? renderColgroup() : null); // Build the `<thead>`\n\n $content.push(renderThead ? renderThead() : null); // Build the `<tbody>`\n\n $content.push(renderTbody ? renderTbody() : null); // Build the `<tfoot>`\n\n $content.push(renderTfoot ? renderTfoot() : null);\n } // Assemble `<table>`\n\n\n var $table = h('table', {\n staticClass: 'table b-table',\n class: this.tableClasses,\n attrs: this.tableAttrs,\n key: 'b-table'\n }, $content.filter(identity)); // Add responsive/sticky wrapper if needed and return table\n\n return wrapperClasses.length > 0 ? h('div', {\n class: wrapperClasses,\n style: this.wrapperStyles,\n key: 'wrap'\n }, [$table]) : $table;\n }\n });\n\n var props$h = makePropsConfigurable({\n tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n }, NAME_TBODY); // --- Main component ---\n // TODO:\n // In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n // to the child elements, so this can be converted to a functional component\n // @vue/component\n\n var BTbody = /*#__PURE__*/extend({\n name: NAME_TBODY,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTableRowGroup: function getBvTableRowGroup() {\n return _this;\n }\n };\n },\n inject: {\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n getBvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props$h,\n computed: {\n bvTable: function bvTable() {\n return this.getBvTable();\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isTbody: function isTbody() {\n return true;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n isTransitionGroup: function isTransitionGroup() {\n return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n },\n tbodyAttrs: function tbodyAttrs() {\n return _objectSpread2$3({\n role: 'rowgroup'\n }, this.bvAttrs);\n },\n tbodyProps: function tbodyProps() {\n var tbodyTransitionProps = this.tbodyTransitionProps;\n return tbodyTransitionProps ? _objectSpread2$3(_objectSpread2$3({}, tbodyTransitionProps), {}, {\n tag: 'tbody'\n }) : {};\n }\n },\n render: function render(h) {\n var data = {\n props: this.tbodyProps,\n attrs: this.tbodyAttrs\n };\n\n if (this.isTransitionGroup) {\n // We use native listeners if a transition group for any delegated events\n data.on = this.tbodyTransitionHandlers || {};\n data.nativeOn = this.bvListeners;\n } else {\n // Otherwise we place any listeners on the tbody element\n data.on = this.bvListeners;\n }\n\n return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n }\n });\n\n var TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n // Avoids having the user need to use `@click.stop` on the form control\n\n var filterEvent = function filterEvent(event) {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n /* istanbul ignore next */\n return false;\n }\n\n var el = event.target; // Exit early when element is disabled or a table element\n\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false;\n } // Ignore the click when it was inside a dropdown menu\n\n\n if (closest('.dropdown-menu', el)) {\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n\n if (label) {\n var labelFor = getAttr(label, 'for');\n var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n if (input && !input.disabled) {\n return true;\n }\n } // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n\n\n return matches(el, EVENT_FILTER);\n };\n\n // Used to filter out click events caused by the mouse up at end of selection\n //\n // Accepts an element as only argument to test to see if selection overlaps or is\n // contained within the element\n\n var textSelectionActive = function textSelectionActive() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = getSel();\n return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ?\n /* istanbul ignore next */\n sel.containsNode(el, true) : false;\n };\n\n var props$g = makePropsConfigurable(props$u, NAME_TH); // --- Main component ---\n // TODO:\n // In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n // to the child elements, so this can be converted to a functional component\n // @vue/component\n\n var BTh = /*#__PURE__*/extend({\n name: NAME_TH,\n extends: BTd,\n props: props$g,\n computed: {\n tag: function tag() {\n return 'th';\n }\n }\n });\n\n var props$f = {\n detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n tbodyTrClass: makeProp([].concat(_toConsumableArray$1(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_FUNCTION]))\n }; // --- Mixin ---\n // @vue/component\n\n var tbodyRowMixin = extend({\n mixins: [useParentMixin],\n props: props$f,\n methods: {\n // Methods for computing classes, attributes and styles for table cells\n getTdValues: function getTdValues(item, key, tdValue, defaultValue) {\n var bvParent = this.bvParent;\n\n if (tdValue) {\n var value = get(item, key, '');\n\n if (isFunction$1(tdValue)) {\n return tdValue(value, key, item);\n } else if (isString(tdValue) && isFunction$1(bvParent[tdValue])) {\n return bvParent[tdValue](value, key, item);\n }\n\n return tdValue;\n }\n\n return defaultValue;\n },\n getThValues: function getThValues(item, key, thValue, type, defaultValue) {\n var bvParent = this.bvParent;\n\n if (thValue) {\n var value = get(item, key, '');\n\n if (isFunction$1(thValue)) {\n return thValue(value, key, item, type);\n } else if (isString(thValue) && isFunction$1(bvParent[thValue])) {\n return bvParent[thValue](value, key, item, type);\n }\n\n return thValue;\n }\n\n return defaultValue;\n },\n // Method to get the value for a field\n getFormattedValue: function getFormattedValue(item, field) {\n var key = field.key;\n var formatter = this.getFieldFormatter(key);\n var value = get(item, key, null);\n\n if (isFunction$1(formatter)) {\n value = formatter(value, key, item);\n }\n\n return isUndefinedOrNull(value) ? '' : value;\n },\n // Factory function methods\n toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n var _this = this;\n\n // Returns a function to toggle a row's details slot\n return function () {\n if (hasDetailsSlot) {\n _this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n }\n };\n },\n // Row event handlers\n rowHovered: function rowHovered(event) {\n // `mouseenter` handler (non-bubbling)\n // `this.tbodyRowEventStopped` from tbody mixin\n if (!this.tbodyRowEventStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n }\n },\n rowUnhovered: function rowUnhovered(event) {\n // `mouseleave` handler (non-bubbling)\n // `this.tbodyRowEventStopped` from tbody mixin\n if (!this.tbodyRowEventStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n }\n },\n // Renders a TD or TH for a row's field\n renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n var _this2 = this;\n\n var isStacked = this.isStacked;\n var key = field.key,\n label = field.label,\n isRowHeader = field.isRowHeader;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var formatted = this.getFormattedValue(item, field);\n var stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n // improve performance of BTable/BTableLite by reducing the\n // total number of vue instances created during render\n\n var cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n var cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n var data = {\n // For the Vue key, we concatenate the column index and\n // field key (as field keys could be duplicated)\n // TODO: Although we do prevent duplicate field keys...\n // So we could change this to: `row-${rowIndex}-cell-${key}`\n class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n props: {},\n attrs: _objectSpread2$3({\n 'aria-colindex': String(colIndex + 1)\n }, isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {})),\n key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key)\n };\n\n if (stickyColumn) {\n // We are using the helper BTd or BTh\n data.props = {\n stackedHeading: isStacked ? label : null,\n stickyColumn: true,\n variant: cellVariant\n };\n } else {\n // Using native TD or TH element, so we need to\n // add in the attributes and variant class\n data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n data.attrs.scope = isRowHeader ? 'row' : null; // Add in the variant class\n\n if (cellVariant) {\n data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n }\n }\n\n var slotScope = {\n item: item,\n index: rowIndex,\n field: field,\n unformatted: get(item, key, ''),\n value: formatted,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (safeVueInstance(this).supportsSelectableRows) {\n slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n slotScope.selectRow = function () {\n return _this2.selectRow(rowIndex);\n };\n\n slotScope.unselectRow = function () {\n return _this2.unselectRow(rowIndex);\n };\n } // The new `v-slot` syntax doesn't like a slot name starting with\n // a square bracket and if using in-document HTML templates, the\n // v-slot attributes are lower-cased by the browser.\n // Switched to round bracket syntax to prevent confusion with\n // dynamic slot name syntax.\n // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n // Will be `null` if no slot (or fallback slot) exists\n\n\n var slotName = this.$_bodyFieldSlotNameCache[key];\n var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n if (this.isStacked) {\n // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n $childNodes = [h('div', [$childNodes])];\n } // Render either a td or th cell\n\n\n return h(cellTag, data, [$childNodes]);\n },\n // Renders an item's row (or rows if details supported)\n renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n var _this3 = this;\n\n var _safeVueInstance = safeVueInstance(this),\n fields = _safeVueInstance.computedFields,\n striped = _safeVueInstance.striped,\n primaryKey = _safeVueInstance.primaryKey,\n currentPage = _safeVueInstance.currentPage,\n perPage = _safeVueInstance.perPage,\n tbodyTrClass = _safeVueInstance.tbodyTrClass,\n tbodyTrAttr = _safeVueInstance.tbodyTrAttr,\n hasSelectableRowClick = _safeVueInstance.hasSelectableRowClick;\n\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n var hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n var $rows = []; // Details ID needed for `aria-details` when details showing\n // We set it to `null` when not showing so that attribute\n // does not appear on the element\n\n var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n var $tds = fields.map(function (field, colIndex) {\n return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n }); // Calculate the row number in the dataset (indexed from 1)\n\n var ariaRowIndex = null;\n\n if (currentPage && perPage && perPage > 0) {\n ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n } // Create a unique :key to help ensure that sub components are re-rendered rather than\n // re-used, which can cause issues. If a primary key is not provided we use the rendered\n // rows index within the tbody.\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n var primaryKeyValue = toString(get(item, primaryKey)) || null;\n var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n // In the format of '{tableId}__row_{primaryKeyValue}'\n\n var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n var selectableClasses = safeVueInstance(this).selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n var selectableAttrs = safeVueInstance(this).selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n var userTrClasses = isFunction$1(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n var userTrAttrs = isFunction$1(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(item, 'row') : tbodyTrAttr; // Add the item row\n\n $rows.push(h(BTr, _defineProperty({\n class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread2$3(_objectSpread2$3({\n id: rowId\n }, userTrAttrs), {}, {\n // Users cannot override the following attributes\n tabindex: hasRowClickHandler ? '0' : null,\n 'data-pk': primaryKeyValue || null,\n 'aria-details': detailsId,\n 'aria-owns': detailsId,\n 'aria-rowindex': ariaRowIndex\n }, selectableAttrs),\n on: {\n // Note: These events are not A11Y friendly!\n mouseenter: this.rowHovered,\n mouseleave: this.rowUnhovered\n },\n key: \"__b-table-row-\".concat(rowKey, \"__\"),\n ref: 'item-rows'\n }, REF_FOR_KEY, true), $tds)); // Row Details slot\n\n if (rowShowDetails) {\n var detailsScope = {\n item: item,\n index: rowIndex,\n fields: fields,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (safeVueInstance(this).supportsSelectableRows) {\n detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n detailsScope.selectRow = function () {\n return _this3.selectRow(rowIndex);\n };\n\n detailsScope.unselectRow = function () {\n return _this3.unselectRow(rowIndex);\n };\n } // Render the details slot in a TD\n\n\n var $details = h(BTd, {\n props: {\n colspan: fields.length\n },\n class: this.detailsTdClass\n }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n // Only added if the table is striped\n\n if (striped) {\n $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n h('tr', {\n staticClass: 'd-none',\n attrs: {\n 'aria-hidden': 'true',\n role: 'presentation'\n },\n key: \"__b-table-details-stripe__\".concat(rowKey)\n }));\n } // Add the actual details row\n\n\n var userDetailsTrClasses = isFunction$1(this.tbodyTrClass) ?\n /* istanbul ignore next */\n this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n var userDetailsTrAttrs = isFunction$1(this.tbodyTrAttr) ?\n /* istanbul ignore next */\n this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n $rows.push(h(BTr, {\n staticClass: 'b-table-details',\n class: [userDetailsTrClasses],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread2$3(_objectSpread2$3({}, userDetailsTrAttrs), {}, {\n // Users cannot override the following attributes\n id: detailsId,\n tabindex: '-1'\n }),\n key: \"__b-table-details__\".concat(rowKey)\n }, [$details]));\n } else if (hasDetailsSlot) {\n // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n $rows.push(h());\n\n if (striped) {\n // Add extra placeholder if table is striped\n $rows.push(h());\n }\n } // Return the row(s)\n\n\n return $rows;\n }\n }\n });\n\n var getCellSlotName = function getCellSlotName(value) {\n return \"cell(\".concat(value || '', \")\");\n }; // --- Props ---\n\n\n var props$e = sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$h), props$f), {}, {\n tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n })); // --- Mixin ---\n // @vue/component\n\n var tbodyMixin = extend({\n mixins: [tbodyRowMixin],\n props: props$e,\n beforeDestroy: function beforeDestroy() {\n this.$_bodyFieldSlotNameCache = null;\n },\n methods: {\n // Returns all the item TR elements (excludes detail and spacer rows)\n // `this.$refs['item-rows']` is an array of item TR components/elements\n // Rows should all be `<b-tr>` components, but we map to TR elements\n // Also note that `this.$refs['item-rows']` may not always be in document order\n getTbodyTrs: function getTbodyTrs() {\n var $refs = this.$refs;\n var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n var trs = ($refs['item-rows'] || []).map(function (tr) {\n return tr.$el || tr;\n });\n return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? from(tbody.children).filter(function (tr) {\n return arrayIncludes(trs, tr);\n }) :\n /* istanbul ignore next */\n [];\n },\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n getTbodyTrIndex: function getTbodyTrIndex(el) {\n /* istanbul ignore next: should not normally happen */\n if (!isElement(el)) {\n return -1;\n }\n\n var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n },\n // Emits a row event, with the item object, row index and original event\n emitTbodyRowEvent: function emitTbodyRowEvent(type, event) {\n if (type && this.hasListener(type) && event && event.target) {\n var rowIndex = this.getTbodyTrIndex(event.target);\n\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n var item = this.computedItems[rowIndex];\n this.$emit(type, item, rowIndex, event);\n }\n }\n },\n tbodyRowEventStopped: function tbodyRowEventStopped(event) {\n return this.stopIfBusy && this.stopIfBusy(event);\n },\n // Delegated row event handlers\n onTbodyRowKeydown: function onTbodyRowKeydown(event) {\n // Keyboard navigation and row click emulation\n var target = event.target,\n keyCode = event.keyCode;\n\n if (this.tbodyRowEventStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n // Early exit if not an item row TR\n return;\n }\n\n if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n // Emulated click for keyboard users, transfer to click handler\n stopEvent(event);\n this.onTBodyRowClicked(event);\n } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n // Keyboard navigation\n var rowIndex = this.getTbodyTrIndex(target);\n\n if (rowIndex > -1) {\n stopEvent(event);\n var trs = this.getTbodyTrs();\n var shift = event.shiftKey;\n\n if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n // Focus first row\n attemptFocus(trs[0]);\n } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n // Focus last row\n attemptFocus(trs[trs.length - 1]);\n } else if (keyCode === CODE_UP && rowIndex > 0) {\n // Focus previous row\n attemptFocus(trs[rowIndex - 1]);\n } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n // Focus next row\n attemptFocus(trs[rowIndex + 1]);\n }\n }\n }\n },\n onTBodyRowClicked: function onTBodyRowClicked(event) {\n var $refs = this.$refs;\n var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null; // Don't emit event when the table is busy, the user clicked\n // on a non-disabled control or is selecting text\n\n if (this.tbodyRowEventStopped(event) || filterEvent(event) || textSelectionActive(tbody || this.$el)) {\n return;\n }\n\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n },\n onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(event) {\n if (!this.tbodyRowEventStopped(event) && event.which === 2) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n }\n },\n onTbodyRowContextmenu: function onTbodyRowContextmenu(event) {\n if (!this.tbodyRowEventStopped(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n }\n },\n onTbodyRowDblClicked: function onTbodyRowDblClicked(event) {\n if (!this.tbodyRowEventStopped(event) && !filterEvent(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n }\n },\n // Render the tbody element and children\n // Note:\n // Row hover handlers are handled by the tbody-row mixin\n // As mouseenter/mouseleave events do not bubble\n renderTbody: function renderTbody() {\n var _this = this;\n\n var _safeVueInstance = safeVueInstance(this),\n items = _safeVueInstance.computedItems,\n renderBusy = _safeVueInstance.renderBusy,\n renderTopRow = _safeVueInstance.renderTopRow,\n renderEmpty = _safeVueInstance.renderEmpty,\n renderBottomRow = _safeVueInstance.renderBottomRow,\n hasSelectableRowClick = _safeVueInstance.hasSelectableRowClick;\n\n var h = this.$createElement;\n var hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || hasSelectableRowClick; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = renderBusy ? renderBusy() : null;\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't busy, or we don't have a busy slot\n // Create a slot cache for improved performance when looking up cell slot names\n // Values will be keyed by the field's `key` and will store the slot's name\n // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n // Used by tbody-row mixin render helper\n var cache = {};\n var defaultSlotName = getCellSlotName();\n defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n this.computedFields.forEach(function (field) {\n var key = field.key;\n var slotName = getCellSlotName(key);\n var lowercaseSlotName = getCellSlotName(key.toLowerCase());\n cache[key] = _this.hasNormalizedSlot(slotName) ? slotName : _this.hasNormalizedSlot(lowercaseSlotName) ?\n /* istanbul ignore next */\n lowercaseSlotName : defaultSlotName;\n }); // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n\n this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderTopRow ? renderTopRow() : h()); // Render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n $rows.push(renderEmpty ? renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderBottomRow ? renderBottomRow() : h());\n } // Note: these events will only emit if a listener is registered\n\n\n var handlers = {\n auxclick: this.onTbodyRowMiddleMouseRowClicked,\n // TODO:\n // Perhaps we do want to automatically prevent the\n // default context menu from showing if there is a\n // `row-contextmenu` listener registered\n contextmenu: this.onTbodyRowContextmenu,\n // The following event(s) is not considered A11Y friendly\n dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n }; // Add in click/keydown listeners if needed\n\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked;\n handlers.keydown = this.onTbodyRowKeydown;\n } // Assemble rows into the tbody\n\n\n var $tbody = h(BTbody, {\n class: this.tbodyClass || null,\n props: pluckProps(props$h, this.$props),\n // BTbody transfers all native event listeners to the root element\n // TODO: Only set the handlers if the table is not busy\n on: handlers,\n ref: 'tbody'\n }, $rows); // Return the assembled tbody\n\n return $tbody;\n }\n }\n });\n\n var props$d = makePropsConfigurable({\n // Supported values: 'lite', 'dark', or null\n footVariant: makeProp(PROP_TYPE_STRING)\n }, NAME_TFOOT); // --- Main component ---\n // TODO:\n // In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n // to the child elements, so this can be converted to a functional component\n // @vue/component\n\n var BTfoot = /*#__PURE__*/extend({\n name: NAME_TFOOT,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTableRowGroup: function getBvTableRowGroup() {\n return _this;\n }\n };\n },\n inject: {\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n getBvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props$d,\n computed: {\n bvTable: function bvTable() {\n return this.getBvTable();\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isTfoot: function isTfoot() {\n return true;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n tfootClasses: function tfootClasses() {\n return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n },\n tfootAttrs: function tfootAttrs() {\n return _objectSpread2$3(_objectSpread2$3({}, this.bvAttrs), {}, {\n role: 'rowgroup'\n });\n }\n },\n render: function render(h) {\n return h('tfoot', {\n class: this.tfootClasses,\n attrs: this.tfootAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n });\n\n var props$c = {\n footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n // Any Bootstrap theme variant (or custom)\n // Falls back to `headRowVariant`\n footRowVariant: makeProp(PROP_TYPE_STRING),\n // 'dark', 'light', or `null` (or custom)\n footVariant: makeProp(PROP_TYPE_STRING),\n tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n }; // --- Mixin ---\n // @vue/component\n\n var tfootMixin = extend({\n props: props$c,\n methods: {\n renderTFootCustom: function renderTFootCustom() {\n var h = this.$createElement;\n\n if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n return h(BTfoot, {\n class: this.tfootClass || null,\n props: {\n footVariant: this.footVariant || this.headVariant || null\n },\n key: 'bv-tfoot-custom'\n }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n items: this.computedItems.slice(),\n fields: this.computedFields.slice(),\n columns: this.computedFields.length\n }));\n }\n\n return h();\n },\n renderTfoot: function renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n }\n }\n });\n\n var props$b = makePropsConfigurable({\n // Also sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n // Supported values: 'lite', 'dark', or `null`\n headVariant: makeProp(PROP_TYPE_STRING)\n }, NAME_THEAD); // --- Main component ---\n // TODO:\n // In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n // to the child elements, so this can be converted to a functional component\n // @vue/component\n\n var BThead = /*#__PURE__*/extend({\n name: NAME_THEAD,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTableRowGroup: function getBvTableRowGroup() {\n return _this;\n }\n };\n },\n inject: {\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n getBvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props$b,\n computed: {\n bvTable: function bvTable() {\n return this.getBvTable();\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isThead: function isThead() {\n return true;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky headers only apply to cells in table `thead`\n isStickyHeader: function isStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n theadClasses: function theadClasses() {\n return [this.headVariant ? \"thead-\".concat(this.headVariant) : null];\n },\n theadAttrs: function theadAttrs() {\n return _objectSpread2$3({\n role: 'rowgroup'\n }, this.bvAttrs);\n }\n },\n render: function render(h) {\n return h('thead', {\n class: this.theadClasses,\n attrs: this.theadAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n });\n\n var getHeadSlotName = function getHeadSlotName(value) {\n return \"head(\".concat(value || '', \")\");\n };\n\n var getFootSlotName = function getFootSlotName(value) {\n return \"foot(\".concat(value || '', \")\");\n }; // --- Props ---\n\n\n var props$a = {\n // Any Bootstrap theme variant (or custom)\n headRowVariant: makeProp(PROP_TYPE_STRING),\n // 'light', 'dark' or `null` (or custom)\n headVariant: makeProp(PROP_TYPE_STRING),\n theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n }; // --- Mixin ---\n // @vue/component\n\n var theadMixin = extend({\n props: props$a,\n methods: {\n fieldClasses: function fieldClasses(field) {\n // Header field (<th>) classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(event, field, isFoot) {\n if (this.stopIfBusy && this.stopIfBusy(event)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(event)) {\n // Clicked on a non-disabled control so ignore\n return;\n } else if (textSelectionActive(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n stopEvent(event);\n this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var _safeVueInstance = safeVueInstance(this),\n fields = _safeVueInstance.computedFields,\n isSortable = _safeVueInstance.isSortable,\n isSelectable = _safeVueInstance.isSelectable,\n headVariant = _safeVueInstance.headVariant,\n footVariant = _safeVueInstance.footVariant,\n headRowVariant = _safeVueInstance.headRowVariant,\n footRowVariant = _safeVueInstance.footRowVariant;\n\n var h = this.$createElement; // In always stacked mode, we don't bother rendering the head/foot\n // Or if no field headings (empty table)\n\n if (this.isStackedAlways || fields.length === 0) {\n return h();\n }\n\n var hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED); // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n var selectAllRows = isSelectable ? this.selectAllRows : noop;\n var clearSelected = isSelectable ? this.clearSelected : noop; // Helper function to generate a field <th> cell\n\n var makeCell = function makeCell(field, colIndex) {\n var label = field.label,\n labelHtml = field.labelHtml,\n variant = field.variant,\n stickyColumn = field.stickyColumn,\n key = field.key;\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = startCase(field.key);\n }\n\n var on = {};\n\n if (hasHeadClickListener) {\n on.click = function (event) {\n _this.headClicked(event, field, isFoot);\n };\n\n on.keydown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n _this.headClicked(event, field, isFoot);\n }\n };\n }\n\n var sortAttrs = isSortable ? _this.sortTheadThAttrs(key, field, isFoot) : {};\n var sortClass = isSortable ? _this.sortTheadThClasses(key, field, isFoot) : null;\n var sortLabel = isSortable ? _this.sortTheadThLabel(key, field, isFoot) : null;\n var data = {\n class: [{\n // We need to make the header cell relative when we have\n // a `.sr-only` sort label to work around overflow issues\n 'position-relative': sortLabel\n }, _this.fieldClasses(field), sortClass],\n props: {\n variant: variant,\n stickyColumn: stickyColumn\n },\n style: field.thStyle || {},\n attrs: _objectSpread2$3(_objectSpread2$3({\n // We only add a `tabindex` of `0` if there is a head-clicked listener\n // and the current field is sortable\n tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n 'aria-colindex': colIndex + 1,\n 'aria-label': ariaLabel\n }, _this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {})), sortAttrs),\n on: on,\n key: key\n }; // Handle edge case where in-document templates are used with new\n // `v-slot:name` syntax where the browser lower-cases the v-slot's\n // name (attributes become lower cased when parsed by the browser)\n // We have replaced the square bracket syntax with round brackets\n // to prevent confusion with dynamic slot names\n\n var slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()]; // Footer will fallback to header slot names\n\n if (isFoot) {\n slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName()].concat(_toConsumableArray$1(slotNames));\n }\n\n var scope = {\n label: label,\n column: key,\n field: field,\n isFoot: isFoot,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n var $content = _this.normalizeSlot(slotNames, scope) || h('div', {\n domProps: htmlOrText(labelHtml, label)\n });\n var $srLabel = sortLabel ? h('span', {\n staticClass: 'sr-only'\n }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n return h(BTh, data, [$content, $srLabel].filter(identity));\n }; // Generate the array of <th> cells\n\n\n var $cells = fields.map(makeCell).filter(identity); // Generate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h(BTr, {\n class: this.tfootTrClass,\n props: {\n variant: isUndefinedOrNull(footRowVariant) ? headRowVariant :\n /* istanbul ignore next */\n footRowVariant\n }\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n $trs.push(h(BTr, {\n class: this.theadTrClass,\n props: {\n variant: headRowVariant\n }\n }, $cells));\n }\n\n return h(isFoot ? BTfoot : BThead, {\n class: (isFoot ? this.tfootClass : this.theadClass) || null,\n props: isFoot ? {\n footVariant: footVariant || headVariant || null\n } : {\n headVariant: headVariant || null\n },\n key: isFoot ? 'bv-tfoot' : 'bv-thead'\n }, $trs);\n }\n }\n });\n\n var props$9 = {}; // --- Mixin ---\n // @vue/component\n\n var topRowMixin = extend({\n methods: {\n renderTopRow: function renderTopRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-top-row',\n class: [isFunction$1(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n attrs: isFunction$1(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n key: 'b-top-row'\n }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n columns: fields.length,\n fields: fields\n })]);\n }\n }\n });\n\n var props$8 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), props$v), props$t), props$s), props$r), props$q), props$p), props$o), props$n), props$m), props$l), props$k), props$j), props$i), props$e), props$c), props$a), props$9)), NAME_TABLE); // --- Main component ---\n // @vue/component\n\n var BTable = /*#__PURE__*/extend({\n name: NAME_TABLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n props: props$8 // Render function is provided by `tableRendererMixin`\n\n });\n\n var props$7 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), props$s), props$r), props$o), props$j), props$i), props$e), props$c), props$a)), NAME_TABLE_LITE); // --- Main component ---\n // @vue/component\n\n var BTableLite = /*#__PURE__*/extend({\n name: NAME_TABLE_LITE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n // These are pretty lightweight, and are useful for lightweight tables\n captionMixin, colgroupMixin],\n props: props$7 // Render function is provided by `tableRendererMixin`\n\n });\n\n var props$6 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), props$j), props$i)), NAME_TABLE_SIMPLE); // --- Main component ---\n // @vue/component\n\n var BTableSimple = /*#__PURE__*/extend({\n name: NAME_TABLE_SIMPLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n tableRendererMixin, // Table features mixins\n // Stacked requires extra handling by users via\n // the table cell `stacked-heading` prop\n stackedMixin],\n props: props$6,\n computed: {\n isTableSimple: function isTableSimple() {\n return true;\n }\n } // Render function is provided by `tableRendererMixin`\n\n });\n\n var TableLitePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BTableLite: BTableLite\n }\n });\n var TableSimplePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BTableSimple: BTableSimple,\n BTbody: BTbody,\n BThead: BThead,\n BTfoot: BTfoot,\n BTr: BTr,\n BTd: BTd,\n BTh: BTh\n }\n });\n var TablePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BTable: BTable\n },\n plugins: {\n TableLitePlugin: TableLitePlugin,\n TableSimplePlugin: TableSimplePlugin\n }\n });\n\n var isPositiveNumber = function isPositiveNumber(value) {\n return value > 0;\n }; // --- Props ---\n\n\n var props$5 = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING),\n columns: makeProp(PROP_TYPE_NUMBER, 5, isPositiveNumber),\n hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n rows: makeProp(PROP_TYPE_NUMBER, 3, isPositiveNumber),\n showFooter: makeProp(PROP_TYPE_BOOLEAN, false),\n tableProps: makeProp(PROP_TYPE_OBJECT, {})\n }, NAME_SKELETON_TABLE); // --- Main component ---\n // @vue/component\n\n var BSkeletonTable = /*#__PURE__*/extend({\n name: NAME_SKELETON_TABLE,\n functional: true,\n props: props$5,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props;\n var animation = props.animation,\n columns = props.columns;\n var $th = h('th', [h(BSkeleton, {\n props: {\n animation: animation\n }\n })]);\n var $thTr = h('tr', createArray(columns, $th));\n var $td = h('td', [h(BSkeleton, {\n props: {\n width: '75%',\n animation: animation\n }\n })]);\n var $tdTr = h('tr', createArray(columns, $td));\n var $tbody = h('tbody', createArray(props.rows, $tdTr));\n var $thead = !props.hideHeader ? h('thead', [$thTr]) : h();\n var $tfoot = props.showFooter ? h('tfoot', [$thTr]) : h();\n return h(BTableSimple, a(data, {\n props: _objectSpread2$3({}, props.tableProps)\n }), [$thead, $tbody, $tfoot]);\n }\n });\n\n var props$4 = makePropsConfigurable({\n loading: makeProp(PROP_TYPE_BOOLEAN, false)\n }, NAME_SKELETON_WRAPPER); // --- Main component ---\n // @vue/component\n\n var BSkeletonWrapper = /*#__PURE__*/extend({\n name: NAME_SKELETON_WRAPPER,\n functional: true,\n props: props$4,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var slotScope = {};\n\n if (props.loading) {\n return h('div', a(data, {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-busy': true\n },\n staticClass: 'b-skeleton-wrapper',\n key: 'loading'\n }), normalizeSlot(SLOT_NAME_LOADING, slotScope, $scopedSlots, $slots));\n }\n\n return normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots);\n }\n });\n\n var SkeletonPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BSkeleton: BSkeleton,\n BSkeletonIcon: BSkeletonIcon,\n BSkeletonImg: BSkeletonImg,\n BSkeletonTable: BSkeletonTable,\n BSkeletonWrapper: BSkeletonWrapper\n }\n });\n\n var SpinnerPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BSpinner: BSpinner\n }\n });\n\n var _watch$2;\n\n var _makeModelMixin$1 = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER\n }),\n modelMixin$1 = _makeModelMixin$1.mixin,\n modelProps$1 = _makeModelMixin$1.props,\n MODEL_PROP_NAME$1 = _makeModelMixin$1.prop,\n MODEL_EVENT_NAME$1 = _makeModelMixin$1.event; // --- Helper methods ---\n // Filter function to filter out disabled tabs\n\n\n var notDisabled = function notDisabled(tab) {\n return !tab.disabled;\n }; // --- Helper components ---\n // @vue/component\n\n\n var BVTabButton = /*#__PURE__*/extend({\n name: NAME_TAB_BUTTON_HELPER,\n inject: {\n getBvTabs: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n props: {\n controls: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n posInSet: makeProp(PROP_TYPE_NUMBER),\n setSize: makeProp(PROP_TYPE_NUMBER),\n // Reference to the child <b-tab> instance\n tab: makeProp(),\n tabIndex: makeProp(PROP_TYPE_NUMBER)\n },\n computed: {\n bvTabs: function bvTabs() {\n return this.getBvTabs();\n }\n },\n methods: {\n focus: function focus() {\n attemptFocus(this.$refs.link);\n },\n handleEvent: function handleEvent(event) {\n /* istanbul ignore next */\n if (this.tab.disabled) {\n return;\n }\n\n var type = event.type,\n keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n\n if (type === 'click') {\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n // For ARIA tabs the SPACE key will also trigger a click/select\n // Even with keyboard navigation disabled, SPACE should \"click\" the button\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && !this.noKeyNav) {\n // For keyboard navigation\n if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n stopEvent(event);\n\n if (shiftKey || keyCode === CODE_HOME) {\n this.$emit(EVENT_NAME_FIRST, event);\n } else {\n this.$emit(EVENT_NAME_PREV, event);\n }\n } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n stopEvent(event);\n\n if (shiftKey || keyCode === CODE_END) {\n this.$emit(EVENT_NAME_LAST, event);\n } else {\n this.$emit(EVENT_NAME_NEXT, event);\n }\n }\n }\n }\n },\n render: function render(h) {\n var id = this.id,\n tabIndex = this.tabIndex,\n setSize = this.setSize,\n posInSet = this.posInSet,\n controls = this.controls,\n handleEvent = this.handleEvent;\n var _this$tab = this.tab,\n title = _this$tab.title,\n localActive = _this$tab.localActive,\n disabled = _this$tab.disabled,\n titleItemClass = _this$tab.titleItemClass,\n titleLinkClass = _this$tab.titleLinkClass,\n titleLinkAttributes = _this$tab.titleLinkAttributes;\n var $link = h(BLink, {\n staticClass: 'nav-link',\n class: [{\n active: localActive && !disabled,\n disabled: disabled\n }, titleLinkClass, // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n localActive ? this.bvTabs.activeNavItemClass : null],\n props: {\n disabled: disabled\n },\n attrs: _objectSpread2$3(_objectSpread2$3({}, titleLinkAttributes), {}, {\n id: id,\n role: 'tab',\n // Roving tab index when keynav enabled\n tabindex: tabIndex,\n 'aria-selected': localActive && !disabled ? 'true' : 'false',\n 'aria-setsize': setSize,\n 'aria-posinset': posInSet,\n 'aria-controls': controls\n }),\n on: {\n click: handleEvent,\n keydown: handleEvent\n },\n ref: 'link'\n }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n return h('li', {\n staticClass: 'nav-item',\n class: [titleItemClass],\n attrs: {\n role: 'presentation'\n }\n }, [$link]);\n }\n }); // --- Props ---\n\n var navProps = omit(props$U, ['tabs', 'isNavBar', 'cardHeader']);\n var props$3 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps$1), navProps), {}, {\n // Only applied to the currently active `<b-nav-item>`\n activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Only applied to the currently active `<b-tab>`\n // This prop is sniffed by the `<b-tab>` child\n activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n card: makeProp(PROP_TYPE_BOOLEAN, false),\n contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Synonym for 'bottom'\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n // This prop is sniffed by the `<b-tab>` child\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_TABS); // --- Main component ---\n // @vue/component\n\n var BTabs = /*#__PURE__*/extend({\n name: NAME_TABS,\n mixins: [idMixin, modelMixin$1, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTabs: function getBvTabs() {\n return _this;\n }\n };\n },\n props: props$3,\n data: function data() {\n return {\n // Index of current tab\n currentTab: toInteger(this[MODEL_PROP_NAME$1], -1),\n // Array of direct child `<b-tab>` instances, in DOM order\n tabs: [],\n // Array of child instances registered (for triggering reactive updates)\n registeredTabs: []\n };\n },\n computed: {\n fade: function fade() {\n // This computed prop is sniffed by the tab child\n return !this.noFade;\n },\n localNavClass: function localNavClass() {\n var classes = [];\n\n if (this.card && this.vertical) {\n classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0');\n }\n\n return [].concat(classes, [this.navClass]);\n }\n },\n watch: (_watch$2 = {}, _defineProperty(_watch$2, MODEL_PROP_NAME$1, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n newValue = toInteger(newValue, -1);\n oldValue = toInteger(oldValue, 0);\n var $tab = this.tabs[newValue];\n\n if ($tab && !$tab.disabled) {\n this.activateTab($tab);\n } else {\n // Try next or prev tabs\n if (newValue < oldValue) {\n this.previousTab();\n } else {\n this.nextTab();\n }\n }\n }\n }), _defineProperty(_watch$2, \"currentTab\", function currentTab(newValue) {\n var index = -1; // Ensure only one tab is active at most\n\n this.tabs.forEach(function ($tab, i) {\n if (i === newValue && !$tab.disabled) {\n $tab.localActive = true;\n index = i;\n } else {\n $tab.localActive = false;\n }\n }); // Update the v-model\n\n this.$emit(MODEL_EVENT_NAME$1, index);\n }), _defineProperty(_watch$2, \"tabs\", function tabs(newValue, oldValue) {\n var _this2 = this;\n\n // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n // if no explicit ID is provided, causing duplicate emits\n if (!looseEqual(newValue.map(function ($tab) {\n return $tab[COMPONENT_UID_KEY];\n }), oldValue.map(function ($tab) {\n return $tab[COMPONENT_UID_KEY];\n }))) {\n // In a `$nextTick()` to ensure `currentTab` has been set first\n this.$nextTick(function () {\n // We emit shallow copies of the new and old arrays of tabs,\n // to prevent users from potentially mutating the internal arrays\n _this2.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n });\n }\n }), _defineProperty(_watch$2, \"registeredTabs\", function registeredTabs() {\n this.updateTabs();\n }), _watch$2),\n created: function created() {\n // Create private non-reactive props\n this.$_observer = null;\n },\n mounted: function mounted() {\n this.setObserver(true);\n },\n beforeDestroy: function beforeDestroy() {\n this.setObserver(false); // Ensure no references to child instances exist\n\n this.tabs = [];\n },\n methods: {\n registerTab: function registerTab($tab) {\n if (!arrayIncludes(this.registeredTabs, $tab)) {\n this.registeredTabs.push($tab);\n }\n },\n unregisterTab: function unregisterTab($tab) {\n this.registeredTabs = this.registeredTabs.slice().filter(function ($t) {\n return $t !== $tab;\n });\n },\n // DOM observer is needed to detect changes in order of tabs\n setObserver: function setObserver() {\n var _this3 = this;\n\n var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.$_observer && this.$_observer.disconnect();\n this.$_observer = null;\n\n if (on) {\n /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n var handler = function handler() {\n _this3.$nextTick(function () {\n requestAF(function () {\n _this3.updateTabs();\n });\n });\n }; // Watch for changes to `<b-tab>` sub components\n\n\n this.$_observer = observeDom(this.$refs.content, handler, {\n childList: true,\n subtree: false,\n attributes: true,\n attributeFilter: ['id']\n });\n }\n },\n getTabs: function getTabs() {\n var $tabs = this.registeredTabs; // Dropped intentionally\n // .filter(\n // $tab => $tab.$children.filter($t => $t && $t._isTab).length === 0\n // )\n // DOM Order of Tabs\n\n var order = [];\n /* istanbul ignore next: too difficult to test */\n\n if (IS_BROWSER && $tabs.length > 0) {\n // We rely on the DOM when mounted to get the \"true\" order of the `<b-tab>` children\n // `querySelectorAll()` always returns elements in document order, regardless of\n // order specified in the selector\n var selector = $tabs.map(function ($tab) {\n return \"#\".concat($tab.safeId());\n }).join(', ');\n order = selectAll(selector, this.$el).map(function ($el) {\n return $el.id;\n }).filter(identity);\n } // Stable sort keeps the original order if not found in the `order` array,\n // which will be an empty array before mount\n\n\n return stableSort$1($tabs, function (a, b) {\n return order.indexOf(a.safeId()) - order.indexOf(b.safeId());\n });\n },\n updateTabs: function updateTabs() {\n var $tabs = this.getTabs(); // Find last active non-disabled tab in current tabs\n // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n\n var tabIndex = $tabs.indexOf($tabs.slice().reverse().find(function ($tab) {\n return $tab.localActive && !$tab.disabled;\n })); // Else try setting to `currentTab`\n\n if (tabIndex < 0) {\n var currentTab = this.currentTab;\n\n if (currentTab >= $tabs.length) {\n // Handle last tab being removed, so find the last non-disabled tab\n tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n // Current tab is not disabled\n tabIndex = currentTab;\n }\n } // Else find first non-disabled tab in current tabs\n\n\n if (tabIndex < 0) {\n tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n } // Ensure only one tab is active at a time\n\n\n $tabs.forEach(function ($tab, index) {\n $tab.localActive = index === tabIndex;\n });\n this.tabs = $tabs;\n this.currentTab = tabIndex;\n },\n // Find a button that controls a tab, given the tab reference\n // Returns the button vm instance\n getButtonForTab: function getButtonForTab($tab) {\n return (this.$refs.buttons || []).find(function ($btn) {\n return $btn.tab === $tab;\n });\n },\n // Force a button to re-render its content, given a `<b-tab>` instance\n // Called by `<b-tab>` on `update()`\n updateButton: function updateButton($tab) {\n var $button = this.getButtonForTab($tab);\n\n if ($button && $button.$forceUpdate) {\n $button.$forceUpdate();\n }\n },\n // Activate a tab given a `<b-tab>` instance\n // Also accessed by `<b-tab>`\n activateTab: function activateTab($tab) {\n var currentTab = this.currentTab,\n $tabs = this.tabs;\n var result = false;\n\n if ($tab) {\n var index = $tabs.indexOf($tab);\n\n if (index !== currentTab && index > -1 && !$tab.disabled) {\n var tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n cancelable: true,\n vueTarget: this,\n componentId: this.safeId()\n });\n this.$emit(tabEvent.type, index, currentTab, tabEvent);\n\n if (!tabEvent.defaultPrevented) {\n this.currentTab = index;\n result = true;\n }\n }\n } // Couldn't set tab, so ensure v-model is up to date\n\n /* istanbul ignore next: should rarely happen */\n\n\n if (!result && this[MODEL_PROP_NAME$1] !== currentTab) {\n this.$emit(MODEL_EVENT_NAME$1, currentTab);\n }\n\n return result;\n },\n // Deactivate a tab given a `<b-tab>` instance\n // Accessed by `<b-tab>`\n deactivateTab: function deactivateTab($tab) {\n if ($tab) {\n // Find first non-disabled tab that isn't the one being deactivated\n // If no tabs are available, then don't deactivate current tab\n return this.activateTab(this.tabs.filter(function ($t) {\n return $t !== $tab;\n }).find(notDisabled));\n }\n /* istanbul ignore next: should never/rarely happen */\n\n\n return false;\n },\n // Focus a tab button given its `<b-tab>` instance\n focusButton: function focusButton($tab) {\n var _this4 = this;\n\n // Wrap in `$nextTick()` to ensure DOM has completed rendering\n this.$nextTick(function () {\n attemptFocus(_this4.getButtonForTab($tab));\n });\n },\n // Emit a click event on a specified `<b-tab>` component instance\n emitTabClick: function emitTabClick(tab, event) {\n if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n tab.$emit(EVENT_NAME_CLICK, event);\n }\n },\n // Click handler\n clickTab: function clickTab($tab, event) {\n this.activateTab($tab);\n this.emitTabClick($tab, event);\n },\n // Move to first non-disabled tab\n firstTab: function firstTab(focus) {\n var $tab = this.tabs.find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to previous non-disabled tab\n previousTab: function previousTab(focus) {\n var currentIndex = mathMax(this.currentTab, 0);\n var $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to next non-disabled tab\n nextTab: function nextTab(focus) {\n var currentIndex = mathMax(this.currentTab, -1);\n var $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to last non-disabled tab\n lastTab: function lastTab(focus) {\n var $tab = this.tabs.slice().reverse().find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n }\n },\n render: function render(h) {\n var _this5 = this;\n\n var align = this.align,\n card = this.card,\n end = this.end,\n fill = this.fill,\n firstTab = this.firstTab,\n justified = this.justified,\n lastTab = this.lastTab,\n nextTab = this.nextTab,\n noKeyNav = this.noKeyNav,\n noNavStyle = this.noNavStyle,\n pills = this.pills,\n previousTab = this.previousTab,\n small = this.small,\n $tabs = this.tabs,\n vertical = this.vertical; // Currently active tab\n\n var $activeTab = $tabs.find(function ($tab) {\n return $tab.localActive && !$tab.disabled;\n }); // Tab button to allow focusing when no active tab found (keynav only)\n\n var $fallbackTab = $tabs.find(function ($tab) {\n return !$tab.disabled;\n }); // For each `<b-tab>` found create the tab buttons\n\n var $buttons = $tabs.map(function ($tab, index) {\n var _on;\n\n var safeId = $tab.safeId; // Ensure at least one tab button is focusable when keynav enabled (if possible)\n\n var tabIndex = null;\n\n if (!noKeyNav) {\n // Buttons are not in tab index unless active, or a fallback tab\n tabIndex = -1;\n\n if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n // Place tab button in tab sequence\n tabIndex = null;\n }\n }\n\n return h(BVTabButton, _defineProperty({\n props: {\n controls: safeId ? safeId() : null,\n id: $tab.controlledBy || (safeId ? safeId(\"_BV_tab_button_\") : null),\n noKeyNav: noKeyNav,\n posInSet: index + 1,\n setSize: $tabs.length,\n tab: $tab,\n tabIndex: tabIndex\n },\n on: (_on = {}, _defineProperty(_on, EVENT_NAME_CLICK, function (event) {\n _this5.clickTab($tab, event);\n }), _defineProperty(_on, EVENT_NAME_FIRST, firstTab), _defineProperty(_on, EVENT_NAME_PREV, previousTab), _defineProperty(_on, EVENT_NAME_NEXT, nextTab), _defineProperty(_on, EVENT_NAME_LAST, lastTab), _on),\n key: $tab[COMPONENT_UID_KEY] || index,\n ref: 'buttons'\n }, REF_FOR_KEY, true));\n });\n var $nav = h(BNav, {\n class: this.localNavClass,\n attrs: {\n role: 'tablist',\n id: this.safeId('_BV_tab_controls_')\n },\n props: {\n fill: fill,\n justified: justified,\n align: align,\n tabs: !noNavStyle && !pills,\n pills: !noNavStyle && pills,\n vertical: vertical,\n small: small,\n cardHeader: card && !vertical\n },\n ref: 'nav'\n }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n $nav = h('div', {\n class: [{\n 'card-header': card && !vertical && !end,\n 'card-footer': card && !vertical && end,\n 'col-auto': vertical\n }, this.navWrapperClass],\n key: 'bv-tabs-nav'\n }, [$nav]);\n var $children = this.normalizeSlot() || [];\n var $empty = h();\n\n if ($children.length === 0) {\n $empty = h('div', {\n class: ['tab-pane', 'active', {\n 'card-body': card\n }],\n key: 'bv-empty-tab'\n }, this.normalizeSlot(SLOT_NAME_EMPTY));\n }\n\n var $content = h('div', {\n staticClass: 'tab-content',\n class: [{\n col: vertical\n }, this.contentClass],\n attrs: {\n id: this.safeId('_BV_tab_container_')\n },\n key: 'bv-content',\n ref: 'content'\n }, [$children, $empty]); // Render final output\n\n return h(this.tag, {\n staticClass: 'tabs',\n class: {\n row: vertical,\n 'no-gutters': vertical && card\n },\n attrs: {\n id: this.safeId()\n }\n }, [end ? $content : h(), $nav, end ? h() : $content]);\n }\n });\n\n var _objectSpread2, _watch$1;\n\n var MODEL_PROP_NAME_ACTIVE = 'active';\n var MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE; // --- Props ---\n\n var props$2 = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3({}, props$25), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_ACTIVE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"buttonId\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"disabled\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"lazy\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"noBody\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"tag\", makeProp(PROP_TYPE_STRING, 'div')), _defineProperty(_objectSpread2, \"title\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"titleItemClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _defineProperty(_objectSpread2, \"titleLinkAttributes\", makeProp(PROP_TYPE_OBJECT)), _defineProperty(_objectSpread2, \"titleLinkClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _objectSpread2))), NAME_TAB); // --- Main component ---\n // @vue/component\n\n var BTab = /*#__PURE__*/extend({\n name: NAME_TAB,\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n getBvTabs: {\n default: function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n props: props$2,\n data: function data() {\n return {\n localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n };\n },\n computed: {\n bvTabs: function bvTabs() {\n return this.getBvTabs();\n },\n // For parent sniffing of child\n _isTab: function _isTab() {\n return true;\n },\n tabClasses: function tabClasses() {\n var active = this.localActive,\n disabled = this.disabled;\n return [{\n active: active,\n disabled: disabled,\n 'card-body': this.bvTabs.card && !this.noBody\n }, // Apply <b-tabs> `activeTabClass` styles when this tab is active\n active ? this.bvTabs.activeTabClass : null];\n },\n controlledBy: function controlledBy() {\n return this.buttonId || this.safeId('__BV_tab_button__');\n },\n computedNoFade: function computedNoFade() {\n return !(this.bvTabs.fade || false);\n },\n computedLazy: function computedLazy() {\n return this.bvTabs.lazy || this.lazy;\n }\n },\n watch: (_watch$1 = {}, _defineProperty(_watch$1, MODEL_PROP_NAME_ACTIVE, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n if (newValue) {\n // If activated post mount\n this.activate();\n } else {\n /* istanbul ignore next */\n if (!this.deactivate()) {\n // Tab couldn't be deactivated, so we reset the synced active prop\n // Deactivation will fail if no other tabs to activate\n this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n }\n }\n }\n }), _defineProperty(_watch$1, \"disabled\", function disabled(newValue, oldValue) {\n if (newValue !== oldValue) {\n var firstTab = this.bvTabs.firstTab;\n\n if (newValue && this.localActive && firstTab) {\n this.localActive = false;\n firstTab();\n }\n }\n }), _defineProperty(_watch$1, \"localActive\", function localActive(newValue) {\n // Make `active` prop work with `.sync` modifier\n this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n }), _watch$1),\n mounted: function mounted() {\n // Inform `<b-tabs>` of our presence\n this.registerTab();\n },\n updated: function updated() {\n // Force the tab button content to update (since slots are not reactive)\n // Only done if we have a title slot, as the title prop is reactive\n var updateButton = this.bvTabs.updateButton;\n\n if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n updateButton(this);\n }\n },\n beforeDestroy: function beforeDestroy() {\n // Inform `<b-tabs>` of our departure\n this.unregisterTab();\n },\n methods: {\n // Private methods\n registerTab: function registerTab() {\n // Inform `<b-tabs>` of our presence\n var registerTab = this.bvTabs.registerTab;\n\n if (registerTab) {\n registerTab(this);\n }\n },\n unregisterTab: function unregisterTab() {\n // Inform `<b-tabs>` of our departure\n var unregisterTab = this.bvTabs.unregisterTab;\n\n if (unregisterTab) {\n unregisterTab(this);\n }\n },\n // Public methods\n activate: function activate() {\n // Not inside a `<b-tabs>` component or tab is disabled\n var activateTab = this.bvTabs.activateTab;\n return activateTab && !this.disabled ? activateTab(this) : false;\n },\n deactivate: function deactivate() {\n // Not inside a `<b-tabs>` component or not active to begin with\n var deactivateTab = this.bvTabs.deactivateTab;\n return deactivateTab && this.localActive ? deactivateTab(this) : false;\n }\n },\n render: function render(h) {\n var localActive = this.localActive;\n var $content = h(this.tag, {\n staticClass: 'tab-pane',\n class: this.tabClasses,\n directives: [{\n name: 'show',\n value: localActive\n }],\n attrs: {\n role: 'tabpanel',\n id: this.safeId(),\n 'aria-hidden': localActive ? 'false' : 'true',\n 'aria-labelledby': this.controlledBy || null\n },\n ref: 'panel'\n }, // Render content lazily if requested\n [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n return h(BVTransition, {\n props: {\n mode: 'out-in',\n noFade: this.computedNoFade\n }\n }, [$content]);\n }\n });\n\n var TabsPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BTabs: BTabs,\n BTab: BTab\n }\n });\n\n var TimePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BTime: BTime\n }\n });\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n var inBrowser = typeof window !== 'undefined';\n function freeze(item) {\n if (Array.isArray(item) || _typeof(item) === 'object') {\n return Object.freeze(item);\n }\n\n return item;\n }\n function combinePassengers(transports) {\n var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return transports.reduce(function (passengers, transport) {\n var temp = transport.passengers[0];\n var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n return passengers.concat(newPassengers);\n }, []);\n }\n function stableSort(array, compareFn) {\n return array.map(function (v, idx) {\n return [idx, v];\n }).sort(function (a, b) {\n return compareFn(a[1], b[1]) || a[0] - b[0];\n }).map(function (c) {\n return c[1];\n });\n }\n function pick(obj, keys) {\n return keys.reduce(function (acc, key) {\n if (obj.hasOwnProperty(key)) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n }\n\n var transports = {};\n var targets = {};\n var sources = {};\n var Wormhole = Vue__default['default'].extend({\n data: function data() {\n return {\n transports: transports,\n targets: targets,\n sources: sources,\n trackInstances: inBrowser\n };\n },\n methods: {\n open: function open(transport) {\n if (!inBrowser) return;\n var to = transport.to,\n from = transport.from,\n passengers = transport.passengers,\n _transport$order = transport.order,\n order = _transport$order === void 0 ? Infinity : _transport$order;\n if (!to || !from || !passengers) return;\n var newTransport = {\n to: to,\n from: from,\n passengers: freeze(passengers),\n order: order\n };\n var keys = Object.keys(this.transports);\n\n if (keys.indexOf(to) === -1) {\n Vue__default['default'].set(this.transports, to, []);\n }\n\n var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n var newTransports = this.transports[to].slice(0);\n\n if (currentIndex === -1) {\n newTransports.push(newTransport);\n } else {\n newTransports[currentIndex] = newTransport;\n }\n\n this.transports[to] = stableSort(newTransports, function (a, b) {\n return a.order - b.order;\n });\n },\n close: function close(transport) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var to = transport.to,\n from = transport.from;\n if (!to || !from && force === false) return;\n\n if (!this.transports[to]) {\n return;\n }\n\n if (force) {\n this.transports[to] = [];\n } else {\n var index = this.$_getTransportIndex(transport);\n\n if (index >= 0) {\n // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n var newTransports = this.transports[to].slice(0);\n newTransports.splice(index, 1);\n this.transports[to] = newTransports;\n }\n }\n },\n registerTarget: function registerTarget(target, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.targets[target]) {\n console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n }\n\n this.$set(this.targets, target, Object.freeze([vm]));\n },\n unregisterTarget: function unregisterTarget(target) {\n this.$delete(this.targets, target);\n },\n registerSource: function registerSource(source, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.sources[source]) {\n console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n }\n\n this.$set(this.sources, source, Object.freeze([vm]));\n },\n unregisterSource: function unregisterSource(source) {\n this.$delete(this.sources, source);\n },\n hasTarget: function hasTarget(to) {\n return !!(this.targets[to] && this.targets[to][0]);\n },\n hasSource: function hasSource(to) {\n return !!(this.sources[to] && this.sources[to][0]);\n },\n hasContentFor: function hasContentFor(to) {\n return !!this.transports[to] && !!this.transports[to].length;\n },\n // Internal\n $_getTransportIndex: function $_getTransportIndex(_ref) {\n var to = _ref.to,\n from = _ref.from;\n\n for (var i in this.transports[to]) {\n if (this.transports[to][i].from === from) {\n return +i;\n }\n }\n\n return -1;\n }\n }\n });\n var wormhole = new Wormhole(transports);\n\n var _id = 1;\n var Portal = Vue__default['default'].extend({\n name: 'portal',\n props: {\n disabled: {\n type: Boolean\n },\n name: {\n type: String,\n default: function _default() {\n return String(_id++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n }\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerSource(_this.name, _this);\n });\n },\n mounted: function mounted() {\n if (!this.disabled) {\n this.sendUpdate();\n }\n },\n updated: function updated() {\n if (this.disabled) {\n this.clear();\n } else {\n this.sendUpdate();\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterSource(this.name);\n this.clear();\n },\n watch: {\n to: function to(newValue, oldValue) {\n oldValue && oldValue !== newValue && this.clear(oldValue);\n this.sendUpdate();\n }\n },\n methods: {\n clear: function clear(target) {\n var closer = {\n from: this.name,\n to: target || this.to\n };\n wormhole.close(closer);\n },\n normalizeSlots: function normalizeSlots() {\n return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n },\n normalizeOwnChildren: function normalizeOwnChildren(children) {\n return typeof children === 'function' ? children(this.slotProps) : children;\n },\n sendUpdate: function sendUpdate() {\n var slotContent = this.normalizeSlots();\n\n if (slotContent) {\n var transport = {\n from: this.name,\n to: this.to,\n passengers: _toConsumableArray(slotContent),\n order: this.order\n };\n wormhole.open(transport);\n } else {\n this.clear();\n }\n }\n },\n render: function render(h) {\n var children = this.$slots.default || this.$scopedSlots.default || [];\n var Tag = this.tag;\n\n if (children && this.disabled) {\n return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n } else {\n return this.slim ? h() : h(Tag, {\n class: {\n 'v-portal': true\n },\n style: {\n display: 'none'\n },\n key: 'v-portal-placeholder'\n });\n }\n }\n });\n\n var PortalTarget = Vue__default['default'].extend({\n name: 'portalTarget',\n props: {\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String,\n required: true\n },\n slim: {\n type: Boolean,\n default: false\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n data: function data() {\n return {\n transports: wormhole.transports,\n firstRender: true\n };\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerTarget(_this.name, _this);\n });\n },\n watch: {\n ownTransports: function ownTransports() {\n this.$emit('change', this.children().length > 0);\n },\n name: function name(newVal, oldVal) {\n /**\n * TODO\n * This should warn as well ...\n */\n wormhole.unregisterTarget(oldVal);\n wormhole.registerTarget(newVal, this);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.transition) {\n this.$nextTick(function () {\n // only when we have a transition, because it causes a re-render\n _this2.firstRender = false;\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterTarget(this.name);\n },\n computed: {\n ownTransports: function ownTransports() {\n var transports = this.transports[this.name] || [];\n\n if (this.multiple) {\n return transports;\n }\n\n return transports.length === 0 ? [] : [transports[transports.length - 1]];\n },\n passengers: function passengers() {\n return combinePassengers(this.ownTransports, this.slotProps);\n }\n },\n methods: {\n // can't be a computed prop because it has to \"react\" to $slot changes.\n children: function children() {\n return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n },\n // can't be a computed prop because it has to \"react\" to this.children().\n noWrapper: function noWrapper() {\n var noWrapper = this.slim && !this.transition;\n\n if (noWrapper && this.children().length > 1) {\n console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n }\n\n return noWrapper;\n }\n },\n render: function render(h) {\n var noWrapper = this.noWrapper();\n var children = this.children();\n var Tag = this.transition || this.tag;\n return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n props: {\n // if we have a transition component, pass the tag if it exists\n tag: this.transition && this.tag ? this.tag : undefined\n },\n class: {\n 'vue-portal-target': true\n }\n }, children);\n }\n });\n\n var _id$1 = 0;\n var portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\n var targetProps = ['multiple', 'transition'];\n Vue__default['default'].extend({\n name: 'MountingPortal',\n inheritAttrs: false,\n props: {\n append: {\n type: [Boolean, String]\n },\n bail: {\n type: Boolean\n },\n mountTo: {\n type: String,\n required: true\n },\n // Portal\n disabled: {\n type: Boolean\n },\n // name for the portal\n name: {\n type: String,\n default: function _default() {\n return 'mounted_' + String(_id$1++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n // name for the target\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n },\n // Target\n multiple: {\n type: Boolean,\n default: false\n },\n targetSlim: {\n type: Boolean\n },\n targetSlotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n targetTag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n created: function created() {\n if (typeof document === 'undefined') return;\n var el = document.querySelector(this.mountTo);\n\n if (!el) {\n console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n return;\n }\n\n var props = this.$props; // Target already exists\n\n if (wormhole.targets[props.name]) {\n if (props.bail) {\n console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n Aborting because 'bail: true' is set\"));\n } else {\n this.portalTarget = wormhole.targets[props.name];\n }\n\n return;\n }\n\n var append = props.append;\n\n if (append) {\n var type = typeof append === 'string' ? append : 'DIV';\n var mountEl = document.createElement(type);\n el.appendChild(mountEl);\n el = mountEl;\n } // get props for target from $props\n // we have to rename a few of them\n\n\n var _props = pick(this.$props, targetProps);\n\n _props.slim = this.targetSlim;\n _props.tag = this.targetTag;\n _props.slotProps = this.targetSlotProps;\n _props.name = this.to;\n this.portalTarget = new PortalTarget({\n el: el,\n parent: this.$parent || this,\n propsData: _props\n });\n },\n beforeDestroy: function beforeDestroy() {\n var target = this.portalTarget;\n\n if (this.append) {\n var el = target.$el;\n el.parentNode.removeChild(el);\n }\n\n target.$destroy();\n },\n render: function render(h) {\n if (!this.portalTarget) {\n console.warn(\"[portal-vue] Target wasn't mounted\");\n return h();\n } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n if (!this.$scopedSlots.manual) {\n var props = pick(this.$props, portalProps);\n return h(Portal, {\n props: props,\n attrs: this.$attrs,\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }, this.$slots.default);\n } // else, we render the scoped slot\n\n\n var content = this.$scopedSlots.manual({\n to: this.to\n }); // if user used <template> for the scoped slot\n // content will be an array\n\n if (Array.isArray(content)) {\n content = content[0];\n }\n\n if (!content) return h();\n return content;\n }\n });\n\n // @vue/component\n\n var DefaultTransition = /*#__PURE__*/extend({\n mixins: [normalizeSlotMixin],\n data: function data() {\n return {\n // Transition classes base name\n name: 'b-toaster'\n };\n },\n methods: {\n onAfterEnter: function onAfterEnter(el) {\n var _this = this;\n\n // Work around a Vue.js bug where `*-enter-to` class is not removed\n // See: https://github.com/vuejs/vue/pull/7901\n // The `*-move` class is also stuck on elements that moved,\n // but there are no JavaScript hooks to handle after move\n // See: https://github.com/vuejs/vue/pull/7906\n requestAF(function () {\n removeClass(el, \"\".concat(_this.name, \"-enter-to\"));\n });\n }\n },\n render: function render(h) {\n return h('transition-group', {\n props: {\n tag: 'div',\n name: this.name\n },\n on: {\n afterEnter: this.onAfterEnter\n }\n }, this.normalizeSlot());\n }\n }); // --- Props ---\n\n var props$1 = makePropsConfigurable({\n // Allowed: 'true' or 'false' or `null`\n ariaAtomic: makeProp(PROP_TYPE_STRING),\n ariaLive: makeProp(PROP_TYPE_STRING),\n name: makeProp(PROP_TYPE_STRING, undefined, true),\n // Required\n // Aria role\n role: makeProp(PROP_TYPE_STRING)\n }, NAME_TOASTER); // --- Main component ---\n // @vue/component\n\n var BToaster = /*#__PURE__*/extend({\n name: NAME_TOASTER,\n mixins: [listenOnRootMixin],\n props: props$1,\n data: function data() {\n return {\n // We don't render on SSR or if a an existing target found\n doRender: false,\n dead: false,\n // Toaster names cannot change once created\n staticName: this.name\n };\n },\n beforeMount: function beforeMount() {\n var name = this.name;\n this.staticName = name;\n /* istanbul ignore if */\n\n if (wormhole.hasTarget(name)) {\n warn(\"A \\\"<portal-target>\\\" with name \\\"\".concat(name, \"\\\" already exists in the document.\"), NAME_TOASTER);\n this.dead = true;\n } else {\n this.doRender = true;\n }\n },\n beforeDestroy: function beforeDestroy() {\n // Let toasts made with `this.$bvToast.toast()` know that this toaster\n // is being destroyed and should should also destroy/hide themselves\n if (this.doRender) {\n this.emitOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), this.name);\n }\n },\n destroyed: function destroyed() {\n // Remove from DOM if needed\n var $el = this.$el;\n /* istanbul ignore next: difficult to test */\n\n if ($el && $el.parentNode) {\n $el.parentNode.removeChild($el);\n }\n },\n render: function render(h) {\n var $toaster = h('div', {\n class: ['d-none', {\n 'b-dead-toaster': this.dead\n }]\n });\n\n if (this.doRender) {\n var $target = h(PortalTarget, {\n staticClass: 'b-toaster-slot',\n props: {\n name: this.staticName,\n multiple: true,\n tag: 'div',\n slim: false,\n // transition: this.transition || DefaultTransition\n transition: DefaultTransition\n }\n });\n $toaster = h('div', {\n staticClass: 'b-toaster',\n class: [this.staticName],\n attrs: {\n id: this.staticName,\n // Fallback to null to make sure attribute doesn't exist\n role: this.role || null,\n 'aria-live': this.ariaLive,\n 'aria-atomic': this.ariaAtomic\n }\n }, [$target]);\n }\n\n return $toaster;\n }\n });\n\n var _watch;\n\n var _makeModelMixin = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false,\n event: EVENT_NAME_CHANGE\n }),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\n var MIN_DURATION = 1000; // --- Props ---\n\n var linkProps = pick$1(props$2f, ['href', 'to']);\n var props = makePropsConfigurable(sortKeys(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, props$25), modelProps), linkProps), {}, {\n appendToast: makeProp(PROP_TYPE_BOOLEAN, false),\n autoHideDelay: makeProp(PROP_TYPE_NUMBER_STRING, 5000),\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n // Switches role to 'status' and aria-live to 'polite'\n isStatus: makeProp(PROP_TYPE_BOOLEAN, false),\n noAutoHide: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseButton: makeProp(PROP_TYPE_BOOLEAN, false),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n noHoverPause: makeProp(PROP_TYPE_BOOLEAN, false),\n solid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Render the toast in place, rather than in a portal-target\n static: makeProp(PROP_TYPE_BOOLEAN, false),\n title: makeProp(PROP_TYPE_STRING),\n toastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n toaster: makeProp(PROP_TYPE_STRING, 'b-toaster-top-right'),\n variant: makeProp(PROP_TYPE_STRING)\n })), NAME_TOAST); // --- Main component ---\n // @vue/component\n\n var BToast = /*#__PURE__*/extend({\n name: NAME_TOAST,\n mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin, scopedStyleMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n isMounted: false,\n doRender: false,\n localShow: false,\n isTransitioning: false,\n isHiding: false,\n order: 0,\n dismissStarted: 0,\n resumeDismiss: 0\n };\n },\n computed: {\n toastClasses: function toastClasses() {\n var appendToast = this.appendToast,\n variant = this.variant;\n return _defineProperty({\n 'b-toast-solid': this.solid,\n 'b-toast-append': appendToast,\n 'b-toast-prepend': !appendToast\n }, \"b-toast-\".concat(variant), variant);\n },\n slotScope: function slotScope() {\n var hide = this.hide;\n return {\n hide: hide\n };\n },\n computedDuration: function computedDuration() {\n // Minimum supported duration is 1 second\n return mathMax(toInteger(this.autoHideDelay, 0), MIN_DURATION);\n },\n computedToaster: function computedToaster() {\n return String(this.toaster);\n },\n transitionHandlers: function transitionHandlers() {\n return {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n beforeLeave: this.onBeforeLeave,\n afterLeave: this.onAfterLeave\n };\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread2$3(_objectSpread2$3({}, this.bvAttrs), {}, {\n id: this.safeId(),\n tabindex: '0'\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n this[newValue ? 'show' : 'hide']();\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue) {\n if (newValue !== this[MODEL_PROP_NAME]) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_watch, \"toaster\", function toaster() {\n // If toaster target changed, make sure toaster exists\n this.$nextTick(this.ensureToaster);\n }), _defineProperty(_watch, \"static\", function _static(newValue) {\n // If static changes to true, and the toast is showing,\n // ensure the toaster target exists\n if (newValue && this.localShow) {\n this.ensureToaster();\n }\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_dismissTimer = null;\n },\n mounted: function mounted() {\n var _this = this;\n\n this.isMounted = true;\n this.$nextTick(function () {\n if (_this[MODEL_PROP_NAME]) {\n requestAF(function () {\n _this.show();\n });\n }\n }); // Listen for global $root show events\n\n this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), function (id) {\n if (id === _this.safeId()) {\n _this.show();\n }\n }); // Listen for global $root hide events\n\n this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), function (id) {\n if (!id || id === _this.safeId()) {\n _this.hide();\n }\n }); // Make sure we hide when toaster is destroyed\n\n /* istanbul ignore next: difficult to test */\n\n this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), function (toaster) {\n /* istanbul ignore next */\n if (toaster === _this.computedToaster) {\n _this.hide();\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDismissTimer();\n },\n methods: {\n show: function show() {\n var _this2 = this;\n\n if (!this.localShow) {\n this.ensureToaster();\n var showEvent = this.buildEvent(EVENT_NAME_SHOW);\n this.emitEvent(showEvent);\n this.dismissStarted = this.resumeDismiss = 0;\n this.order = Date.now() * (this.appendToast ? 1 : -1);\n this.isHiding = false;\n this.doRender = true;\n this.$nextTick(function () {\n // We show the toast after we have rendered the portal and b-toast wrapper\n // so that screen readers will properly announce the toast\n requestAF(function () {\n _this2.localShow = true;\n });\n });\n }\n },\n hide: function hide() {\n var _this3 = this;\n\n if (this.localShow) {\n var hideEvent = this.buildEvent(EVENT_NAME_HIDE);\n this.emitEvent(hideEvent);\n this.setHoverHandler(false);\n this.dismissStarted = this.resumeDismiss = 0;\n this.clearDismissTimer();\n this.isHiding = true;\n requestAF(function () {\n _this3.localShow = false;\n });\n }\n },\n buildEvent: function buildEvent(type) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new BvEvent(type, _objectSpread2$3(_objectSpread2$3({\n cancelable: false,\n target: this.$el || null,\n relatedTarget: null\n }, options), {}, {\n vueTarget: this,\n componentId: this.safeId()\n }));\n },\n emitEvent: function emitEvent(bvEvent) {\n var type = bvEvent.type;\n this.emitOnRoot(getRootEventName(NAME_TOAST, type), bvEvent);\n this.$emit(type, bvEvent);\n },\n ensureToaster: function ensureToaster() {\n if (this.static) {\n return;\n }\n\n var computedToaster = this.computedToaster;\n\n if (!wormhole.hasTarget(computedToaster)) {\n var div = document.createElement('div');\n document.body.appendChild(div);\n var toaster = createNewChildComponent(this.bvEventRoot, BToaster, {\n propsData: {\n name: computedToaster\n }\n });\n toaster.$mount(div);\n }\n },\n startDismissTimer: function startDismissTimer() {\n this.clearDismissTimer();\n\n if (!this.noAutoHide) {\n this.$_dismissTimer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n this.dismissStarted = Date.now();\n this.resumeDismiss = 0;\n }\n },\n clearDismissTimer: function clearDismissTimer() {\n clearTimeout(this.$_dismissTimer);\n this.$_dismissTimer = null;\n },\n setHoverHandler: function setHoverHandler(on) {\n var el = this.$refs['b-toast'];\n eventOnOff(on, el, 'mouseenter', this.onPause, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, el, 'mouseleave', this.onUnPause, EVENT_OPTIONS_NO_CAPTURE);\n },\n onPause: function onPause() {\n // Determine time remaining, and then pause timer\n if (this.noAutoHide || this.noHoverPause || !this.$_dismissTimer || this.resumeDismiss) {\n return;\n }\n\n var passed = Date.now() - this.dismissStarted;\n\n if (passed > 0) {\n this.clearDismissTimer();\n this.resumeDismiss = mathMax(this.computedDuration - passed, MIN_DURATION);\n }\n },\n onUnPause: function onUnPause() {\n // Restart timer with max of time remaining or 1 second\n if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n this.resumeDismiss = this.dismissStarted = 0;\n return;\n }\n\n this.startDismissTimer();\n },\n onLinkClick: function onLinkClick() {\n var _this4 = this;\n\n // We delay the close to allow time for the\n // browser to process the link click\n this.$nextTick(function () {\n requestAF(function () {\n _this4.hide();\n });\n });\n },\n onBeforeEnter: function onBeforeEnter() {\n this.isTransitioning = true;\n },\n onAfterEnter: function onAfterEnter() {\n this.isTransitioning = false;\n var hiddenEvent = this.buildEvent(EVENT_NAME_SHOWN);\n this.emitEvent(hiddenEvent);\n this.startDismissTimer();\n this.setHoverHandler(true);\n },\n onBeforeLeave: function onBeforeLeave() {\n this.isTransitioning = true;\n },\n onAfterLeave: function onAfterLeave() {\n this.isTransitioning = false;\n this.order = 0;\n this.resumeDismiss = this.dismissStarted = 0;\n var hiddenEvent = this.buildEvent(EVENT_NAME_HIDDEN);\n this.emitEvent(hiddenEvent);\n this.doRender = false;\n },\n // Render helper for generating the toast\n makeToast: function makeToast(h) {\n var _this5 = this;\n\n var title = this.title,\n slotScope = this.slotScope;\n var link = isLink$1(this);\n var $headerContent = [];\n var $title = this.normalizeSlot(SLOT_NAME_TOAST_TITLE, slotScope);\n\n if ($title) {\n $headerContent.push($title);\n } else if (title) {\n $headerContent.push(h('strong', {\n staticClass: 'mr-2'\n }, title));\n }\n\n if (!this.noCloseButton) {\n $headerContent.push(h(BButtonClose, {\n staticClass: 'ml-auto mb-1',\n on: {\n click: function click() {\n _this5.hide();\n }\n }\n }));\n }\n\n var $header = h();\n\n if ($headerContent.length > 0) {\n $header = h(this.headerTag, {\n staticClass: 'toast-header',\n class: this.headerClass\n }, $headerContent);\n }\n\n var $body = h(link ? BLink : 'div', {\n staticClass: 'toast-body',\n class: this.bodyClass,\n props: link ? pluckProps(linkProps, this) : {},\n on: link ? {\n click: this.onLinkClick\n } : {}\n }, this.normalizeSlot(SLOT_NAME_DEFAULT, slotScope));\n return h('div', {\n staticClass: 'toast',\n class: this.toastClass,\n attrs: this.computedAttrs,\n key: \"toast-\".concat(this[COMPONENT_UID_KEY]),\n ref: 'toast'\n }, [$header, $body]);\n }\n },\n render: function render(h) {\n if (!this.doRender || !this.isMounted) {\n return h();\n }\n\n var order = this.order,\n isStatic = this.static,\n isHiding = this.isHiding,\n isStatus = this.isStatus;\n var name = \"b-toast-\".concat(this[COMPONENT_UID_KEY]);\n var $toast = h('div', {\n staticClass: 'b-toast',\n class: this.toastClasses,\n attrs: _objectSpread2$3(_objectSpread2$3({}, isStatic ? {} : this.scopedStyleAttrs), {}, {\n id: this.safeId('_toast_outer'),\n role: isHiding ? null : isStatus ? 'status' : 'alert',\n 'aria-live': isHiding ? null : isStatus ? 'polite' : 'assertive',\n 'aria-atomic': isHiding ? null : 'true'\n }),\n key: name,\n ref: 'b-toast'\n }, [h(BVTransition, {\n props: {\n noFade: this.noFade\n },\n on: this.transitionHandlers\n }, [this.localShow ? this.makeToast(h) : h()])]);\n return h(Portal, {\n props: {\n name: name,\n to: this.computedToaster,\n order: order,\n slim: true,\n disabled: isStatic\n }\n }, [$toast]);\n }\n });\n\n var PROP_NAME = '$bvToast';\n var PROP_NAME_PRIV = '_bv__toast'; // Base toast props that are allowed\n // Some may be ignored or overridden on some message boxes\n // Prop ID is allowed, but really only should be used for testing\n // We need to add it in explicitly as it comes from the `idMixin`\n\n var BASE_PROPS = ['id'].concat(_toConsumableArray$1(keys(omit(props, ['static', 'visible'])))); // Map prop names to toast slot names\n\n var propsToSlots = {\n toastContent: 'default',\n title: 'toast-title'\n }; // --- Helper methods ---\n // Method to filter only recognized props that are not undefined\n\n var filterOptions = function filterOptions(options) {\n return BASE_PROPS.reduce(function (memo, key) {\n if (!isUndefined(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n }; // Method to install `$bvToast` VM injection\n\n\n var plugin = function plugin(Vue) {\n // Create a private sub-component constructor that\n // extends BToast and self-destructs after hidden\n // @vue/component\n var BVToastPop = Vue.extend({\n name: NAME_TOAST_POP,\n extends: BToast,\n mixins: [useParentMixin],\n destroyed: function destroyed() {\n // Make sure we not in document any more\n var $el = this.$el;\n\n if ($el && $el.parentNode) {\n $el.parentNode.removeChild($el);\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Self destruct handler\n var handleDestroy = function handleDestroy() {\n // Ensure the toast has been force hidden\n _this.localShow = false;\n _this.doRender = false;\n\n _this.$nextTick(function () {\n _this.$nextTick(function () {\n // In a `requestAF()` to release control back to application\n // and to allow the portal-target time to remove the content\n requestAF(function () {\n _this.$destroy();\n });\n });\n });\n }; // Self destruct if parent destroyed\n\n\n this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy); // Self destruct after hidden\n\n this.$once(EVENT_NAME_HIDDEN, handleDestroy); // Self destruct when toaster is destroyed\n\n this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), function (toaster) {\n /* istanbul ignore next: hard to test */\n if (toaster === _this.toaster) {\n handleDestroy();\n }\n });\n }\n }); // Private method to generate the on-demand toast\n\n var makeToast = function makeToast(props, parent) {\n if (warnNotClient(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BVToastPop` component\n\n\n var toast = createNewChildComponent(parent, BVToastPop, {\n // We set parent as the local VM so these toasts can emit events on the\n // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n propsData: _objectSpread2$3(_objectSpread2$3(_objectSpread2$3({}, filterOptions(getComponentConfig(NAME_TOAST))), omit(props, keys(propsToSlots))), {}, {\n // Props that can't be overridden\n static: false,\n visible: true\n })\n }); // Convert certain props to slots\n\n keys(propsToSlots).forEach(function (prop) {\n var value = props[prop];\n\n if (!isUndefined(value)) {\n // Can be a string, or array of VNodes\n if (prop === 'title' && isString(value)) {\n // Special case for title if it is a string, we wrap in a <strong>\n value = [parent.$createElement('strong', {\n class: 'mr-2'\n }, value)];\n }\n\n toast.$slots[propsToSlots[prop]] = concat(value);\n }\n }); // Create a mount point (a DIV) and mount it (which triggers the show)\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n toast.$mount(div);\n }; // Declare BvToast instance property class\n\n\n var BvToast = /*#__PURE__*/function () {\n function BvToast(vm) {\n _classCallCheck(this, BvToast);\n\n // Assign the new properties to this instance\n assign(this, {\n _vm: vm,\n _root: getEventRoot(vm)\n }); // Set these properties as read-only and non-enumerable\n\n defineProperties(this, {\n _vm: readonlyDescriptor(),\n _root: readonlyDescriptor()\n });\n } // --- Public Instance methods ---\n // Opens a user defined toast and returns immediately\n\n\n _createClass(BvToast, [{\n key: \"toast\",\n value: function toast(content) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!content || warnNotClient(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n }\n\n makeToast(_objectSpread2$3(_objectSpread2$3({}, filterOptions(options)), {}, {\n toastContent: content\n }), this._vm);\n } // shows a `<b-toast>` component with the specified ID\n\n }, {\n key: \"show\",\n value: function show(id) {\n if (id) {\n this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id);\n }\n } // Hide a toast with specified ID, or if not ID all toasts\n\n }, {\n key: \"hide\",\n value: function hide() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id);\n }\n }]);\n\n return BvToast;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvToast` for each VM\n this[PROP_NAME_PRIV] = new BvToast(this);\n }\n }); // Define our read-only `$bvToast` instance property\n // Placed in an if just in case in HMR mode\n\n if (!hasOwnProperty(Vue.prototype, PROP_NAME)) {\n defineProperty$1(Vue.prototype, PROP_NAME, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n warn(\"\\\"\".concat(PROP_NAME, \"\\\" must be accessed from a Vue instance \\\"this\\\" context.\"), NAME_TOAST);\n }\n\n return this[PROP_NAME_PRIV];\n }\n });\n }\n };\n\n var BVToastPlugin = /*#__PURE__*/pluginFactory({\n plugins: {\n plugin: plugin\n }\n });\n\n var ToastPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BToast: BToast,\n BToaster: BToaster\n },\n // $bvToast injection\n plugins: {\n BVToastPlugin: BVToastPlugin\n }\n });\n\n var BV_TOOLTIP = '__BV_Tooltip__'; // Default trigger\n\n var DefaultTrigger = 'hover focus'; // Valid event triggers\n\n var validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true,\n manual: true\n }; // Directive modifier test regular expressions. Pre-compile for performance\n\n var htmlRE = /^html$/i;\n var noninteractiveRE = /^noninteractive$/i;\n var noFadeRE = /^nofade$/i;\n var placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\n var boundaryRE = /^(window|viewport|scrollParent)$/i;\n var delayRE = /^d\\d+$/i;\n var delayShowRE = /^ds\\d+$/i;\n var delayHideRE = /^dh\\d+$/i;\n var offsetRE$1 = /^o-?\\d+$/i;\n var variantRE = /^v-.+$/i;\n var spacesRE = /\\s+/; // Build a Tooltip config based on bindings (if any)\n // Arguments and modifiers take precedence over passed value config object\n\n var parseBindings$1 = function parseBindings(bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n // We start out with a basic config\n var config = {\n title: undefined,\n trigger: '',\n // Default set below if needed\n placement: 'top',\n fallbackPlacement: 'flip',\n container: false,\n // Default of body\n animation: true,\n offset: 0,\n id: null,\n html: false,\n interactive: true,\n disabled: false,\n delay: getComponentConfig(NAME_TOOLTIP, 'delay', 50),\n boundary: String(getComponentConfig(NAME_TOOLTIP, 'boundary', 'scrollParent')),\n boundaryPadding: toInteger(getComponentConfig(NAME_TOOLTIP, 'boundaryPadding', 5), 0),\n variant: getComponentConfig(NAME_TOOLTIP, 'variant'),\n customClass: getComponentConfig(NAME_TOOLTIP, 'customClass')\n }; // Process `bindings.value`\n\n if (isString(bindings.value) || isNumber(bindings.value)) {\n // Value is tooltip content (HTML optionally supported)\n config.title = bindings.value;\n } else if (isFunction$1(bindings.value)) {\n // Title generator function\n config.title = bindings.value;\n } else if (isPlainObject(bindings.value)) {\n // Value is config object, so merge\n config = _objectSpread2$3(_objectSpread2$3({}, config), bindings.value);\n } // If title is not provided, try title attribute\n\n\n if (isUndefined(config.title)) {\n // Try attribute\n var attrs = isVue3 ? vnode.props : (vnode.data || {}).attrs;\n config.title = attrs && !isUndefinedOrNull(attrs.title) ? attrs.title : undefined;\n } // Normalize delay\n\n\n if (!isPlainObject(config.delay)) {\n config.delay = {\n show: toInteger(config.delay, 0),\n hide: toInteger(config.delay, 0)\n };\n } // If argument, assume element ID of container element\n\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n keys(bindings.modifiers).forEach(function (mod) {\n if (htmlRE.test(mod)) {\n // Title allows HTML\n config.html = true;\n } else if (noninteractiveRE.test(mod)) {\n // Noninteractive\n config.interactive = false;\n } else if (noFadeRE.test(mod)) {\n // No animation\n config.animation = false;\n } else if (placementRE.test(mod)) {\n // Placement of tooltip\n config.placement = mod;\n } else if (boundaryRE.test(mod)) {\n // Boundary of tooltip\n mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n config.boundary = mod;\n } else if (delayRE.test(mod)) {\n // Delay value\n var delay = toInteger(mod.slice(1), 0);\n config.delay.show = delay;\n config.delay.hide = delay;\n } else if (delayShowRE.test(mod)) {\n // Delay show value\n config.delay.show = toInteger(mod.slice(2), 0);\n } else if (delayHideRE.test(mod)) {\n // Delay hide value\n config.delay.hide = toInteger(mod.slice(2), 0);\n } else if (offsetRE$1.test(mod)) {\n // Offset value, negative allowed\n config.offset = toInteger(mod.slice(1), 0);\n } else if (variantRE.test(mod)) {\n // Variant\n config.variant = mod.slice(2) || null;\n }\n }); // Special handling of event trigger modifiers trigger is\n // a space separated list\n\n var selectedTriggers = {}; // Parse current config object trigger\n\n concat(config.trigger || '').filter(identity).join(' ').trim().toLowerCase().split(spacesRE).forEach(function (trigger) {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Parse modifiers for triggers\n\n keys(bindings.modifiers).forEach(function (mod) {\n mod = mod.toLowerCase();\n\n if (validTriggers[mod]) {\n // If modifier is a valid trigger\n selectedTriggers[mod] = true;\n }\n }); // Sanitize triggers\n\n config.trigger = keys(selectedTriggers).join(' ');\n\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus';\n }\n\n if (!config.trigger) {\n // Use default trigger\n config.trigger = DefaultTrigger;\n } // Return the config\n\n\n return config;\n }; // Add/update Tooltip on our element\n\n\n var applyTooltip = function applyTooltip(el, bindings, vnode) {\n if (!IS_BROWSER) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings$1(bindings, vnode);\n\n if (!el[BV_TOOLTIP]) {\n var parent = getInstanceFromDirective(vnode, bindings);\n el[BV_TOOLTIP] = createNewChildComponent(parent, BVTooltip, {\n // Add the parent's scoped style attribute data\n _scopeId: getScopeId(parent, undefined)\n });\n el[BV_TOOLTIP].__bv_prev_data__ = {};\n el[BV_TOOLTIP].$on(EVENT_NAME_SHOW, function ()\n /* istanbul ignore next: for now */\n {\n // Before showing the tooltip, we update the title if it is a function\n if (isFunction$1(config.title)) {\n el[BV_TOOLTIP].updateData({\n title: config.title(el)\n });\n }\n });\n }\n\n var data = {\n title: config.title,\n triggers: config.trigger,\n placement: config.placement,\n fallbackPlacement: config.fallbackPlacement,\n variant: config.variant,\n customClass: config.customClass,\n container: config.container,\n boundary: config.boundary,\n delay: config.delay,\n offset: config.offset,\n noFade: !config.animation,\n id: config.id,\n interactive: config.interactive,\n disabled: config.disabled,\n html: config.html\n };\n var oldData = el[BV_TOOLTIP].__bv_prev_data__;\n el[BV_TOOLTIP].__bv_prev_data__ = data;\n\n if (!looseEqual(data, oldData)) {\n // We only update the instance if data has changed\n var newData = {\n target: el\n };\n keys(data).forEach(function (prop) {\n // We only pass data properties that have changed\n if (data[prop] !== oldData[prop]) {\n // if title is a function, we execute it here\n newData[prop] = prop === 'title' && isFunction$1(data[prop]) ? data[prop](el) : data[prop];\n }\n });\n el[BV_TOOLTIP].updateData(newData);\n }\n }; // Remove Tooltip on our element\n\n\n var removeTooltip = function removeTooltip(el) {\n if (el[BV_TOOLTIP]) {\n el[BV_TOOLTIP].$destroy();\n el[BV_TOOLTIP] = null;\n }\n\n delete el[BV_TOOLTIP];\n }; // Export our directive\n\n\n var VBTooltip = {\n bind: function bind(el, bindings, vnode) {\n applyTooltip(el, bindings, vnode);\n },\n // We use `componentUpdated` here instead of `update`, as the former\n // waits until the containing component and children have finished updating\n componentUpdated: function componentUpdated(el, bindings, vnode) {\n // Performed in a `$nextTick()` to prevent render update loops\n nextTick(function () {\n applyTooltip(el, bindings, vnode);\n });\n },\n unbind: function unbind(el) {\n removeTooltip(el);\n }\n };\n\n var VBTooltipPlugin = /*#__PURE__*/pluginFactory({\n directives: {\n VBTooltip: VBTooltip\n }\n });\n\n var TooltipPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BTooltip: BTooltip\n },\n plugins: {\n VBTooltipPlugin: VBTooltipPlugin\n }\n });\n\n var componentsPlugin = /*#__PURE__*/pluginFactory({\n plugins: {\n AlertPlugin: AlertPlugin,\n AspectPlugin: AspectPlugin,\n AvatarPlugin: AvatarPlugin,\n BadgePlugin: BadgePlugin,\n BreadcrumbPlugin: BreadcrumbPlugin,\n ButtonPlugin: ButtonPlugin,\n ButtonGroupPlugin: ButtonGroupPlugin,\n ButtonToolbarPlugin: ButtonToolbarPlugin,\n CalendarPlugin: CalendarPlugin,\n CardPlugin: CardPlugin,\n CarouselPlugin: CarouselPlugin,\n CollapsePlugin: CollapsePlugin,\n DropdownPlugin: DropdownPlugin,\n EmbedPlugin: EmbedPlugin,\n FormPlugin: FormPlugin,\n FormCheckboxPlugin: FormCheckboxPlugin,\n FormDatepickerPlugin: FormDatepickerPlugin,\n FormFilePlugin: FormFilePlugin,\n FormGroupPlugin: FormGroupPlugin,\n FormInputPlugin: FormInputPlugin,\n FormRadioPlugin: FormRadioPlugin,\n FormRatingPlugin: FormRatingPlugin,\n FormSelectPlugin: FormSelectPlugin,\n FormSpinbuttonPlugin: FormSpinbuttonPlugin,\n FormTagsPlugin: FormTagsPlugin,\n FormTextareaPlugin: FormTextareaPlugin,\n FormTimepickerPlugin: FormTimepickerPlugin,\n ImagePlugin: ImagePlugin,\n InputGroupPlugin: InputGroupPlugin,\n JumbotronPlugin: JumbotronPlugin,\n LayoutPlugin: LayoutPlugin,\n LinkPlugin: LinkPlugin,\n ListGroupPlugin: ListGroupPlugin,\n MediaPlugin: MediaPlugin,\n ModalPlugin: ModalPlugin,\n NavPlugin: NavPlugin,\n NavbarPlugin: NavbarPlugin,\n OverlayPlugin: OverlayPlugin,\n PaginationPlugin: PaginationPlugin,\n PaginationNavPlugin: PaginationNavPlugin,\n PopoverPlugin: PopoverPlugin,\n ProgressPlugin: ProgressPlugin,\n SidebarPlugin: SidebarPlugin,\n SkeletonPlugin: SkeletonPlugin,\n SpinnerPlugin: SpinnerPlugin,\n TablePlugin: TablePlugin,\n TabsPlugin: TabsPlugin,\n TimePlugin: TimePlugin,\n ToastPlugin: ToastPlugin,\n TooltipPlugin: TooltipPlugin\n }\n });\n\n var VBHoverPlugin = /*#__PURE__*/pluginFactory({\n directives: {\n VBHover: VBHover\n }\n });\n\n var VBModalPlugin = /*#__PURE__*/pluginFactory({\n directives: {\n VBModal: VBModal\n }\n });\n\n /*\n * Constants / Defaults\n */\n\n var NAME$1 = 'v-b-scrollspy';\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE = 'active';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN = '.dropdown, .dropup';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var ROOT_EVENT_NAME_ACTIVATE = getRootEventName('BVScrollspy', 'activate');\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n var Default = {\n element: 'body',\n offset: 10,\n method: 'auto',\n throttle: 75\n };\n var DefaultType = {\n element: '(string|element|component)',\n offset: 'number',\n method: 'string',\n throttle: 'number'\n }; // Transition Events\n\n var TransitionEndEvents = ['webkitTransitionEnd', 'transitionend', 'otransitionend', 'oTransitionEnd'];\n /*\n * Utility Methods\n */\n // Better var type detection\n\n var toType = function toType(obj)\n /* istanbul ignore next: not easy to test */\n {\n return toString$1(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n }; // Check config properties for expected types\n\n /* istanbul ignore next */\n\n\n var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes)\n /* istanbul ignore next: not easy to test */\n {\n for (var property in configTypes) {\n if (hasOwnProperty(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && isElement(value) ? 'element' : toType(value); // handle Vue instances\n\n valueType = value && value._isVue ? 'component' : valueType;\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n /* istanbul ignore next */\n warn(\"\".concat(componentName, \": Option \\\"\").concat(property, \"\\\" provided type \\\"\").concat(valueType, \"\\\" but expected type \\\"\").concat(expectedTypes, \"\\\"\"));\n }\n }\n }\n };\n /*\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n /* istanbul ignore next: not easy to test */\n\n\n var BVScrollspy\n /* istanbul ignore next: not easy to test */\n = /*#__PURE__*/function () {\n function BVScrollspy(element, config, $root) {\n _classCallCheck(this, BVScrollspy);\n\n // The element we activate links in\n this.$el = element;\n this.$scroller = null;\n this.$selector = [SELECTOR_NAV_LINKS, SELECTOR_LIST_ITEMS, SELECTOR_DROPDOWN_ITEMS].join(',');\n this.$offsets = [];\n this.$targets = [];\n this.$activeTarget = null;\n this.$scrollHeight = 0;\n this.$resizeTimeout = null;\n this.$scrollerObserver = null;\n this.$targetsObserver = null;\n this.$root = $root || null;\n this.$config = null;\n this.updateConfig(config);\n }\n\n _createClass(BVScrollspy, [{\n key: \"updateConfig\",\n value: function updateConfig(config, $root) {\n if (this.$scroller) {\n // Just in case out scroll element has changed\n this.unlisten();\n this.$scroller = null;\n }\n\n var cfg = _objectSpread2$3(_objectSpread2$3({}, this.constructor.Default), config);\n\n if ($root) {\n this.$root = $root;\n }\n\n typeCheckConfig(this.constructor.Name, cfg, this.constructor.DefaultType);\n this.$config = cfg;\n\n if (this.$root) {\n var self = this;\n this.$root.$nextTick(function () {\n self.listen();\n });\n } else {\n this.listen();\n }\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n this.unlisten();\n clearTimeout(this.$resizeTimeout);\n this.$resizeTimeout = null;\n this.$el = null;\n this.$config = null;\n this.$scroller = null;\n this.$selector = null;\n this.$offsets = null;\n this.$targets = null;\n this.$activeTarget = null;\n this.$scrollHeight = null;\n }\n }, {\n key: \"listen\",\n value: function listen() {\n var _this = this;\n\n var scroller = this.getScroller();\n\n if (scroller && scroller.tagName !== 'BODY') {\n eventOn(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n }\n\n eventOn(window, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n eventOn(window, 'resize', this, EVENT_OPTIONS_NO_CAPTURE);\n eventOn(window, 'orientationchange', this, EVENT_OPTIONS_NO_CAPTURE);\n TransitionEndEvents.forEach(function (eventName) {\n eventOn(window, eventName, _this, EVENT_OPTIONS_NO_CAPTURE);\n });\n this.setObservers(true); // Schedule a refresh\n\n this.handleEvent('refresh');\n }\n }, {\n key: \"unlisten\",\n value: function unlisten() {\n var _this2 = this;\n\n var scroller = this.getScroller();\n this.setObservers(false);\n\n if (scroller && scroller.tagName !== 'BODY') {\n eventOff(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n }\n\n eventOff(window, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n eventOff(window, 'resize', this, EVENT_OPTIONS_NO_CAPTURE);\n eventOff(window, 'orientationchange', this, EVENT_OPTIONS_NO_CAPTURE);\n TransitionEndEvents.forEach(function (eventName) {\n eventOff(window, eventName, _this2, EVENT_OPTIONS_NO_CAPTURE);\n });\n }\n }, {\n key: \"setObservers\",\n value: function setObservers(on) {\n var _this3 = this;\n\n // We observe both the scroller for content changes, and the target links\n this.$scrollerObserver && this.$scrollerObserver.disconnect();\n this.$targetsObserver && this.$targetsObserver.disconnect();\n this.$scrollerObserver = null;\n this.$targetsObserver = null;\n\n if (on) {\n this.$targetsObserver = observeDom(this.$el, function () {\n _this3.handleEvent('mutation');\n }, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['href']\n });\n this.$scrollerObserver = observeDom(this.getScroller(), function () {\n _this3.handleEvent('mutation');\n }, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['id', 'style', 'class']\n });\n }\n } // General event handler\n\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n var type = isString(event) ? event : event.type;\n var self = this;\n\n var resizeThrottle = function resizeThrottle() {\n if (!self.$resizeTimeout) {\n self.$resizeTimeout = setTimeout(function () {\n self.refresh();\n self.process();\n self.$resizeTimeout = null;\n }, self.$config.throttle);\n }\n };\n\n if (type === 'scroll') {\n if (!this.$scrollerObserver) {\n // Just in case we are added to the DOM before the scroll target is\n // We re-instantiate our listeners, just in case\n this.listen();\n }\n\n this.process();\n } else if (/(resize|orientationchange|mutation|refresh)/.test(type)) {\n // Postpone these events by throttle time\n resizeThrottle();\n }\n } // Refresh the list of target links on the element we are applied to\n\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this4 = this;\n\n var scroller = this.getScroller();\n\n if (!scroller) {\n return;\n }\n\n var autoMethod = scroller !== scroller.window ? METHOD_POSITION : METHOD_OFFSET;\n var method = this.$config.method === 'auto' ? autoMethod : this.$config.method;\n var methodFn = method === METHOD_POSITION ? position : offset$1;\n var offsetBase = method === METHOD_POSITION ? this.getScrollTop() : 0;\n this.$offsets = [];\n this.$targets = [];\n this.$scrollHeight = this.getScrollHeight(); // Find all the unique link HREFs that we will control\n\n selectAll(this.$selector, this.$el) // Get HREF value\n .map(function (link) {\n return getAttr(link, 'href');\n }) // Filter out HREFs that do not match our RegExp\n .filter(function (href) {\n return href && RX_HREF.test(href || '');\n }) // Find all elements with ID that match HREF hash\n .map(function (href) {\n // Convert HREF into an ID (including # at beginning)\n var id = href.replace(RX_HREF, '$1').trim();\n\n if (!id) {\n return null;\n } // Find the element with the ID specified by id\n\n\n var el = select(id, scroller);\n\n if (el && isVisible(el)) {\n return {\n offset: toInteger(methodFn(el).top, 0) + offsetBase,\n target: id\n };\n }\n\n return null;\n }).filter(identity) // Sort them by their offsets (smallest first)\n .sort(function (a, b) {\n return a.offset - b.offset;\n }) // record only unique targets/offsets\n .reduce(function (memo, item) {\n if (!memo[item.target]) {\n _this4.$offsets.push(item.offset);\n\n _this4.$targets.push(item.target);\n\n memo[item.target] = true;\n }\n\n return memo;\n }, {}); // Return this for easy chaining\n\n return this;\n } // Handle activating/clearing\n\n }, {\n key: \"process\",\n value: function process() {\n var scrollTop = this.getScrollTop() + this.$config.offset;\n var scrollHeight = this.getScrollHeight();\n var maxScroll = this.$config.offset + scrollHeight - this.getOffsetHeight();\n\n if (this.$scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this.$targets[this.$targets.length - 1];\n\n if (this.$activeTarget !== target) {\n this.activate(target);\n }\n\n return;\n }\n\n if (this.$activeTarget && scrollTop < this.$offsets[0] && this.$offsets[0] > 0) {\n this.$activeTarget = null;\n this.clear();\n return;\n }\n\n for (var i = this.$offsets.length; i--;) {\n var isActiveTarget = this.$activeTarget !== this.$targets[i] && scrollTop >= this.$offsets[i] && (isUndefined(this.$offsets[i + 1]) || scrollTop < this.$offsets[i + 1]);\n\n if (isActiveTarget) {\n this.activate(this.$targets[i]);\n }\n }\n }\n }, {\n key: \"getScroller\",\n value: function getScroller() {\n if (this.$scroller) {\n return this.$scroller;\n }\n\n var scroller = this.$config.element;\n\n if (!scroller) {\n return null;\n } else if (isElement(scroller.$el)) {\n scroller = scroller.$el;\n } else if (isString(scroller)) {\n scroller = select(scroller);\n }\n\n if (!scroller) {\n return null;\n }\n\n this.$scroller = scroller.tagName === 'BODY' ? window : scroller;\n return this.$scroller;\n }\n }, {\n key: \"getScrollTop\",\n value: function getScrollTop() {\n var scroller = this.getScroller();\n return scroller === window ? scroller.pageYOffset : scroller.scrollTop;\n }\n }, {\n key: \"getScrollHeight\",\n value: function getScrollHeight() {\n return this.getScroller().scrollHeight || mathMax(document.body.scrollHeight, document.documentElement.scrollHeight);\n }\n }, {\n key: \"getOffsetHeight\",\n value: function getOffsetHeight() {\n var scroller = this.getScroller();\n return scroller === window ? window.innerHeight : getBCR(scroller).height;\n }\n }, {\n key: \"activate\",\n value: function activate(target) {\n var _this5 = this;\n\n this.$activeTarget = target;\n this.clear(); // Grab the list of target links (<a href=\"{$target}\">)\n\n var links = selectAll(this.$selector // Split out the base selectors\n .split(',') // Map to a selector that matches links with HREF ending in the ID (including '#')\n .map(function (selector) {\n return \"\".concat(selector, \"[href$=\\\"\").concat(target, \"\\\"]\");\n }) // Join back into a single selector string\n .join(','), this.$el);\n links.forEach(function (link) {\n if (hasClass(link, CLASS_NAME_DROPDOWN_ITEM)) {\n // This is a dropdown item, so find the .dropdown-toggle and set its state\n var dropdown = closest(SELECTOR_DROPDOWN, link);\n\n if (dropdown) {\n _this5.setActiveState(select(SELECTOR_DROPDOWN_TOGGLE, dropdown), true);\n } // Also set this link's state\n\n\n _this5.setActiveState(link, true);\n } else {\n // Set triggered link as active\n _this5.setActiveState(link, true);\n\n if (matches(link.parentElement, SELECTOR_NAV_ITEMS)) {\n // Handle nav-link inside nav-item, and set nav-item active\n _this5.setActiveState(link.parentElement, true);\n } // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n\n var el = link;\n\n while (el) {\n el = closest(SELECTOR_NAV_LIST_GROUP, el);\n var sibling = el ? el.previousElementSibling : null;\n\n if (sibling && matches(sibling, \"\".concat(SELECTOR_NAV_LINKS, \", \").concat(SELECTOR_LIST_ITEMS))) {\n _this5.setActiveState(sibling, true);\n } // Handle special case where nav-link is inside a nav-item\n\n\n if (sibling && matches(sibling, SELECTOR_NAV_ITEMS)) {\n _this5.setActiveState(select(SELECTOR_NAV_LINKS, sibling), true); // Add active state to nav-item as well\n\n\n _this5.setActiveState(sibling, true);\n }\n }\n }\n }); // Signal event to via $root, passing ID of activated target and reference to array of links\n\n if (links && links.length > 0 && this.$root) {\n this.$root.$emit(ROOT_EVENT_NAME_ACTIVATE, target, links);\n }\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var _this6 = this;\n\n selectAll(\"\".concat(this.$selector, \", \").concat(SELECTOR_NAV_ITEMS), this.$el).filter(function (el) {\n return hasClass(el, CLASS_NAME_ACTIVE);\n }).forEach(function (el) {\n return _this6.setActiveState(el, false);\n });\n }\n }, {\n key: \"setActiveState\",\n value: function setActiveState(el, active) {\n if (!el) {\n return;\n }\n\n if (active) {\n addClass(el, CLASS_NAME_ACTIVE);\n } else {\n removeClass(el, CLASS_NAME_ACTIVE);\n }\n }\n }], [{\n key: \"Name\",\n get: function get() {\n return NAME$1;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return BVScrollspy;\n }();\n\n var BV_SCROLLSPY = '__BV_Scrollspy__'; // Pre-compiled regular expressions\n\n var onlyDigitsRE = /^\\d+$/;\n var offsetRE = /^(auto|position|offset)$/; // Build a Scrollspy config based on bindings (if any)\n // Arguments and modifiers take precedence over passed value config object\n\n /* istanbul ignore next: not easy to test */\n\n var parseBindings = function parseBindings(bindings)\n /* istanbul ignore next: not easy to test */\n {\n var config = {}; // If argument, assume element ID\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.element = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n keys(bindings.modifiers).forEach(function (mod) {\n if (onlyDigitsRE.test(mod)) {\n // Offset value\n config.offset = toInteger(mod, 0);\n } else if (offsetRE.test(mod)) {\n // Offset method\n config.method = mod;\n }\n }); // Process value\n\n if (isString(bindings.value)) {\n // Value is a CSS ID or selector\n config.element = bindings.value;\n } else if (isNumber(bindings.value)) {\n // Value is offset\n config.offset = mathRound(bindings.value);\n } else if (isObject(bindings.value)) {\n // Value is config object\n // Filter the object based on our supported config options\n keys(bindings.value).filter(function (k) {\n return !!BVScrollspy.DefaultType[k];\n }).forEach(function (k) {\n config[k] = bindings.value[k];\n });\n }\n\n return config;\n }; // Add or update Scrollspy on our element\n\n\n var applyScrollspy = function applyScrollspy(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (!IS_BROWSER) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings);\n\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].updateConfig(config, getEventRoot(getInstanceFromDirective(vnode, bindings)));\n } else {\n el[BV_SCROLLSPY] = new BVScrollspy(el, config, getEventRoot(getInstanceFromDirective(vnode, bindings)));\n }\n }; // Remove Scrollspy on our element\n\n /* istanbul ignore next: not easy to test */\n\n\n var removeScrollspy = function removeScrollspy(el)\n /* istanbul ignore next: not easy to test */\n {\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].dispose();\n el[BV_SCROLLSPY] = null;\n delete el[BV_SCROLLSPY];\n }\n };\n /*\n * Export our directive\n */\n\n\n var VBScrollspy = {\n /* istanbul ignore next: not easy to test */\n bind: function bind(el, bindings, vnode) {\n applyScrollspy(el, bindings, vnode);\n },\n\n /* istanbul ignore next: not easy to test */\n inserted: function inserted(el, bindings, vnode) {\n applyScrollspy(el, bindings, vnode);\n },\n\n /* istanbul ignore next: not easy to test */\n update: function update(el, bindings, vnode) {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n\n /* istanbul ignore next: not easy to test */\n componentUpdated: function componentUpdated(el, bindings, vnode) {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n\n /* istanbul ignore next: not easy to test */\n unbind: function unbind(el) {\n removeScrollspy(el);\n }\n };\n\n var VBScrollspyPlugin = /*#__PURE__*/pluginFactory({\n directives: {\n VBScrollspy: VBScrollspy\n }\n });\n\n var VBVisiblePlugin = /*#__PURE__*/pluginFactory({\n directives: {\n VBVisible: VBVisible\n }\n });\n\n var directivesPlugin = /*#__PURE__*/pluginFactory({\n plugins: {\n VBHoverPlugin: VBHoverPlugin,\n VBModalPlugin: VBModalPlugin,\n VBPopoverPlugin: VBPopoverPlugin,\n VBScrollspyPlugin: VBScrollspyPlugin,\n VBTogglePlugin: VBTogglePlugin,\n VBTooltipPlugin: VBTooltipPlugin,\n VBVisiblePlugin: VBVisiblePlugin\n }\n });\n\n var NAME = 'BootstrapVue'; // --- BootstrapVue installer ---\n\n var install = /*#__PURE__*/installFactory({\n plugins: {\n componentsPlugin: componentsPlugin,\n directivesPlugin: directivesPlugin\n }\n }); // --- BootstrapVue plugin ---\n\n var BootstrapVue = /*#__PURE__*/{\n install: install,\n NAME: NAME\n }; // --- Named exports for BvConfigPlugin ---\n\n // Main entry point for the browser build\n\n vueUse(BootstrapVue);\n\n return BootstrapVue;\n\n})));\n//# sourceMappingURL=bootstrap-vue.js.map\n"],"names":["global","factory","exports","module","require","define","amd","globalThis","self","bootstrapVue","Vue","this","Vue__default","e","_interopDefaultLegacy","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2$3","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof$1","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","value","_inherits","subClass","superClass","create","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","_construct","Parent","args","Class","a","Function","bind","_wrapNativeSuper","_cache","Map","undefined","fn","toString","indexOf","has","get","set","Wrapper","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_assertThisInitialized","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","result","Super","NewTarget","_possibleConstructorReturn","_get","property","receiver","base","hasOwnProperty","_superPropBase","desc","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","next","done","err","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray$1","_arrayLikeToArray","_arrayWithoutHoles$1","iter","from","_iterableToArray$1","_nonIterableSpread$1","minLen","n","slice","name","test","len","arr2","assign","t","r","s","kebab","styleProp","styleList","toUpperCase","c","split","l","trim","replace","style","y","concat","f","isVue3","version","startsWith","REF_FOR_KEY","ALLOWED_FIELDS_IN_DATA","extend","originalExtend","KNOWN_COMPONENTS","originalVModelDynamicCreated","vModelDynamic","created","originalVModelDynamicBeforeUpdate","beforeUpdate","el","binding","vnode","_assign","definition","render","__alreadyPatched","originalRender","h","patchedH","tag","dataObjOrChildren","rawSlots","slots","isTag","includes","attrs","normalizedData","scopedSlots","$hasNormal","functional","_ctx$children","_ctx$children$default","ctx","patchedCtx","data","IGNORED_CHILDREN_KEYS","children","default","k","on","listeners","nextTick","HAS_WINDOW_SUPPORT","window","HAS_DOCUMENT_SUPPORT","document","HAS_NAVIGATOR_SUPPORT","navigator","HAS_PROMISE_SUPPORT","Promise","HAS_MUTATION_OBSERVER_SUPPORT","MutationObserver","WebKitMutationObserver","MozMutationObserver","IS_BROWSER","WINDOW","DOCUMENT","NAVIGATOR","USER_AGENT","userAgent","toLowerCase","IS_JSDOM","checkMultipleVueWarned","MULTIPLE_VUE_WARNING","_watch$k","HAS_PASSIVE_EVENT_SUPPORT","passiveEventSupported","options","passive","addEventListener","removeEventListener","_unused","HAS_TOUCH_SUPPORT","documentElement","maxTouchPoints","HAS_POINTER_EVENT_SUPPORT","PointerEvent","MSPointerEvent","HAS_INTERACTION_OBSERVER_SUPPORT","IntersectionObserverEntry","DEFAULT_BREAKPOINT","RX_ARRAY_NOTATION","RX_BV_PREFIX","RX_DIGITS","RX_EXTENSION","RX_HASH","RX_HASH_ID","RX_HTML_TAGS","RX_HYPHENATE","RX_LOWER_UPPER","RX_NUMBER","RX_PLUS","RX_REGEXP_REPLACE","RX_SPACES","RX_SPACE_SPLIT","RX_STAR","RX_START_SPACE_WORD","RX_TRIM_LEFT","RX_UNDERSCORE","RX_UN_KEBAB","RX_DATE","RX_DATE_SPLIT","RX_TIME","RX_HREF","RX_ENCODED_COMMA","RX_ENCODE_REVERSE","RX_QUERY_START","RX_ASPECT","RX_ASPECT_SEPARATOR","RX_COL_CLASS","RX_ICON_PREFIX","RX_STRIP_LOCALE_MODS","Element","_Object","_super","HTMLElement","_Element","_super2","SVGElement","_Element2","_super3","File","_Object2","_super4","toType$1","isUndefined","isNull","isUndefinedOrNull","isFunction$1","isBoolean","isString","isNumber","isNumeric$1","String","isObject","isPlainObject","isDate","Date","isEvent","Event","isRegExp","toRawType","proto","optionalProps","defineProperty$1","prop","getOwnPropertyNames","clone","pick$1","reduce","omit","mergeDeep","sortKeys","sort","cloneDeep","defaultValue","val","identity","x","getRaw","path","join","steps","every","step","getEnv","fallback","env","process","warn","message","console","warnNotClient","warnNoPromiseSupport","BvConfig","$_config","_this","config","subConfig","some","b","checkMultipleVue","installFactory","_ref","components","directives","plugins","install","installed","setConfig","registerComponents","registerDirectives","registerPlugins","pluginFactory","plugin","use","registerComponent","def","component","registerDirective","directive","HOOK_EVENT_NAME_BEFORE_DESTROY","HOOK_EVENT_NAME_DESTROYED","ROOT_EVENT_NAME_PREFIX","EVENT_OPTIONS_PASSIVE","EVENT_OPTIONS_NO_CAPTURE","capture","PROP_TYPE_ARRAY","PROP_TYPE_BOOLEAN","PROP_TYPE_DATE","PROP_TYPE_FUNCTION","PROP_TYPE_NUMBER","Number","PROP_TYPE_OBJECT","PROP_TYPE_REG_EXP","RegExp","PROP_TYPE_STRING","PROP_TYPE_ARRAY_FUNCTION","PROP_TYPE_ARRAY_OBJECT","PROP_TYPE_ARRAY_OBJECT_STRING","PROP_TYPE_ARRAY_STRING","PROP_TYPE_BOOLEAN_NUMBER","PROP_TYPE_BOOLEAN_NUMBER_STRING","PROP_TYPE_BOOLEAN_STRING","PROP_TYPE_DATE_STRING","PROP_TYPE_FUNCTION_STRING","PROP_TYPE_NUMBER_STRING","PROP_TYPE_NUMBER_OBJECT_STRING","PROP_TYPE_OBJECT_FUNCTION","PROP_TYPE_OBJECT_STRING","arrayIncludes","array","_len","_key","createArray","fillFn","mapFn","map","flattenDeep","item","hasNormalizedSlot","names","$scopedSlots","$slots","normalizeSlot","slot","scope","normalizeSlotMixin","methods","vNodes","toInteger","NaN","integer","parseInt","isNaN","toFloat","float","parseFloat","toFixed","precision","kebabCase","str","pascalCase","_","charAt","startCase","$1","$2","upperFirst","escapeRegExp","spaces","JSON","stringify","lowerCase","ELEMENT_PROTO","TABABLE_SELECTOR","matchesEl","matches","msMatchesSelector","webkitMatchesSelector","closestEl","closest","sel","parentElement","parentNode","nodeType","Node","ELEMENT_NODE","requestAF","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","cb","setTimeout","MutationObs","isElement","getActiveElement","excludes","activeElement","isActiveElement","isVisible","contains","body","getStyle","bcr","getBCR","height","width","isDisabled","disabled","hasAttr","hasClass","reflow","offsetHeight","selectAll","selector","root","querySelectorAll","select","querySelector","includeRoot","parent","child","getById","id","getElementById","addClass","className","classList","add","removeClass","remove","setAttr","attr","setAttribute","removeAttr","removeAttribute","getAttr","getAttribute","hasAttribute","setStyle","removeStyle","getBoundingClientRect","getCS","getComputedStyle","offset$1","_offset","top","left","getClientRects","win","ownerDocument","defaultView","pageYOffset","pageXOffset","position","parentOffset","elStyles","doc","offsetParent","offsetParentStyles","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getTabables","rootEl","tabIndex","attemptFocus","focus","attemptBlur","blur","_unused2","memoize","cache","argsKey","VueProto","getConfigValue","bvConfig","getComponentConfig","propKey","getBreakpoints","_getBreakpointsCached","getBreakpointsUpCached","breakpoints","prefixPropName","prefix","unprefixPropName","suffixPropName","suffix","makeProp","type","requiredOrValidator","validator","required","copyProps","transformFn","copied","pluckProps","keysToPluck","objToPluck","memo","makePropConfigurable","componentKey","makePropsConfigurable","configurablePropDefaultFnName","hasPropFunction","makeModelMixin","_ref$type","_ref$defaultValue","_ref$validator","_ref$event","event","mixin","model","parseEventOptions","eventOn","eventName","handler","eventOff","eventOnOff","method","stopEvent","_ref$preventDefault","preventDefault","_ref$propagation","propagation","_ref$immediatePropaga","immediatePropagation","stopPropagation","stopImmediatePropagation","getBaseEventName","getRootEventName","getRootActionEventName","actionName","props$2l","ariaLabel","content","textVariant","BButtonClose","componentData","staticClass","class","click","domProps","innerHTML","NO_FADE_PROPS","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","FADE_PROPS","props$2k","appear","mode","noFade","transProps","BVTransition","appearClass","appearActiveClass","appearToClass","css","dataCopy","_makeModelMixin$k","modelMixin$j","modelProps$j","MODEL_PROP_NAME$j","MODEL_EVENT_NAME$j","parseCountDown","show","parseShow","props$2j","dismissLabel","dismissible","fade","variant","AlertPlugin","BAlert","mixins","countDown","localShow","watch","newValue","clearCountDownInterval","$emit","$_countDownTimeout","$nextTick","$_filterTimer","beforeDestroy","dismiss","clearTimeout","$alert","$dismissButton","role","mathMin","Math","min","mathMax","max","mathAbs","abs","mathCeil","ceil","mathFloor","floor","mathPow","pow","mathRound","round","props$2i","aspect","BAspect","computed","padding","ratio","_aspect$split$map2","v","$sizer","paddingBottom","$content","AspectPlugin","safeVueInstance","encodeReserveReplacer","charCodeAt","encode","encodeURIComponent","decode","decodeURIComponent","parseQuery","query","parsed","param","parts","shift","isLink$1","href","to","isRouterLink","computeHref","_ref3","toFallback","hash","results","value2","stringifyQueryObj","BASE_ATTRS","viewBox","focusable","STACKED_ATTRS","props$2h","animation","flipH","flipV","fontScale","rotate","scale","shiftH","shiftV","stacked","title","BVIconBase","_class","hasScale","hasTransforms","hasShift","hasContent","$inner","transform","fontSize","xmlns","fill","iconProps$1","makeIcon","kebabName","iconName","iconNameClass","iconTitle","svgContent","BIconBlank","BIconCalendar","BIconCalendarFill","BIconChevronBarLeft","BIconChevronDoubleLeft","BIconChevronDown","BIconChevronLeft","BIconChevronUp","BIconCircleFill","BIconClock","BIconClockFill","BIconDash","BIconPersonFill","BIconPlus","BIconStar","BIconStarFill","BIconStarHalf","BIconX","findIconComponent","$options","$parent","iconProps","props$2g","icon","BIcon","CODE_DOWN","CODE_END","CODE_ENTER","CODE_HOME","CODE_LEFT","CODE_RIGHT","CODE_SPACE","CODE_UP","compareArrays","equal","looseEqual","aValidType","bValidType","getTime","aHasKey","bHasKey","isEmpty","makePropWatcher","propName","oldValue","$delete","$data","$set","makePropCacheMixin","proxyPropName","attrsMixinVue2","attrsMixinVue3","bvAttrs","$attrs","attrsMixin","getEventRoot","vm","$root","bvEventRoot","PROP$3","listenOnRootMixin","callback","listenOffRoot","registerRootListener","unregisterRootListener","listenOnRoot","$on","listenOnRootOnce","_this2","_callback","$once","$off","emitOnRoot","_this$bvEventRoot","listenersMixinVue2","listenersMixinVue3","bvListeners","$listeners","listenersMixin","ROOT_EVENT_NAME_CLICKED","routerLinkProps","activeClass","append","exact","exactActiveClass","exactPath","exactPathActiveClass","routerTag","nuxtLinkProps","noPrefetch","prefetch","props$2f","active","rel","routerComponentName","BLink","inheritAttrs","computedTag","thisOrParent","hasRouter","$router","hasNuxt","$nuxt","computeTag","computedRel","_ref2","computeRel","computedHref","computedProps","computedAttrs","tabindex","computedListeners","onClick","_arguments","eventIsEvent","suppliedHandler","_event$currentTarget$","currentTarget","__vue__","$el","linkProps$7","props$2e","block","pill","pressed","size","squared","handleFocus","isLink","isToggle","isButton","isNonStandardTag$1","computeClass","computeLinkProps","computeAttrs","button","link","toggle","nonStandardTag","hashLink","autocomplete","BButton","keydown","keyCode","focusin","focusout","SIZES","computeSize","linkProps$6","props$2d","alt","badge","badgeLeft","badgeOffset","badgeTop","badgeVariant","buttonType","rounded","square","src","text","BAvatar","inject","getBvAvatarGroup","localSrc","bvAvatarGroup","computedSize","computedVariant","computedRounded","fontStyle","marginStyle","overlapScale","marginRight","badgeStyle","offset","FONT_SIZE_SCALE","bottom","right","onImgError","_class2","error","$badge","hasBadgeSlot","badgeText","props$2c","overlap","AvatarPlugin","BAvatarGroup","provide","paddingStyle","paddingLeft","paddingRight","linkProps$5","_watch$j","props$2b","BBadge","BadgePlugin","stripTags","htmlOrText","textContent","props$2a","ariaCurrent","html","BBreadcrumbLink","suppliedProps","props$29","BBreadcrumbItem","props$28","items","BBreadcrumb","childNodes","activeDefined","idx","BreadcrumbPlugin","ButtonPlugin","BBtn","BBtnClose","props$27","ariaRole","vertical","BButtonGroup","ButtonGroupPlugin","BBtnGroup","ITEM_SELECTOR","props$26","justify","keyNav","BButtonToolbar","mounted","getItems","focusFirst","focusPrev","index","reverse","focusNext","focusLast","onFocusin","relatedTarget","onKeydown","shiftKey","ButtonToolbarPlugin","BBtnToolbar","createDate","parseYMD","date","_date$split$map2","year","month","day","getFullYear","getMonth","getDate","formatYMD","createDateFormatter","locale","Intl","DateTimeFormat","format","datesEqual","date1","date2","firstDateOfMonth","setDate","lastDateOfMonth","setMonth","addYears","numberOfYears","setFullYear","oneMonthAgo","oneMonthAhead","oneYearAgo","oneYearAhead","oneDecadeAgo","oneDecadeAhead","constrainDate","RTL_LANGS","isLocaleRTL","locale1","locale2","props$25","idMixin","localId_","safeId","_makeModelMixin$j","modelMixin$i","modelProps$i","MODEL_PROP_NAME$i","MODEL_EVENT_NAME$i","props$24","ariaControls","dateDisabledFn","dateFormatOptions","weekday","dateInfoFn","direction","headerTag","hidden","hideHeader","initialDate","labelCalendar","labelCurrentMonth","labelHelp","labelNav","labelNextDecade","labelNextMonth","labelNextYear","labelNoDateSelected","labelPrevDecade","labelPrevMonth","labelPrevYear","labelSelected","labelToday","navButtonVariant","noHighlightToday","noKeyNav","readonly","roleDescription","selectedVariant","showDecadeNav","startWeekday","todayVariant","valueAsDate","weekdayHeaderFormat","BCalendar","selected","selectedYMD","activeYMD","getToday","gridHasFocus","isLive","valueId","widgetId","navId","gridId","gridCaptionId","gridHelpId","activeId","selectedDate","activeDate","computedMin","computedMax","computedWeekStarts","computedLocale","locales","calendar","resolvedOptions","resolveLocale","computedDateDisabledFn","computedDateInfoFn","calendarLocale","fmt","calendarYear","calendarMonth","calendarFirstDay","calendarDaysInMonth","computedTodayVariant","computedNavButtonVariant","isRTL","dir","context","selectedFormatted","formatDateString","activeFormatted","dateDisabled","rtl","dateOutOfRange","rangeFn","ymd","hour","minute","second","formatYearMonth","formatWeekdayName","formatWeekdayNameShort","formatDay","nf","NumberFormat","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","prevDecadeDisabled","prevYearDisabled","prevMonthDisabled","thisMonthDisabled","nextMonthDisabled","nextYearDisabled","nextDecadeDisabled","matrix","firstDay","daysInMonth","startIndex","getDay","currentDay","week","j","dayYMD","dayDisabled","dateInfo","label","isThisMonth","info","calendarHeadings","d","old","newYMD","oldYMD","setLive","_this3","activated","deactivated","$refs","grid","_this4","emitSelected","_this5","setGridFocusFlag","onKeydownWrapper","altKey","ctrlKey","checkDate","constrainedToday","onKeydownGrid","onClickDay","clickedDate","gotoPrevDecade","gotoPrevYear","gotoPrevMonth","gotoCurrentMonth","gotoNextMonth","gotoNextYear","gotoNextDecade","onHeaderClick","_this6","hideDecadeNav","todayYMD","highlightToday","$header","for","navScope","navProps","navPrevProps","navNextProps","$prevDecadeIcon","$prevYearIcon","$prevMonthIcon","$thisMonthIcon","$nextMonthIcon","$nextYearIcon","$nextDecadeIcon","makeNavBtn","btnDisabled","shortcut","$nav","$gridCaption","$gridWeekDays","$gridBody","$cells","dIndex","isSelected","isActive","isToday","idCell","$btn","pointerEvents","$gridHelp","$grid","ref","$slot","$widget","lang","CalendarPlugin","props$23","bgVariant","borderVariant","props$22","titleTag","BCardTitle","props$21","subTitle","subTitleTag","subTitleTextVariant","BCardSubTitle","props$20","bodyClass","overlay","BCardBody","bodyBgVariant","bodyBorderVariant","bodyTextVariant","$title","$subTitle","bodyTag","props$1$","header","headerClass","headerHtml","BCardHeader","headerBgVariant","headerBorderVariant","headerTextVariant","props$1_","footer","footerClass","footerHtml","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","BLANK_TEMPLATE","props$1Z","blank","blankColor","center","fluid","fluidGrow","sizes","srcset","thumbnail","BImg","align","color","makeBlankImgSrc","props$1Y","end","start","BCardImg","baseClass","cardImgProps","imgSrc","_watch$i","_watch$h","_watch$g","props$1X","noBody","BCard","imgLeft","imgRight","imgStart","imgEnd","imgBottom","slotScope","$imgFirst","$imgLast","$img","hasHeaderSlot","$footer","OBSERVER_PROP_NAME","VisibilityObserver","margin","once","observer","visible","doneOnce","createObserver","stop","IntersectionObserver","rootMargin","threshold","observe","entries","entry","isIntersecting","intersectionRatio","disconnect","destroy$1","bind$1","modifiers","mod","_prevModifiers","VBVisible","componentUpdated","unbind","imgProps$1","props$1W","blankHeight","blankSrc","blankWidth","BImgLazy","isShown","computedSrc","computedBlank","computedWidth","computedHeight","computedSrcset","computedSizes","updateShowProp","MODEL_EVENT_NAME_PREFIX","doShow","_modifiers","$props","props$1V","BCardImgLazy","props$1U","textTag","BCardText","props$1T","columns","deck","BCardGroup","CardPlugin","noop","observeDom","obs","mutations","changed","mutation","TEXT_NODE","addedNodes","removedNodes","childList","subtree","_makeModelMixin$i","modelMixin$h","modelProps$h","MODEL_PROP_NAME$h","MODEL_EVENT_NAME$h","DIRECTION","dirClass","overlayClass","prev","PointerType","TOUCH","PEN","TransitionEndEvents$1","WebkitTransition","MozTransition","OTransition","transition","props$1S","background","controls","imgHeight","imgWidth","indicators","interval","labelGotoSlide","labelIndicators","labelNext","labelPrev","noAnimation","noHoverPause","noTouch","noWrap","BCarousel","getBvCarousel","isSliding","transitionEndEvent","slides","isPaused","touchStartX","touchDeltaX","numSlides","setSlide","pause","doSlide","$_interval","$_animationTimeout","$_touchTimeout","$_observer","getTransitionEndEvent","updateSlides","setObserver","clearInterval","clearAnimationTimeout","clearTouchTimeout","_clearInterval","inner","attributes","attributeFilter","slide","visibilityState","setInterval","restart","isCycling","calcDirection","currentSlide","nextSlide","called","onceTransEnd","handleClick","handleSwipe","absDeltaX","touchStart","pointerType","clientX","touches","touchMove","touchEnd","idInner","$controls","makeControl","handlerWrapper","$indicators","mouseenter","mouseleave","tagName","imgProps","imgAlt","imgBlank","imgBlankColor","props$1R","caption","captionHtml","captionTag","contentTag","contentVisibleUp","textHtml","BCarouselSlide","bvCarousel","contentClasses","dragstart","$contentChildren","$child","CarouselPlugin","TRANSITION_PROPS","TRANSITION_HANDLERS","enter","scrollHeight","afterEnter","leave","afterLeave","props$1Q","BVCollapse","ROOT_ACTION_EVENT_NAME_TOGGLE$2","ROOT_ACTION_EVENT_NAME_REQUEST_STATE$2","ROOT_EVENT_NAME_ACCORDION","ROOT_EVENT_NAME_STATE$3","ROOT_EVENT_NAME_SYNC_STATE$3","_makeModelMixin$h","modelMixin$g","modelProps$g","MODEL_PROP_NAME$g","MODEL_EVENT_NAME$g","props$1P","accordion","isNav","BCollapse","transitioning","classObject","collapse","close","emitState","handleToggleEvent","handleAccordionEvent","setWindowEvents","handleResize","emitSync","updated","onEnter","onAfterEnter","onLeave","onAfterLeave","checkDisplayBlock","restore","isBlock","display","clickHandler","openedId","openAccordion","isThis","getInstanceFromDirective","bindings","BV_BASE","BV_TOGGLE_ROOT_HANDLER","BV_TOGGLE_CLICK_HANDLER","BV_TOGGLE_STATE","BV_TOGGLE_TARGETS","ROOT_ACTION_EVENT_NAME_TOGGLE$1","ROOT_EVENT_NAME_STATE$2","ROOT_EVENT_NAME_SYNC_STATE$2","ROOT_ACTION_EVENT_NAME_REQUEST_STATE$1","KEYDOWN_KEY_CODES","isNonStandardTag","removeClickListener","removeRootListeners","setToggleState","state","resetProp","handleUpdate","targets","arg","getTargets","addClickListener","VBToggle","addRootListeners","VBTogglePlugin","CollapsePlugin","isBrowser","timeoutDuration","longerTimeoutBrowsers","debounce","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","element","getParentNode","nodeName","host","getScrollParent","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","scrollingElement","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","createClass","_extends","getClientRect","offsets","rect","scrollTop","scrollLeft","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","subtract","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","filteredAreas","computedPlacement","variation","getReferenceOffsets","getOuterSizes","marginBottom","getOppositePlacement","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","check","runModifiers","ends","modifiersToRun","findIndex","cur","match","enabled","update","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","destroy","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","attachToScrollParents","scrollParents","isBody","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","isNumeric","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","toValue","index2","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Defaults","Popper","classCallCheck","jquery","Utils","PopperUtils","BvEvent","eventInit","cancelable","nativeEvent","vueTarget","componentId","defaultPrevented","clickOutMixin","listenForClickOut","clickOutElement","clickOutEventName","_clickOutHandler","beforeCreate","isClickOut","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","registry","WeakMap","_watch$f","_methods","_objectSpread2$2","_watch$e","_objectSpread2$1","_watch$d","_watch$c","_watch$b","_watch$a","_watch$9","_watch$8","_watch$7","ROOT_EVENT_NAME_SHOWN","ROOT_EVENT_NAME_HIDDEN","SELECTOR_ITEM","props$1O","boundary","dropleft","dropright","dropup","noFlip","popperOpts","dropdownMixin","getBvDropdown","getBvNavbar","visibleChangePrevented","bvNavbar","inNavbar","toggler","directionClass","boundaryClass","hideDelay","bvEvent","menu","emitEvent","focusToggler","showMenu","hideMenu","$_popper","$_hideTimeout","whileOpenListen","destroyPopper","clearHideTimeout","delete","createPopper","focusMenu","getPopperConfig","updatePopper","popperConfig","isOpen","rootCloseListener","refocus","_event","onMousedown","onEsc","onSplitClick","hideHandler","up","focusItem","props$1N","lazy","menuClass","noCaret","splitButtonType","splitClass","splitHref","splitTo","splitVariant","toggleAttrs","toggleClass","toggleTag","toggleText","BDropdown","dropdownClasses","menuClasses","toggleClasses","commonProps","$buttonChildren","buttonContentDomProps","$split","btnProps","$toggle","mousedown","$menu","linkProps$4","props$1M","linkClass","BDropdownItem","bvDropdown","closeDropdown","props$1L","buttonClass","BDropdownItemButton","props$1K","BDropdownHeader","props$1J","BDropdownDivider","props$1I","inline","novalidate","validated","BForm","props$1H","formClass","BDropdownForm","props$1G","textClass","BDropdownText","props$1F","ariaDescribedby","headerClasses","headerVariant","BDropdownGroup","headerId","ariaDescribedBy","DropdownPlugin","BDd","BDdItem","BDropdownItemBtn","BDdItemButton","BDdItemBtn","BDdHeader","BDdDivider","BDdForm","BDdText","BDdGroup","TYPES$2","props$1E","BEmbed","EmbedPlugin","props$1D","disabledField","htmlField","textField","valueField","formOptionsMixin","formOptions","normalizeOptions","normalizeOption","option","props$1C","BFormDatalist","props$1B","BFormText","props$1A","ariaLive","forceShow","tooltip","BFormInvalidFeedback","props$1z","BFormValidFeedback","props$1y","BFormRow","FormPlugin","BDatalist","BFormFeedback","looseIndexOf","props$1x","autofocus","form","formControlMixin","handleAutofocus","props$1w","plain","formCustomMixin","custom","props$1v","formSizeMixin","sizeFormClass","props$1u","formStateMixin","computedState","stateClass","computedAriaInvalid","ariaInvalid","_makeModelMixin$g","modelMixin$f","modelProps$f","MODEL_PROP_NAME$f","MODEL_EVENT_NAME$f","props$1t","ariaLabelledby","buttonVariant","formRadioCheckMixin","localChecked","isGroup","bvGroup","hasFocus","computedLocalChecked","isChecked","isRadio","isBtnMode","buttons","isPlain","isCustom","isSwitch","switches","switch","isInline","computedName","groupName","computedForm","computedButtonVariant","buttonClasses","computedLocalCheckedWatcher","checked","input","$input","change","handleChange","$button","$label","props$1s","BFormCheckbox","getBvGroup","setIndeterminate","indeterminate","_ref$target","uncheckedValue","props$1r","BFormRadio","PASS_DOWN_ATTRS","_makeModelMixin$f","modelMixin$e","modelProps$e","MODEL_PROP_NAME$e","MODEL_EVENT_NAME$e","props$1q","formRadioCheckGroupMixin","groupClasses","classes","isRadioGroup","optionComponent","$inputs","props$1p","BFormCheckboxGroup","getBvCheckGroup","FormCheckboxPlugin","BCheckbox","BCheck","BCheckboxGroup","BCheckGroup","PROP$2","updateListeners","listener","_ref$value","hasListener","handlerChanged","createListener","VBHover","props$1o","buttonOnly","formattedValue","placeholder","BVFormBtnLabelControl","isHovered","idButton","idLabel","idMenu","idWrapper","computedDir","setFocus","handleHover","hovered","invalid","btnScope","opened","$hidden","_makeModelMixin$e","modelMixin$d","modelProps$d","MODEL_PROP_NAME$d","MODEL_EVENT_NAME$d","calendarProps","formBtnLabelControlProps$1","props$1n","calendarWidth","closeButton","closeButtonVariant","dark","labelCloseButton","labelResetButton","labelTodayButton","noCloseOnSelect","resetButton","resetButtonVariant","resetValue","todayButton","todayButtonVariant","BFormDatepicker","localYMD","localLocale","calendarYM","computedLang","computedResetValue","control","setAndClose","onSelected","onInput","onContext","onTodayButton","onResetButton","onCloseButton","onShow","onShown","onHidden","defaultButtonFn","$createElement","_label","_label2","$calendar","shown","FormDatepickerPlugin","BDatepicker","_makeModelMixin$d","VALUE_EMPTY_DEPRECATED_MSG","isValidValue","modelMixin$c","modelProps$c","MODEL_PROP_NAME$c","MODEL_EVENT_NAME$c","isFile","getDataTransferItemEntry","getAsEntry","webkitGetAsEntry","getAllFileEntriesInDirectory","directoryReader","entryPromises","readDirectoryEntries","readEntries","all","isDirectory","createReader","file","$path","props$1m","accept","browseText","directory","dropPlaceholder","fileNameFormatter","multiple","noDrop","noDropPlaceholder","noTraverse","BFormFile","files","dragging","dropAllowed","computedAccept","extOrType","startMatch","endMatch","rx","computedCapture","webkitdirectory","computedFileNameFormatter","defaultFileNameFormatter","clonedFiles","flattenedFiles","fileNames","labelContent","allowed","filesTraversed","reset","$_form","$form","isFileValid","isFilesArrayValid","setFiles","setInputFiles","dataTransfer","ClipboardEvent","clipboardData","DataTransfer","handleFiles","filteredFiles","focusHandler","onChange","_event$dataTransfer","isDrop","dataTransferItemList","traverseDirectories","kind","getAllFileEntries","webkitRelativePath","onDragenter","_event$dataTransfer2","dropEffect","onDragover","_event$dataTransfer3","onDragleave","onDrop","zIndex","dragenter","dragover","dragleave","drop","FormFilePlugin","BFile","escapeChar","cssEscape","firstCharCode","char","charCode","ALIGN_SELF_VALUES","computeBreakpointClass","breakpoint","breakpointPropMap","BCol","breakpointCol","breakpointOffset","breakpointOrder","col","alignSelf","cols","_classList$push","_keys","hasColClasses","INPUTS","INPUT_SELECTOR","LEGEND_INTERACTIVE_ELEMENTS","BFormGroup","description","feedbackAriaLive","invalidFeedback","labelClass","labelFor","labelSize","labelSrOnly","validFeedback","contentColProps","getColProps","labelAlignClasses","getAlignClasses","labelColProps","isHorizontal","updateAriaDescribedby","propValue","newIds","oldIds","ids","onLegendClick","inputs","isFieldset","labelId","labelTag","$invalidFeedback","invalidFeedbackContent","invalidFeedbackId","$validFeedback","validFeedbackContent","validFeedbackId","$description","descriptionContent","descriptionId","FormGroupPlugin","BFormFieldset","formSelectionMixin","selectionStart","selectionEnd","selectionDirection","_this$$refs$input","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","_makeModelMixin$c","modelMixin$b","modelProps$b","MODEL_PROP_NAME$b","MODEL_EVENT_NAME$b","props$1l","formatter","lazyFormatter","number","plaintext","formTextMixin","localValue","vModelValue","modifyValue","computedClass","isRange","isColor","computedDebounce","hasFormatter","stringifyValue","modifiedValue","clearDebounce","$_inputDebounceTimer","formatValue","force","updateValue","doUpdate","composing","onBlur","formValidityMixin","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","TYPES$1","props$1k","list","noWheel","BFormInput","localType","setWheelStopper","onWheelFocus","onWheelBlur","stopWheel","FormInputPlugin","BInput","props$1j","BFormRadioGroup","getBvRadioGroup","FormRadioPlugin","BRadio","BRadioGroup","_makeModelMixin$b","modelMixin$a","modelProps$a","MODEL_PROP_NAME$a","MODEL_EVENT_NAME$a","computeStars","stars","clampValue","BVFormRatingStar","focused","hasClear","rating","star","minStar","props$1i","iconClear","iconEmpty","iconFull","iconHalf","noBorder","showClear","showValue","showValueMax","BFormRating","computedStars","computedRating","isInteractive","formattedRating","formatOptions","toLocaleString","amountRtl","onFocus","renderIcon","iconEmptyFn","iconHalfFn","iconFullFn","iconClearFn","$icon","empty","half","full","FormRatingPlugin","BRating","_makeModelMixin$a","props$1h","props$1g","labelField","optionsField","optionsMixin","props$1f","BFormSelectOption","props$1e","BFormSelectOptionGroup","props$1d","selectSize","BFormSelect","computedSelectSize","inputClass","selectedValue","_value","FormSelectPlugin","BSelect","BSelectOption","BSelectOptionGroup","_makeModelMixin$9","modelMixin$9","modelProps$9","MODEL_PROP_NAME$9","MODEL_EVENT_NAME$9","KEY_CODES","props$1c","formatterFn","labelDecrement","labelIncrement","repeatDelay","repeatInterval","repeatStepMultiplier","repeatThreshold","wrap","BFormSpinbutton","spinId","computedInline","computedReadonly","computedRequired","computedStep","computedDelay","delay","computedInterval","computedThreshold","computedStepMultiplier","computedPrecision","computedMultiplier","valueAsFixed","computedRTL","defaultFormatter","useGrouping","computedFormatter","computedSpinAttrs","hasValue","_disabled","clearRepeat","_readonly","$_autoDelayTimer","$_autoRepeatTimer","$_keyIsDown","spinner","emitChange","stepValue","multiplier","onFocusBlur","stepUp","stepDown","metaKey","resetTimers","handleStepRepeat","onKeyup","stepper","count","onMouseup","setMouseup","makeButton","IconCmp","keyRef","slotName","touchstart","$increment","$decrement","$spin","keyup","FormSpinbuttonPlugin","BSpinbutton","props$1b","noRemove","removeLabel","BFormTag","onRemove","tagId","tagLabelId","$remove","$tag","_makeModelMixin$8","modelMixin$8","modelProps$8","MODEL_PROP_NAME$8","MODEL_EVENT_NAME$8","TYPES","DEFAULT_INPUT_FOCUS_SELECTOR","cleanTags","tags","processEventValue","props$1a","addButtonText","addButtonVariant","addOnChange","duplicateTagText","ignoreInputFocusSelector","inputAttrs","inputId","inputType","invalidTagText","limit","limitTagsText","noAddOnEnter","noOuterFocus","noTagRemove","removeOnDelete","separator","tagClass","tagPills","tagRemoveLabel","tagRemovedLabel","tagValidator","tagVariant","BFormTags","newTag","removedTags","tagsState","valid","duplicate","focusState","computedInputId","computedInputType","computedInputAttrs","computedInputHandlers","onInputBlur","onInputChange","onInputFocus","onInputInput","onInputKeydown","computedSeparator","computedSeparatorRegExp","computedJoiner","joiner","computeIgnoreInputFocusSelector","disableAddButton","splitTags","validateTag","duplicateTags","hasDuplicateTags","invalidTags","hasInvalidTags","isLimitReached","addTag","parseTags","getInput","invalidAndDuplicates","removeTag","separatorRe","ignoreFocusSelector","onFocusout","_this7","defaultRender","inputHandlers","isDuplicate","isInvalid","$tags","duplicateFeedbackId","limitFeedbackId","outline","minWidth","invisible","tagListId","$field","$ul","$feedback","$invalid","$duplicate","$limit","$output","$removed","hasTags","FormTagsPlugin","BTags","BTag","props$19","maxRows","noAutoShrink","noResize","rows","BFormTextarea","heightInPx","resize","computedRows","computedMinRows","computedMaxRows","setHeight","visibleCallback","computeHeight","$isServer","lineHeight","border","borderBottomWidth","paddingTop","minHeight","oldHeight","contentRows","FormTextareaPlugin","BTextarea","_makeModelMixin$7","modelMixin$7","modelProps$7","MODEL_PROP_NAME$7","MODEL_EVENT_NAME$7","padLeftZeros","parseHMS","hh","mm","ss","_value$split$map2","hours","minutes","seconds","ampm","props$18","hour12","labelAm","labelAmpm","labelHours","labelMinutes","labelNoTimeSelected","labelPm","labelSeconds","minutesStep","secondsStep","showSeconds","BTime","modelHours","modelMinutes","modelSeconds","modelAmpm","computedHMS","requireSeconds","formatHMS","resolved","hourCycle","computedHourCycle","is12Hour","formatted","formattedTimeString","computedAriaLabelledby","timeFormatter","timeZone","numberFormatter","UTC","spinScopedSlots","increment","decrement","_parseHMS","newHours","oldHours","spinners","formatHours","formatMinutes","formatSeconds","formatAmpm","setHours","setMinutes","setSeconds","setAmpm","onSpinLeftRight","cmp","spinIds","makeSpinbutton","spinbuttonProps","makeColon","$spinners","$value","_makeModelMixin$6","modelMixin$6","modelProps$6","MODEL_PROP_NAME$6","MODEL_EVENT_NAME$6","timeProps","formBtnLabelControlProps","props$17","labelNowButton","noCloseButton","nowButton","nowButtonVariant","BFormTimepicker","localHMS","hms","onNowButton","now","getHours","getMinutes","getSeconds","time","$time","FormTimepickerPlugin","BTimepicker","ImagePlugin","props$16","BInputGroupText","props$15","isText","BInputGroupAddon","props$14","BInputGroupAppend","props$13","BInputGroupPrepend","props$12","appendHtml","prepend","prependHtml","BInputGroup","$prepend","hasPrependSlot","$append","hasAppendSlot","InputGroupPlugin","props$11","BContainer","container","props$10","containerFluid","headerLevel","lead","leadHtml","leadTag","BJumbotron","$lead","hasLeadSlot","$children","JumbotronPlugin","COMMON_ALIGNMENT","computeRowColsClass","computeRowColsBreakpoint","rowColsPropList","BRow","rowColsProps","alignContent","alignH","alignV","noGutters","LayoutPlugin","LinkPlugin","props$$","flush","horizontal","BListGroup","actionTags","linkProps$3","props$_","action","BListGroupItem","itemProps","ListGroupPlugin","props$Z","verticalAlign","BMediaAside","props$Y","BMediaBody","props$X","rightAlign","BMedia","$aside","MediaPlugin","PROP$1","listenOnDocumentMixin","listenOffDocument","registerDocumentListener","unregisterDocumentListener","listenDocument","listenOnDocument","PROP","listenOnWindowMixin","listenOffWindow","registerWindowListener","unregisterWindowListener","listenWindow","listenOnWindow","useParentMixin","bvParent","getScopeId","_scopeId","scopedStyleMixin","scopedStyleAttrs","scopeId","createNewChildComponent","Component","BVTransporterTarget","abstract","nodes","updatedNodes","destroyed","$nodes","props$W","BVTransporterVue2","immediate","unmountTarget","mountTarget","$_defaultFn","$_target","beforeMount","updateTarget","getContainer","$container","createElement","appendChild","propsData","defaultFn","$destroy","BVTransporterVue3","Teleport","BVTransporter","BvModalEvent","_BvEvent","trigger","modalManager","modals","baseZIndex","scrollbarWidth","isBodyOverflowing","modalCount","modalsAreOpen","newCount","oldCount","getScrollbarWidth","checkScrollbar","setScrollbar","resetScrollbar","updateModals","registerModal","modal","unregisterModal","splice","_isBeingDestroyed","_isDestroyed","resetModal","getBaseZIndex","div","isTop","_getBCR","_paddingChangedForModal","_marginChangedForModal","actualPadding","actualMargin","_makeModelMixin$5","modelMixin$5","modelProps$5","MODEL_PROP_NAME$5","MODEL_EVENT_NAME$5","BUTTONS","OBSERVER_CONFIG","characterData","props$V","autoFocusButton","busy","buttonSize","cancelDisabled","cancelTitle","cancelTitleHtml","cancelVariant","centered","contentClass","dialogClass","headerCloseContent","headerCloseLabel","headerCloseVariant","hideBackdrop","hideFooter","hideHeaderClose","ignoreEnforceFocusSelector","modalClass","noCloseOnBackdrop","noCloseOnEsc","noEnforceFocus","noStacking","okDisabled","okOnly","okTitle","okTitleHtml","okVariant","returnFocus","scrollable","static","titleClass","titleHtml","titleSrOnly","BModal","isHidden","isTransitioning","isShow","isOpening","isClosing","ignoreBackdropClick","isModalOverflowing","modalId","modalOuterId","modalHeaderId","modalBodyId","modalTitleId","modalContentId","modalFooterId","modalBackdropId","modalClasses","modalStyles","sbWidth","dialogClasses","titleClasses","bodyClasses","footerClasses","_ref4","modalOuterStyle","cancel","onCancel","onClose","ok","onOk","computeIgnoreEnforceFocusSelector","computedModalAttrs","$_returnFocus","showHandler","toggleHandler","modalListener","checkModalOverflow","updateModel","buildEvent","showEvent","hideEvent","triggerEl","onBeforeEnter","setResizeEvent","setEnforceFocus","onBeforeLeave","returnFocusTo","onDialogMousedown","onceModalMouseup","onClickOut","tabables","bottomTrap","topTrap","preventScroll","autoFocus","makeModal","$modalHeader","$closeButton","$body","$modalFooter","$cancelButton","$modalContent","$tabTrapTop","$tabTrapBottom","$modalDialog","$modal","beforeEnter","beforeLeave","$backdrop","ROOT_ACTION_EVENT_NAME_SHOW","PROPERTY","getTarget","_ref$modifiers","getTriggerElement","setRole","oldProp","VBModal","inserted","BASE_PROPS$1","defaultResolver","propsToSlots$1","msgBoxContent","filterOptions$1","BVModalPlugin","BMsgBox","extends","handleDestroy","$route","$watch","makeMsgBox","resolver","msgBox","reject","Error","bvModalEvent","$mount","asyncMsgBox","BvModal","_vm","_root","_this$_root","_this$_root2","_len2","_key2","ModalPlugin","props$U","cardHeader","justified","pills","small","tabs","BNav","linkProps$2","props$T","linkAttrs","linkClasses","BNavItem","BNavText","formProps","props$R","BNavForm","props$Q","BNavItemDropdown","toggleId","menuId","NavPlugin","BNavItemDd","BNavDropdown","BNavDd","props$P","fixed","print","sticky","toggleable","BNavbar","breakpointClass","xs","props$O","BNavbarNav","linkProps$1","_watch$6","_makePropsConfigurabl","_watch$5","_watch$4","props$N","BNavbarBrand","ROOT_EVENT_NAME_STATE$1","ROOT_EVENT_NAME_SYNC_STATE$1","props$M","BNavbarToggle","toggleState","handleStateEvent","expanded","NavbarPlugin","BNavToggle","props$L","BSpinner","POSITION_COVER","props$K","bgColor","noCenter","opacity","overlayTag","spinnerSmall","spinnerType","spinnerVariant","wrapTag","BOverlay","defaultOverlayFn","$overlay","$background","backgroundColor","backdropFilter","OverlayPlugin","_makeModelMixin$4","modelMixin$4","modelProps$4","MODEL_PROP_NAME$4","MODEL_EVENT_NAME$4","sanitizeLimit","sanitizeCurrentPage","numberOfPages","page","onSpaceKey","props$J","ellipsisClass","ellipsisText","firstClass","firstNumber","firstText","hideEllipsis","hideGotoEndButtons","labelFirstPage","labelLastPage","labelNextPage","labelPage","labelPrevPage","lastClass","lastNumber","lastText","nextClass","nextText","pageClass","prevClass","prevText","paginationMixin$1","currentPage","localNumberOfPages","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","startNumber","lastPageNumber","pageList","_this$paginationParam","pages","makePageArray","_i2","_i3","handleKeyNav","getButtons","btn","focusCurrent","_safeVueInstance","pageNumbers","_this$paginationParam2","$buttons","isActivePage","pageNumber","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","$btnContent","linkProps","makeEllipsis","isLast","makePageButton","btnContent","makePage","$firstPageBtn","$lastPageBtn","$pagination","sanitizePerPage","sanitizeTotalRows","props$I","perPage","totalRows","BPagination","pageSizeNumberOfPages","clickEvent","pageNum","PaginationPlugin","_linkProps","props$H","baseUrl","linkGen","noPageDetect","pageGen","useRouter","BPaginationNav","computedValue","setNumberOfPages","guessCurrentPage","getPageInfo","_link","makeLink","resolveLink","_link2","pathname","resolveRoute","route","guess","currentRoute","loc","location","currentLink","PaginationNavPlugin","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","TOPLEFT","TOPRIGHT","RIGHTTOP","RIGHTBOTTOM","BOTTOMLEFT","BOTTOMRIGHT","LEFTTOP","LEFTBOTTOM","OffsetMap","props$G","arrowPadding","boundaryPadding","fallbackPlacement","BVPopper","attachment","getAttachment","templateType","getOffset","popperPlacementChange","popperCreate","arrowOffset","renderTemplate","props$F","BVTooltipTemplate","customClass","interactive","templateClasses","noninteractive","templateAttributes","templateListeners","MODAL_SELECTOR","ROOT_EVENT_NAME_MODAL_HIDDEN","CONTAINER_SELECTOR","templateData","triggers","BVTooltip","activeTrigger","hover","computedId","computedTriggers","isWithActiveTrigger","computedTemplateData","newTriggers","oldTriggers","unListen","listen","handleTemplateUpdate","disable","enable","$_tip","$_hoverTimeout","$_hoverState","$_visibleInterval","$_enabled","$_noop","forceHide","setWhileOpenListeners","clearHoverTimeout","clearVisibilityInterval","destroyTemplate","getTemplate","updateData","titleUpdated","fixTitle","createTemplateAndShow","Template","$tip","getPlacementTarget","getBoundary","onTemplateShow","onTemplateShown","onTemplateHide","onTemplateHidden","handleEvent","hideTemplate","clearActiveTriggers","localPlacementTarget","removeAriaDescribedby","restoreTitle","getTemplateElement","dropdownOpen","addAriaDescribedby","prevHoverState","getTargetId","isInModal","isDropdown","setRootListener","doHide","doDisable","doEnable","setModalListener","setDropdownListener","visibleCheck","setOnTouchStartListener","_this8","_this9","currentElement","getInstanceFromElement","tip","eventTarget","_this10","_this11","props$E","BTooltip","localTitle","localContent","templateTitleContent","$_toolpop","updateContent","doOpen","doClose","getComponent","$toolpop","onHide","onDisabled","onEnabled","setTitle","setContent","BVPopoverTemplate","titleDomProps","contentDomProps","BVPopover","props$D","BPopover","BV_POPOVER","validTriggers$1","manual","htmlRE$1","noFadeRE$1","placementRE$1","boundaryRE$1","delayRE$1","delayShowRE$1","delayHideRE$1","offsetRE$2","variantRE$1","spacesRE$1","applyPopover","selectedTriggers","parseBindings$2","__bv_prev_data__","oldData","newData","VBPopoverPlugin","VBPopover","removePopover","PopoverPlugin","props$C","animated","labelHtml","showProgress","striped","BProgressBar","getBvProgress","bvProgress","progressBarClasses","computedAnimated","computedStriped","progressBarStyles","computedProgress","computedShowProgress","computedShowValue","progressBarProps","props$B","ProgressPlugin","BProgress","progressHeight","$childNodes","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","_makeModelMixin$3","modelMixin$3","modelProps$3","MODEL_PROP_NAME$3","MODEL_EVENT_NAME$3","props$A","backdrop","backdropVariant","closeLabel","noCloseOnRouteChange","noHeader","noHeaderClose","noSlide","shadow","sidebarClass","renderHeader","renderHeaderTitle","$close","renderHeaderClose","renderBody","renderFooter","renderContent","renderBackdrop","onBackdropClick","BSidebar","transitionProps","hasTitle","titleId","fullPath","$_returnFocusEl","handleToggle","handleSync","onTopTrapFocus","enforceFocus","onBottomTrapFocus","$sidebar","SidebarPlugin","props$z","BSkeleton","_props","_watch$3","_watch$2","_objectSpread2","_watch$1","props$y","BSkeletonIcon","props$x","cardImg","noAspect","BSkeletonImg","hasListenerMixin","$events","_events","props$w","BTr","getBvTableTr","getBvTableRowGroup","bvTableRowGroup","inTbody","isTbody","inThead","isThead","inTfoot","isTfoot","isDark","isStacked","isResponsive","isStickyHeader","hasStickyHeader","tableVariant","headVariant","footVariant","isRowDark","trClasses","trAttrs","props$v","bottomRowMixin","renderBottomRow","fields","computedFields","tbodyTrClass","tbodyTrAttr","parseSpan","spanValidator","props$u","colspan","rowspan","stackedHeading","stickyColumn","BTd","bvTableTr","isStackedCell","isStickyColumn","rowVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","props$t","busyMixin","localBusy","computedBusy","stopIfBusy","renderBusy","props$s","captionMixin","captionId","renderCaption","$caption","hasCaptionSlot","props$r","colgroupMixin","renderColgroup","$colgroup","props$q","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","computedItems","$empty","isFiltered","stringifyObjectValues","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","sanitizeRow","row","ignoreFields","includeFields","fieldsObj","formattedRow","field","filterByFormatted","allowedKeys","props$p","filterDebounce","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","computedFilterIncluded","computedFilterDebounce","ms","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","clearFilterTimer","deep","newCriteria","timeout","regExp","pattern","lastIndex","computedFieldsObj","normalizeFields","origFields","processField","sample","_makeModelMixin$2","modelMixin$2","modelProps$2","MODEL_PROP_NAME$2","MODEL_EVENT_NAME$2","props$o","primaryKey","itemsMixin","paginatedItems","sortedItems","_safeVueInstance2","sortBy","localSortBy","sortDesc","localSortDesc","apiUrl","getFieldFormatter","props$n","paginationMixin","localPaging","noProviderPaging","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","props$m","noProviderSorting","providerMixin","providerTriggerContext","_providerUpdate","refresh","clearSelected","_providerSetLocal","catch","SELECT_MODES","props$l","noSelectOnClick","selectMode","selectable","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","setSelectionHandlers","_selectedRows","selectRow","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","selectableRowAttrs","selectionHandler","stableSort$1","compareFn","normalizeValue","SORT_DIRECTIONS","props$k","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","sortable","sortCompareLocale","nullLast","sortNullLast","sortCompare","localeOptions","sortCompareOptions","usage","sortByFormatted","_ref$sortBy","_ref$formatter","_ref$locale","_ref$localeOptions","_ref$nullLast","aa","bb","localeCompare","defaultSortCompare","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","_field$sortKey","sortTheadThLabel","labelSorting","props$j","stackedMixin","isStackedAlways","stackedTableClasses","props$i","bordered","borderless","captionTop","noBorderCollapse","outlined","responsive","stickyHeader","tableClass","tableRendererMixin","getBvTable","isTableSimple","wrapperClasses","wrapperStyles","maxHeight","tableClasses","tableAttrs","ariaAttrs","_safeVueInstance3","renderThead","renderTbody","renderTfoot","$table","props$h","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","bvTable","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","TABLE_TAG_NAMES","filterEvent","textSelectionActive","getSelection","containsNode","props$g","BTh","props$f","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","rowHovered","tbodyRowEventStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","isRowHeader","cellTag","cellVariant","tdClass","thAttr","tdAttr","unformatted","toggleDetails","detailsShowing","rowSelected","$_bodyFieldSlotNameCache","renderTbodyRow","rowShowDetails","hasRowClickHandler","$rows","detailsId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","props$e","tbodyClass","tbodyMixin","getTbodyTrs","tbody","trs","tr","getTbodyTrIndex","onTbodyRowKeydown","onTBodyRowClicked","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTopRow","$busy","defaultSlotName","lowercaseSlotName","handlers","auxclick","contextmenu","dblclick","props$d","BTfoot","tfootClasses","tfootAttrs","props$c","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","props$b","BThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","props$a","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","hasHeadClickListener","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","slotNames","column","$srLabel","$trs","topRowMixin","props$8","BTable","props$7","BTableLite","props$6","BTableSimple","TableLitePlugin","TableSimplePlugin","TablePlugin","isPositiveNumber","props$5","showFooter","tableProps","BSkeletonTable","$th","$thTr","$td","$tdTr","$tbody","$thead","$tfoot","props$4","loading","BSkeletonWrapper","SkeletonPlugin","SpinnerPlugin","_makeModelMixin$1","modelMixin$1","modelProps$1","MODEL_PROP_NAME$1","MODEL_EVENT_NAME$1","notDisabled","tab","BVTabButton","getBvTabs","posInSet","setSize","bvTabs","_this$tab","localActive","titleItemClass","titleLinkClass","titleLinkAttributes","$link","activeNavItemClass","props$3","activeTabClass","card","navClass","navWrapperClass","noNavStyle","BTabs","currentTab","registeredTabs","localNavClass","$tab","activateTab","previousTab","nextTab","updateTabs","registerTab","unregisterTab","$t","getTabs","$tabs","getButtonForTab","updateButton","$forceUpdate","tabEvent","deactivateTab","focusButton","emitTabClick","clickTab","firstTab","currentIndex","lastTab","$activeTab","$fallbackTab","_on","controlledBy","props$2","TabsPlugin","BTab","_isTab","tabClasses","buttonId","computedNoFade","computedLazy","activate","deactivate","TimePlugin","_typeof","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","inBrowser","pick","acc","transports","sources","Wormhole","trackInstances","open","transport","passengers","_transport$order","Infinity","newTransport","freeze","$_getTransportIndex","newTransports","registerTarget","unregisterTarget","registerSource","unregisterSource","hasTarget","hasSource","hasContentFor","wormhole","_id","Portal","slim","slotProps","random","sendUpdate","clear","closer","normalizeSlots","normalizeOwnChildren","slotContent","Tag","PortalTarget","firstRender","ownTransports","newVal","oldVal","temp","newPassengers","combinePassengers","noWrapper","_id$1","portalProps","targetProps","bail","mountTo","targetSlim","targetSlotProps","targetTag","portalTarget","mountEl","_watch","VuePlugin","DefaultTransition","props$1","ariaAtomic","BToaster","doRender","dead","staticName","$toaster","$target","_makeModelMixin","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","appendToast","autoHideDelay","isStatus","noAutoHide","solid","toastClass","toaster","BToast","isMounted","isHiding","dismissStarted","resumeDismiss","toastClasses","computedDuration","computedToaster","transitionHandlers","ensureToaster","$_dismissTimer","clearDismissTimer","setHoverHandler","startDismissTimer","onPause","onUnPause","passed","onLinkClick","hiddenEvent","makeToast","$headerContent","isStatic","$toast","BASE_PROPS","propsToSlots","toastContent","filterOptions","BVToastPlugin","BVToastPop","BvToast","toast","ToastPlugin","BV_TOOLTIP","validTriggers","htmlRE","noninteractiveRE","noFadeRE","placementRE","boundaryRE","delayRE","delayShowRE","delayHideRE","offsetRE$1","variantRE","spacesRE","applyTooltip","parseBindings$1","VBTooltipPlugin","VBTooltip","removeTooltip","TooltipPlugin","componentsPlugin","VBHoverPlugin","VBModalPlugin","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN_ITEMS","ROOT_EVENT_NAME_ACTIVATE","Default","throttle","DefaultType","TransitionEndEvents","toType","toString$1","BVScrollspy","$scroller","$selector","$offsets","$targets","$activeTarget","$scrollHeight","$resizeTimeout","$scrollerObserver","$targetsObserver","$config","updateConfig","unlisten","cfg","componentName","configTypes","expectedTypes","valueType","_isVue","typeCheckConfig","Name","scroller","getScroller","setObservers","autoMethod","methodFn","offsetBase","getScrollTop","getScrollHeight","maxScroll","getOffsetHeight","links","dropdown","setActiveState","sibling","previousElementSibling","BV_SCROLLSPY","onlyDigitsRE","offsetRE","applyScrollspy","parseBindings","VBScrollspyPlugin","VBScrollspy","dispose","removeScrollspy","VBVisiblePlugin","directivesPlugin","BootstrapVue","NAME"],"mappings":"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"} |