{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/button-group/button-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/button/button.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img.js","webpack:///./node_modules/bootstrap-vue/esm/components/button-toolbar/button-toolbar.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img-lazy.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-footer.js","webpack:///./node_modules/bootstrap-vue/esm/components/button/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/button-toolbar/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/button-group/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/calendar/calendar.js","webpack:///./node_modules/bootstrap-vue/esm/components/calendar/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/button/button-close.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","NAME","props","vertical","type","Boolean","default","size","String","tag","ariaRole","BButtonGroup","extend","name","functional","render","h","_ref","data","children","class","concat","attrs","role","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","linkProps","href","to","btnProps","block","disabled","variant","pill","squared","pressed","handleFocus","evt","isLink","isToggle","isButton","isNonStandardTag","computeClass","computeLinkProps","computeAttrs","button","link","toggle","nonStandardTag","hashLink","tabindex","autocomplete","BButton","_ref2","listeners","on","keydown","keyCode","SPACE","ENTER","currentTarget","preventDefault","click","stopPropagation","fn","focusin","focusout","componentData","staticClass","cardImgProps","bind","imgSrc","required","align","noBody","BCard","_class","slots","scopedSlots","imgLeft","imgRight","imgStart","imgEnd","header","headerHtml","footer","footerHtml","textVariant","bgVariant","borderVariant","$scopedSlots","$slots","slotScope","$imgFirst","$imgLast","$img","imgBottom","$header","hasHeaderSlot","domProps","$content","$footer","hasFooterSlot","src","alt","top","bottom","start","left","end","right","height","Number","width","BCardImg","baseClass","ITEM_SELECTOR","join","BButtonToolbar","mixins","justify","keyNav","mounted","this","getItems","methods","onFocusin","$el","focusFirst","stop","onKeydown","shift","shiftKey","UP","LEFT","focusPrev","DOWN","RIGHT","focusLast","focusNext","items","index","indexOf","slice","reverse","item","tabIndex","el","normalizeSlot","title","titleTag","BCardTitle","deck","columns","BCardGroup","lazyProps","BCardImgLazy","center","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","constructor","Array","from","test","iter","Symbol","iterator","isArray","len","arr2","bodyClass","overlay","BCardBody","cardTitle","cardSubTitle","cardContent","subTitle","bodyTag","bodyBgVariant","bodyBorderVariant","bodyTextVariant","footerClass","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","ButtonPlugin","components","BBtn","BButtonClose","BBtnClose","ButtonToolbarPlugin","BBtnToolbar","ButtonGroupPlugin","BBtnGroup","PAGEUP","PAGEDOWN","HOME","END","STR_GREGORY","STR_NUMERIC","STR_2_DIGIT","STR_LONG","STR_SHORT","STR_NARROW","BCalendar","model","prop","event","Date","valueAsDate","initialDate","readonly","min","max","dateDisabledFn","Function","startWeekday","locale","direction","selectedVariant","todayVariant","noHighlightToday","dateInfoFn","hideHeader","showDecadeNav","hidden","ariaControls","roleDescription","labelPrevDecade","labelPrevYear","labelPrevMonth","labelCurrentMonth","labelNextMonth","labelNextYear","labelNextDecade","labelToday","labelSelected","labelNoDateSelected","labelCalendar","labelNav","labelHelp","dateFormatOptions","year","month","day","weekday","weekdayHeaderFormat","validator","selected","selectedYMD","activeYMD","getToday","gridHasFocus","isLive","computed","valueId","safeId","widgetId","navId","gridId","gridCaptionId","gridHelpId","activeId","selectedDate","activeDate","computedMin","computedMax","computedWeekStarts","computedLocale","calendarLocale","fmt","Intl","DateTimeFormat","calendar","resolvedOptions","replace","calendarYear","getFullYear","calendarMonth","getMonth","calendarFirstDay","calendarDaysInMonth","date","setMonth","getDate","computedVariant","computedTodayVariant","isRTL","dir","toLowerCase","context","selectedFormatted","formatDateString","activeFormatted","dateDisabled","rtl","dateOutOfRange","rangeFn","disabledFn","ymd","hour","undefined","minute","second","formatYearMonth","formatWeekdayName","formatWeekdayNameShort","formatDay","nf","NumberFormat","style","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","format","prevDecadeDisabled","prevYearDisabled","prevMonthDisabled","thisMonthDisabled","nextMonthDisabled","nextYearDisabled","nextDecadeDisabled","matrix","firstDay","daysInMonth","startIndex","getDay","weekOffset","currentDay","week","j","dayYMD","dayDisabled","dateInfo","label","isThisMonth","isDisabled","info","calendarHeadings","_this","map","d","text","watch","newVal","oldVal","old","newYMD","oldYMD","$emit","constrainDate","setLive","created","_this2","$nextTick","activated","deactivated","beforeDestroy","focus","$refs","grid","blur","_this3","emitSelected","_this4","setGridFocusFlag","onKeydownWrapper","altKey","ctrlKey","checkDate","constrainedToday","setDate","onKeydownGrid","onClickDay","clickedDate","gotoPrevDecade","gotoPrevYear","gotoPrevMonth","gotoCurrentMonth","gotoNextMonth","gotoNextYear","gotoNextDecade","onHeaderClick","_this5","hideDecadeNav","todayYMD","highlightToday","id","for","labelSelectedDate","navScope","navProps","shiftV","navPrevProps","flipH","navNextProps","$prevDecadeIcon","$prevYearIcon","$prevMonthIcon","$thisMonthIcon","$nextMonthIcon","$nextYearIcon","$nextDecadeIcon","makeNavBtn","content","handler","btnDisabled","shortcut","$nav","$gridCaption","$gridWeekDays","idx","$gridBody","$cells","dIndex","isSelected","isActive","isToday","idCell","$btn","active","pointerEvents","$gridHelp","$grid","ref","$slot","$widget","lang","bvAttrs","CalendarPlugin","CardPlugin","BCardHeader","BCardSubTitle","BCardText","headerClass","headerBgVariant","headerBorderVariant","headerTextVariant","headerTag","subTitleTag","subTitleTextVariant","textTag","ariaLabel","innerHTML"],"mappings":"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","file":"js/chunk-vendors~5ce4fade.3ca0eb76.js","sourcesContent":["function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nvar NAME = 'BButtonGroup';\nexport var props = {\n vertical: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: function _default() {\n return getComponentConfig('BButton', 'size');\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n ariaRole: {\n type: String,\n default: 'group'\n }\n}; // @vue/component\n\nexport var BButtonGroup = /*#__PURE__*/Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n class: _defineProperty({\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical\n }, \"btn-group-\".concat(props.size), props.size),\n attrs: {\n role: props.ariaRole\n }\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from 'vue-functional-data-merge';\nimport Vue from '../../utils/vue';\nimport KeyCodes from '../../utils/key-codes';\nimport { concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { addClass, isTag, removeClass } from '../../utils/dom';\nimport { isBoolean, isEvent, isFunction } from '../../utils/inspect';\nimport { omit } from '../../utils/object';\nimport { pluckProps } from '../../utils/props';\nimport { isLink as isLinkStrict } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Constants ---\n\nvar NAME = 'BButton'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nvar btnProps = {\n block: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'size');\n }\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n type: {\n type: String,\n default: 'button'\n },\n tag: {\n type: String,\n default: 'button'\n },\n pill: {\n type: Boolean,\n default: false\n },\n squared: {\n type: Boolean,\n default: false\n },\n pressed: {\n // Tri-state: `true`, `false` or `null`\n // => On, off, not a toggle\n type: Boolean,\n default: null\n }\n};\nexport var props = _objectSpread(_objectSpread({}, btnProps), linkProps); // --- Helper methods ---\n// Focus handler for toggle buttons\n// Needs class of 'focus' when focused\n\nvar handleFocus = function handleFocus(evt) {\n if (evt.type === 'focusin') {\n addClass(evt.target, 'focus');\n } else if (evt.type === 'focusout') {\n removeClass(evt.target, 'focus');\n }\n}; // Is the requested button a link?\n// If tag prop is set to `a`, we use a to get proper disabled handling\n\n\nvar isLink = function isLink(props) {\n return isLinkStrict(props) || isTag(props.tag, 'a');\n}; // Is the button to be a toggle button?\n\n\nvar isToggle = function isToggle(props) {\n return isBoolean(props.pressed);\n}; // Is the button \"really\" a button?\n\n\nvar 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\nvar isNonStandardTag = function isNonStandardTag(props) {\n return !isLink(props) && !isButton(props);\n}; // Compute required classes (non static classes)\n\n\nvar computeClass = function computeClass(props) {\n var _ref;\n\n return [\"btn-\".concat(props.variant || getComponentConfig(NAME, 'variant')), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(props.size), props.size), _defineProperty(_ref, 'btn-block', props.block), _defineProperty(_ref, 'rounded-pill', props.pill), _defineProperty(_ref, 'rounded-0', props.squared && !props.pill), _defineProperty(_ref, \"disabled\", props.disabled), _defineProperty(_ref, \"active\", props.pressed), _ref)];\n}; // Compute the link props to pass to b-link (if required)\n\n\nvar computeLinkProps = function computeLinkProps(props) {\n return isLink(props) ? pluckProps(linkProps, props) : {};\n}; // Compute the attributes for a button\n\n\nvar computeAttrs = function computeAttrs(props, data) {\n var button = isButton(props);\n var link = isLink(props);\n var toggle = isToggle(props);\n var nonStandardTag = isNonStandardTag(props);\n var hashLink = link && props.href === '#';\n var role = data.attrs && data.attrs.role ? data.attrs.role : null;\n var tabindex = data.attrs ? data.attrs.tabindex : null;\n\n if (nonStandardTag || hashLink) {\n tabindex = '0';\n }\n\n return {\n // Type only used for \"real\" buttons\n type: button && !link ? props.type : null,\n // Disabled only set on \"real\" buttons\n disabled: button ? props.disabled : null,\n // We add a role of button when the tag is not a link or button for ARIA\n // Don't bork any role provided in `data.attrs` when `isLink` or `isButton`\n // Except when link has `href` of `#`\n role: nonStandardTag || hashLink ? 'button' : role,\n // We set the `aria-disabled` state for non-standard tags\n 'aria-disabled': nonStandardTag ? String(props.disabled) : null,\n // For toggles, we need to set the pressed state for ARIA\n 'aria-pressed': toggle ? String(props.pressed) : null,\n // `autocomplete=\"off\"` is needed in toggle mode to prevent some browsers\n // from remembering the previous setting when using the back button\n autocomplete: toggle ? 'off' : null,\n // `tabindex` is used when the component is not a button\n // Links are tabbable, but don't allow disabled, while non buttons or links\n // are not tabbable, so we mimic that functionality by disabling tabbing\n // when disabled, and adding a `tabindex=\"0\"` to non buttons or non links\n tabindex: props.disabled && !button ? '-1' : tabindex\n };\n}; // --- Main component ---\n// @vue/component\n\n\nexport var BButton = /*#__PURE__*/Vue.extend({\n name: NAME,\n functional: true,\n props: props,\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(props);\n var hashLink = link && props.href === '#';\n var on = {\n keydown: function keydown(evt) {\n // When the link is a `href=\"#\"` or a non-standard tag (has `role=\"button\"`),\n // we add a keydown handlers for SPACE/ENTER\n\n /* istanbul ignore next */\n if (props.disabled || !(nonStandardTag || hashLink)) {\n return;\n }\n\n var keyCode = evt.keyCode; // Add SPACE handler for `href=\"#\"` and ENTER handler for non-standard tags\n\n if (keyCode === KeyCodes.SPACE || keyCode === KeyCodes.ENTER && nonStandardTag) {\n var target = evt.currentTarget || evt.target;\n evt.preventDefault();\n target.click();\n }\n },\n click: function click(evt) {\n /* istanbul ignore if: blink/button disabled should handle this */\n if (props.disabled && isEvent(evt)) {\n evt.stopPropagation();\n evt.preventDefault();\n } else if (toggle && listeners && listeners['update:pressed']) {\n // Send `.sync` updates to any \"pressed\" prop (if `.sync` listeners)\n // `concat()` will normalize the value to an array without\n // double wrapping an array value in an array\n concat(listeners['update:pressed']).forEach(function (fn) {\n if (isFunction(fn)) {\n fn(!props.pressed);\n }\n });\n }\n }\n };\n\n if (toggle) {\n on.focusin = handleFocus;\n on.focusout = handleFocus;\n }\n\n var componentData = {\n staticClass: 'btn',\n class: computeClass(props),\n props: computeLinkProps(props),\n attrs: computeAttrs(props, data),\n on: on\n };\n return h(link ? BLink : props.tag, mergeData(data, componentData), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from 'vue-functional-data-merge';\nimport Vue from '../../utils/vue';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { copyProps, pluckProps, prefixPropName, unprefixPropName } from '../../utils/props';\nimport cardMixin from '../../mixins/card';\nimport { BCardBody, props as bodyProps } from './card-body';\nimport { BCardHeader, props as headerProps } from './card-header';\nimport { BCardFooter, props as footerProps } from './card-footer';\nimport { BCardImg, props as imgProps } from './card-img';\nvar cardImgProps = copyProps(imgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, bodyProps), headerProps), footerProps), cardImgProps), copyProps(cardMixin.props)), {}, {\n align: {\n type: String // default: null\n\n },\n noBody: {\n type: Boolean,\n default: false\n }\n}); // @vue/component\n\nexport var BCard = /*#__PURE__*/Vue.extend({\n name: 'BCard',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var imgLeft = props.imgLeft,\n imgRight = props.imgRight,\n imgStart = props.imgStart,\n imgEnd = props.imgEnd,\n header = props.header,\n headerHtml = props.headerHtml,\n footer = props.footer,\n footerHtml = props.footerHtml,\n align = props.align,\n textVariant = props.textVariant,\n bgVariant = props.bgVariant,\n borderVariant = props.borderVariant;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $imgFirst = h();\n var $imgLast = h();\n\n if (props.imgSrc) {\n var $img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n });\n\n if (props.imgBottom) {\n $imgLast = $img;\n } else {\n $imgFirst = $img;\n }\n }\n\n var $header = h();\n var hasHeaderSlot = hasNormalizedSlot('header', $scopedSlots, $slots);\n\n if (hasHeaderSlot || header || headerHtml) {\n $header = h(BCardHeader, {\n props: pluckProps(headerProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot('header', slotScope, $scopedSlots, $slots));\n }\n\n var $content = normalizeSlot('default', slotScope, $scopedSlots, $slots); // Wrap content in when `noBody` prop set\n\n if (!props.noBody) {\n $content = h(BCardBody, {\n props: pluckProps(bodyProps, props)\n }, $content);\n }\n\n var $footer = h();\n var hasFooterSlot = hasNormalizedSlot('footer', $scopedSlots, $slots);\n\n if (hasFooterSlot || footer || footerHtml) {\n $footer = h(BCardFooter, {\n props: pluckProps(footerProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n }, normalizeSlot('footer', slotScope, $scopedSlots, $slots));\n }\n\n return h(props.tag, mergeData(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});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n src: {\n type: String,\n required: true\n },\n alt: {\n type: String // default: null\n\n },\n top: {\n type: Boolean,\n default: false\n },\n bottom: {\n type: Boolean,\n default: false\n },\n start: {\n type: Boolean,\n default: false\n },\n left: {\n // alias of 'start'\n type: Boolean,\n default: false\n },\n end: {\n type: Boolean,\n default: false\n },\n right: {\n // alias of 'end'\n type: Boolean,\n default: false\n },\n height: {\n type: [Number, String] // default: null\n\n },\n width: {\n type: [Number, String] // default: null\n\n }\n}; // @vue/component\n\nexport var BCardImg = /*#__PURE__*/Vue.extend({\n name: 'BCardImg',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n }\n\n return h('img', mergeData(data, {\n class: [baseClass],\n attrs: {\n src: props.src || null,\n alt: props.alt || null,\n height: props.height || null,\n width: props.width || null\n }\n }));\n }\n});","import Vue from '../../utils/vue';\nimport KeyCodes from '../../utils/key-codes';\nimport { attemptFocus, isVisible, selectAll } from '../../utils/dom';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nvar ITEM_SELECTOR = ['.btn:not(.disabled):not([disabled]):not(.dropdown-item)', '.form-control:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'input[type=\"checkbox\"]:not(.disabled)', 'input[type=\"radio\"]:not(.disabled)'].join(','); // @vue/component\n\nexport var BButtonToolbar = /*#__PURE__*/Vue.extend({\n name: 'BButtonToolbar',\n mixins: [normalizeSlotMixin],\n props: {\n justify: {\n type: Boolean,\n default: false\n },\n keyNav: {\n type: Boolean,\n default: false\n }\n },\n mounted: function mounted() {\n if (this.keyNav) {\n // Pre-set the tabindexes if the markup does not include tabindex=\"-1\" on the toolbar items\n this.getItems();\n }\n },\n methods: {\n onFocusin: function onFocusin(evt) {\n if (evt.target === this.$el) {\n evt.preventDefault();\n evt.stopPropagation();\n this.focusFirst(evt);\n }\n },\n stop: function stop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n },\n onKeydown: function onKeydown(evt) {\n if (!this.keyNav) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var key = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (key === KeyCodes.UP || key === KeyCodes.LEFT) {\n this.stop(evt);\n shift ? this.focusFirst(evt) : this.focusPrev(evt);\n } else if (key === KeyCodes.DOWN || key === KeyCodes.RIGHT) {\n this.stop(evt);\n shift ? this.focusLast(evt) : this.focusNext(evt);\n }\n },\n focusFirst: function focusFirst() {\n var items = this.getItems();\n attemptFocus(items[0]);\n },\n focusPrev: function focusPrev(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n\n if (index > -1) {\n items = items.slice(0, index).reverse();\n attemptFocus(items[0]);\n }\n },\n focusNext: function focusNext(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n\n if (index > -1) {\n items = items.slice(index + 1);\n attemptFocus(items[0]);\n }\n },\n focusLast: function focusLast() {\n var items = this.getItems().reverse();\n attemptFocus(items[0]);\n },\n getItems: function getItems() {\n var items = selectAll(ITEM_SELECTOR, this.$el);\n items.forEach(function (item) {\n // Ensure tabfocus is -1 on any new elements\n item.tabIndex = -1;\n });\n return items.filter(function (el) {\n return isVisible(el);\n });\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'btn-toolbar',\n class: {\n 'justify-content-between': this.justify\n },\n attrs: {\n role: 'toolbar',\n tabindex: this.keyNav ? '0' : null\n },\n on: this.keyNav ? {\n focusin: this.onFocusin,\n keydown: this.onKeydown\n } : {}\n }, [this.normalizeSlot('default')]);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { toString } from '../../utils/string';\nexport var props = {\n title: {\n type: String // default: null\n\n },\n titleTag: {\n type: String,\n default: 'h4'\n }\n}; // @vue/component\n\nexport var BCardTitle = /*#__PURE__*/Vue.extend({\n name: 'BCardTitle',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.titleTag, mergeData(data, {\n staticClass: 'card-title'\n }), children || toString(props.title));\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n },\n deck: {\n type: Boolean,\n default: false\n },\n columns: {\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nexport var BCardGroup = /*#__PURE__*/Vue.extend({\n name: 'BCardGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n class: props.deck ? 'card-deck' : props.columns ? 'card-columns' : 'card-group'\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Vue from '../../utils/vue';\nimport { omit } from '../../utils/object';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { BImgLazy, props as imgLazyProps } from '../image/img-lazy'; // Copy of `` props, and remove conflicting/non-applicable props\n// The `omit()` util creates a new object, so we can just pass the original props\n\nvar lazyProps = omit(imgLazyProps, ['left', 'right', 'center', 'block', 'rounded', 'thumbnail', 'fluid', 'fluidGrow']);\nexport var props = _objectSpread(_objectSpread({}, lazyProps), {}, {\n top: {\n type: Boolean,\n default: false\n },\n bottom: {\n type: Boolean,\n default: false\n },\n start: {\n type: Boolean,\n default: false\n },\n left: {\n // alias of 'start'\n type: Boolean,\n default: false\n },\n end: {\n type: Boolean,\n default: false\n },\n right: {\n // alias of 'end'\n type: Boolean,\n default: false\n }\n}); // @vue/component\n\nexport var BCardImgLazy = /*#__PURE__*/Vue.extend({\n name: 'BCardImgLazy',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n } // False out the left/center/right props before passing to b-img-lazy\n\n\n var lazyProps = _objectSpread(_objectSpread({}, props), {}, {\n left: false,\n right: false,\n center: false\n });\n\n return h(BImgLazy, mergeData(data, {\n class: [baseClass],\n props: lazyProps\n }));\n }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from 'vue-functional-data-merge';\nimport Vue from '../../utils/vue';\nimport { copyProps, pluckProps, prefixPropName } from '../../utils/props';\nimport cardMixin from '../../mixins/card';\nimport { BCardTitle, props as titleProps } from './card-title';\nimport { BCardSubTitle, props as subTitleProps } from './card-sub-title';\nexport var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'body'))), {}, {\n bodyClass: {\n type: [String, Object, Array] // default: null\n\n }\n}, titleProps), subTitleProps), {}, {\n overlay: {\n type: Boolean,\n default: false\n }\n}); // @vue/component\n\nexport var BCardBody = /*#__PURE__*/Vue.extend({\n name: 'BCardBody',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var cardTitle = h();\n var cardSubTitle = h();\n var cardContent = children || [h()];\n\n if (props.title) {\n cardTitle = h(BCardTitle, {\n props: pluckProps(titleProps, props)\n });\n }\n\n if (props.subTitle) {\n cardSubTitle = h(BCardSubTitle, {\n props: pluckProps(subTitleProps, props),\n class: ['mb-2']\n });\n }\n\n return h(props.bodyTag, mergeData(data, {\n staticClass: 'card-body',\n class: [(_ref2 = {\n 'card-img-overlay': props.overlay\n }, _defineProperty(_ref2, \"bg-\".concat(props.bodyBgVariant), props.bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(props.bodyBorderVariant), props.bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(props.bodyTextVariant), props.bodyTextVariant), _ref2), props.bodyClass || {}]\n }), [cardTitle, cardSubTitle].concat(_toConsumableArray(cardContent)));\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from 'vue-functional-data-merge';\nimport Vue from '../../utils/vue';\nimport { htmlOrText } from '../../utils/html';\nimport { copyProps, prefixPropName } from '../../utils/props';\nimport cardMixin from '../../mixins/card'; // --- Props ---\n\nexport var props = _objectSpread(_objectSpread({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'footer'))), {}, {\n footer: {\n type: String // default: null\n\n },\n footerHtml: {\n type: String // default: null\n\n },\n footerClass: {\n type: [String, Object, Array] // default: null\n\n }\n}); // --- Main component ---\n// @vue/component\n\nexport var BCardFooter = /*#__PURE__*/Vue.extend({\n name: 'BCardFooter',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var footerBgVariant = props.footerBgVariant,\n footerBorderVariant = props.footerBorderVariant,\n footerTextVariant = props.footerTextVariant;\n return h(props.footerTag, mergeData(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});","import { BButton } from './button';\nimport { BButtonClose } from './button-close';\nimport { pluginFactory } from '../../utils/plugins';\nvar ButtonPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BButton: BButton,\n BBtn: BButton,\n BButtonClose: BButtonClose,\n BBtnClose: BButtonClose\n }\n});\nexport { ButtonPlugin, BButton, BButtonClose };","import { BButtonToolbar } from './button-toolbar';\nimport { pluginFactory } from '../../utils/plugins';\nvar ButtonToolbarPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BButtonToolbar: BButtonToolbar,\n BBtnToolbar: BButtonToolbar\n }\n});\nexport { ButtonToolbarPlugin, BButtonToolbar };","import { BButtonGroup } from './button-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar ButtonGroupPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BButtonGroup: BButtonGroup,\n BBtnGroup: BButtonGroup\n }\n});\nexport { ButtonGroupPlugin, BButtonGroup };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Vue from '../../utils/vue';\nimport KeyCodes from '../../utils/key-codes';\nimport identity from '../../utils/identity';\nimport looseEqual from '../../utils/loose-equal';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { createDate, createDateFormatter, constrainDate as _constrainDate, datesEqual, firstDateOfMonth, formatYMD, lastDateOfMonth, oneMonthAgo, oneMonthAhead, oneYearAgo, oneYearAhead, oneDecadeAgo, oneDecadeAhead, parseYMD, resolveLocale } from '../../utils/date';\nimport { attemptBlur, attemptFocus, requestAF } from '../../utils/dom';\nimport { isArray, isFunction, isPlainObject, isString } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { mathMax } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { toString } from '../../utils/string';\nimport attrsMixin from '../../mixins/attrs';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BIconChevronLeft, BIconChevronDoubleLeft, BIconChevronBarLeft, BIconCircleFill } from '../../icons/icons'; // --- Constants ---\n\nvar NAME = 'BCalendar'; // Key Codes\n\nvar UP = KeyCodes.UP,\n DOWN = KeyCodes.DOWN,\n LEFT = KeyCodes.LEFT,\n RIGHT = KeyCodes.RIGHT,\n PAGEUP = KeyCodes.PAGEUP,\n PAGEDOWN = KeyCodes.PAGEDOWN,\n HOME = KeyCodes.HOME,\n END = KeyCodes.END,\n ENTER = KeyCodes.ENTER,\n SPACE = KeyCodes.SPACE; // Common calendar option value strings\n\nexport var STR_GREGORY = 'gregory';\nexport var STR_NUMERIC = 'numeric';\nexport var STR_2_DIGIT = '2-digit';\nexport var STR_LONG = 'long';\nexport var STR_SHORT = 'short';\nexport var STR_NARROW = 'narrow'; // --- BCalendar component ---\n// @vue/component\n\nexport var BCalendar = Vue.extend({\n name: NAME,\n // Mixin order is important!\n mixins: [attrsMixin, idMixin, normalizeSlotMixin],\n model: {\n // Even though this is the default that Vue assumes, we need\n // to add it for the docs to reflect that this is the model\n // And also for some validation libraries to work\n prop: 'value',\n event: 'input'\n },\n props: {\n value: {\n type: [String, Date] // default: null\n\n },\n valueAsDate: {\n // Always return the `v-model` value as a date object\n type: Boolean,\n default: false\n },\n initialDate: {\n // This specifies the calendar year/month/day that will be shown when\n // first opening the datepicker if no v-model value is provided\n // Default is the current date (or `min`/`max`)\n type: [String, Date] // default: null\n\n },\n disabled: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n },\n min: {\n type: [String, Date] // default: null\n\n },\n max: {\n type: [String, Date] // default: null\n\n },\n dateDisabledFn: {\n type: Function // default: null\n\n },\n startWeekday: {\n // `0` (Sunday), `1` (Monday), ... `6` (Saturday)\n // Day of week to start calendar on\n type: [Number, String],\n default: 0\n },\n locale: {\n // Locale(s) to use\n // Default is to use page/browser default setting\n type: [String, Array] // default: null\n\n },\n direction: {\n // 'ltr', 'rtl', or `null` (for auto detect)\n type: String // default: null\n\n },\n selectedVariant: {\n // Variant color to use for the selected date\n type: String,\n default: 'primary'\n },\n todayVariant: {\n // Variant color to use for today's date (defaults to `variant`)\n type: String // default: null\n\n },\n noHighlightToday: {\n // Disable highlighting today's date\n type: Boolean,\n default: false\n },\n dateInfoFn: {\n // Function to set a class of (classes) on the date cell\n // if passed a string or an array\n // TODO:\n // If the function returns an object, look for class prop for classes,\n // and other props for handling events/details/descriptions\n type: Function // default: null\n\n },\n width: {\n // Has no effect if prop `block` is set\n type: String,\n default: '270px'\n },\n block: {\n // Makes calendar the full width of its parent container\n type: Boolean,\n default: false\n },\n hideHeader: {\n // When true makes the selected date header `sr-only`\n type: Boolean,\n default: false\n },\n showDecadeNav: {\n // When `true` enables the decade navigation buttons\n type: Boolean,\n default: false\n },\n hidden: {\n // When `true`, renders a comment node, but keeps the component instance active\n // Mainly for , so that we can get the component's value and locale\n // But we might just use separate date formatters, using the resolved locale\n // (adjusted for the gregorian calendar)\n type: Boolean,\n default: false\n },\n ariaControls: {\n type: String // default: null\n\n },\n roleDescription: {\n type: String // default: null\n\n },\n // Labels for buttons and keyboard shortcuts\n labelPrevDecade: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelPrevDecade');\n }\n },\n labelPrevYear: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelPrevYear');\n }\n },\n labelPrevMonth: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelPrevMonth');\n }\n },\n labelCurrentMonth: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelCurrentMonth');\n }\n },\n labelNextMonth: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelNextMonth');\n }\n },\n labelNextYear: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelNextYear');\n }\n },\n labelNextDecade: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelNextDecade');\n }\n },\n labelToday: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelToday');\n }\n },\n labelSelected: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelSelected');\n }\n },\n labelNoDateSelected: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelNoDateSelected');\n }\n },\n labelCalendar: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelCalendar');\n }\n },\n labelNav: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelNav');\n }\n },\n labelHelp: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelHelp');\n }\n },\n dateFormatOptions: {\n // `Intl.DateTimeFormat` object\n // Note: This value is *not* to be placed in the global config\n type: Object,\n default: function _default() {\n return {\n year: STR_NUMERIC,\n month: STR_LONG,\n day: STR_NUMERIC,\n weekday: STR_LONG\n };\n }\n },\n weekdayHeaderFormat: {\n // Format of the weekday names at the top of the calendar\n // Note: This value is *not* to be placed in the global config\n type: String,\n // `short` is typically a 3 letter abbreviation,\n // `narrow` is typically a single letter\n // `long` is the full week day name\n // Although some locales may override this (i.e `ar`, etc)\n default: STR_SHORT,\n validator: function validator(value) {\n return arrayIncludes([STR_LONG, STR_SHORT, STR_NARROW], value);\n }\n }\n },\n data: function data() {\n var selected = formatYMD(this.value) || '';\n return {\n // Selected date\n selectedYMD: selected,\n // Date in calendar grid that has `tabindex` of `0`\n activeYMD: selected || formatYMD(_constrainDate(this.initialDate || this.getToday()), this.min, this.max),\n // Will be true if the calendar grid has/contains focus\n gridHasFocus: false,\n // Flag to enable the `aria-live` region(s) after mount\n // to prevent screen reader \"outbursts\" when mounting\n isLive: false\n };\n },\n computed: {\n valueId: function valueId() {\n return this.safeId();\n },\n widgetId: function widgetId() {\n return this.safeId('_calendar-wrapper_');\n },\n navId: function navId() {\n return this.safeId('_calendar-nav_');\n },\n gridId: function gridId() {\n return this.safeId('_calendar-grid_');\n },\n gridCaptionId: function gridCaptionId() {\n return this.safeId('_calendar-grid-caption_');\n },\n gridHelpId: function gridHelpId() {\n return this.safeId('_calendar-grid-help_');\n },\n activeId: function activeId() {\n return this.activeYMD ? this.safeId(\"_cell-\".concat(this.activeYMD, \"_\")) : null;\n },\n // TODO: Use computed props to convert `YYYY-MM-DD` to `Date` object\n selectedDate: function selectedDate() {\n // Selected as a `Date` object\n return parseYMD(this.selectedYMD);\n },\n activeDate: function activeDate() {\n // Active as a `Date` object\n return parseYMD(this.activeYMD);\n },\n computedMin: function computedMin() {\n return parseYMD(this.min);\n },\n computedMax: function computedMax() {\n return parseYMD(this.max);\n },\n computedWeekStarts: function computedWeekStarts() {\n // `startWeekday` is a prop (constrained to `0` through `6`)\n return mathMax(toInteger(this.startWeekday, 0), 0) % 7;\n },\n computedLocale: function computedLocale() {\n // Returns the resolved locale used by the calendar\n return resolveLocale(concat(this.locale).filter(identity), STR_GREGORY);\n },\n calendarLocale: function calendarLocale() {\n // This locale enforces the gregorian calendar (for use in formatter functions)\n // Needed because IE 11 resolves `ar-IR` as islamic-civil calendar\n // and IE 11 (and some other browsers) do not support the `calendar` option\n // And we currently only support the gregorian calendar\n var fmt = new Intl.DateTimeFormat(this.computedLocale, {\n calendar: STR_GREGORY\n });\n var calendar = fmt.resolvedOptions().calendar;\n var locale = fmt.resolvedOptions().locale;\n /* istanbul ignore if: mainly for IE 11 and a few other browsers, hard to test in JSDOM */\n\n if (calendar !== STR_GREGORY) {\n // Ensure the locale requests the gregorian calendar\n // Mainly for IE 11, and currently we can't handle non-gregorian calendars\n // TODO: Should we always return this value?\n locale = locale.replace(/-u-.+$/i, '').concat('-u-ca-gregory');\n }\n\n return locale;\n },\n calendarYear: function calendarYear() {\n return this.activeDate.getFullYear();\n },\n calendarMonth: function calendarMonth() {\n return this.activeDate.getMonth();\n },\n calendarFirstDay: function calendarFirstDay() {\n return createDate(this.calendarYear, this.calendarMonth, 1);\n },\n calendarDaysInMonth: function calendarDaysInMonth() {\n // We create a new date as to not mutate the original\n var date = createDate(this.calendarFirstDay);\n date.setMonth(date.getMonth() + 1, 0);\n return date.getDate();\n },\n computedVariant: function computedVariant() {\n return \"btn-\".concat(this.selectedVariant || 'primary');\n },\n computedTodayVariant: function computedTodayVariant() {\n return \"btn-outline-\".concat(this.todayVariant || this.selectedVariant || 'primary');\n },\n isRTL: function isRTL() {\n // `true` if the language requested is RTL\n var dir = toString(this.direction).toLowerCase();\n\n if (dir === 'rtl') {\n /* istanbul ignore next */\n return true;\n } else if (dir === 'ltr') {\n /* istanbul ignore next */\n return false;\n }\n\n return isLocaleRTL(this.computedLocale);\n },\n context: function context() {\n var selectedYMD = this.selectedYMD;\n var selectedDate = parseYMD(selectedYMD);\n var activeYMD = this.activeYMD;\n var activeDate = parseYMD(activeYMD);\n return {\n // The current value of the `v-model`\n selectedYMD: selectedYMD,\n selectedDate: selectedDate,\n selectedFormatted: selectedDate ? this.formatDateString(selectedDate) : this.labelNoDateSelected,\n // Which date cell is considered active due to navigation\n activeYMD: activeYMD,\n activeDate: activeDate,\n activeFormatted: activeDate ? this.formatDateString(activeDate) : '',\n // `true` if the date is disabled (when using keyboard navigation)\n disabled: this.dateDisabled(activeDate),\n // Locales used in formatting dates\n locale: this.computedLocale,\n calendarLocale: this.calendarLocale,\n rtl: this.isRTL\n };\n },\n // Computed props that return a function reference\n dateOutOfRange: function dateOutOfRange() {\n // Check whether a date is within the min/max range\n // returns a new function ref if the pops change\n // We do this as we need to trigger the calendar computed prop\n // to update when these props update\n var min = this.computedMin;\n var max = this.computedMax;\n return function (date) {\n // Handle both `YYYY-MM-DD` and `Date` objects\n date = parseYMD(date);\n return min && date < min || max && date > max;\n };\n },\n dateDisabled: function dateDisabled() {\n // Returns a function for validating if a date is within range\n // We grab this variables first to ensure a new function ref\n // is generated when the props value changes\n // We do this as we need to trigger the calendar computed prop\n // to update when these props update\n var rangeFn = this.dateOutOfRange;\n var disabledFn = isFunction(this.dateDisabledFn) ? this.dateDisabledFn : function () {\n return false;\n }; // Return the function ref\n\n return function (date) {\n // Handle both `YYYY-MM-DD` and `Date` objects\n date = parseYMD(date);\n var ymd = formatYMD(date);\n return !!(rangeFn(date) || disabledFn(ymd, date));\n };\n },\n // Computed props that return date formatter functions\n formatDateString: function formatDateString() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, _objectSpread(_objectSpread({\n // Ensure we have year, month, day shown for screen readers/ARIA\n // If users really want to leave one of these out, they can\n // pass `undefined` for the property value\n year: STR_NUMERIC,\n month: STR_2_DIGIT,\n day: STR_2_DIGIT\n }, this.dateFormatOptions), {}, {\n // Ensure hours/minutes/seconds are not shown\n // As we do not support the time portion (yet)\n hour: undefined,\n minute: undefined,\n second: undefined,\n // Ensure calendar is gregorian\n calendar: STR_GREGORY\n }));\n },\n formatYearMonth: function formatYearMonth() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, {\n year: STR_NUMERIC,\n month: STR_LONG,\n calendar: STR_GREGORY\n });\n },\n formatWeekdayName: function formatWeekdayName() {\n // Long weekday name for weekday header aria-label\n return createDateFormatter(this.calendarLocale, {\n weekday: STR_LONG,\n calendar: STR_GREGORY\n });\n },\n formatWeekdayNameShort: function formatWeekdayNameShort() {\n // Weekday header cell format\n // defaults to 'short' 3 letter days, where possible\n return createDateFormatter(this.calendarLocale, {\n weekday: this.weekdayHeaderFormat || STR_SHORT,\n calendar: STR_GREGORY\n });\n },\n formatDay: function formatDay() {\n // Calendar grid day number formatter\n // We don't use DateTimeFormatter here as it can place extra\n // character(s) after the number (i.e the `zh` locale)\n var nf = new Intl.NumberFormat([this.computedLocale], {\n style: 'decimal',\n minimumIntegerDigits: 1,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n notation: 'standard'\n }); // Return a formatter function instance\n\n return function (date) {\n return nf.format(date.getDate());\n };\n },\n // Disabled states for the nav buttons\n prevDecadeDisabled: function prevDecadeDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneDecadeAgo(this.activeDate)) < min;\n },\n prevYearDisabled: function prevYearDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneYearAgo(this.activeDate)) < min;\n },\n prevMonthDisabled: function prevMonthDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneMonthAgo(this.activeDate)) < min;\n },\n thisMonthDisabled: function thisMonthDisabled() {\n // TODO: We could/should check if today is out of range\n return this.disabled;\n },\n nextMonthDisabled: function nextMonthDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneMonthAhead(this.activeDate)) > max;\n },\n nextYearDisabled: function nextYearDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneYearAhead(this.activeDate)) > max;\n },\n nextDecadeDisabled: function nextDecadeDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneDecadeAhead(this.activeDate)) > max;\n },\n // Calendar dates generation\n calendar: function calendar() {\n var matrix = [];\n var firstDay = this.calendarFirstDay;\n var calendarYear = firstDay.getFullYear();\n var calendarMonth = firstDay.getMonth();\n var daysInMonth = this.calendarDaysInMonth;\n var startIndex = firstDay.getDay(); // `0`..`6`\n\n var weekOffset = (this.computedWeekStarts > startIndex ? 7 : 0) - this.computedWeekStarts; // TODO: Change `dateInfoFn` to handle events and notes as well as classes\n\n var dateInfoFn = isFunction(this.dateInfoFn) ? this.dateInfoFn : function () {\n return {};\n }; // Build the calendar matrix\n\n var currentDay = 0 - weekOffset - startIndex;\n\n for (var week = 0; week < 6 && currentDay < daysInMonth; week++) {\n // For each week\n matrix[week] = []; // The following could be a map function\n\n for (var j = 0; j < 7; j++) {\n // For each day in week\n currentDay++;\n var date = createDate(calendarYear, calendarMonth, currentDay);\n var month = date.getMonth();\n var dayYMD = formatYMD(date);\n var dayDisabled = this.dateDisabled(date); // TODO: This could be a normalizer method\n\n var dateInfo = dateInfoFn(dayYMD, parseYMD(dayYMD));\n dateInfo = isString(dateInfo) || isArray(dateInfo) ?\n /* istanbul ignore next */\n {\n class: dateInfo\n } : isPlainObject(dateInfo) ? _objectSpread({\n class: ''\n }, dateInfo) :\n /* istanbul ignore next */\n {\n class: ''\n };\n matrix[week].push({\n ymd: dayYMD,\n // Cell content\n day: this.formatDay(date),\n label: this.formatDateString(date),\n // Flags for styling\n isThisMonth: month === calendarMonth,\n isDisabled: dayDisabled,\n // TODO: Handle other dateInfo properties such as notes/events\n info: dateInfo\n });\n }\n }\n\n return matrix;\n },\n calendarHeadings: function calendarHeadings() {\n var _this = this;\n\n return this.calendar[0].map(function (d) {\n return {\n text: _this.formatWeekdayNameShort(parseYMD(d.ymd)),\n label: _this.formatWeekdayName(parseYMD(d.ymd))\n };\n });\n }\n },\n watch: {\n value: function value(newVal, oldVal) {\n var selected = formatYMD(newVal) || '';\n var old = formatYMD(oldVal) || '';\n\n if (!datesEqual(selected, old)) {\n this.activeYMD = selected || this.activeYMD;\n this.selectedYMD = selected;\n }\n },\n selectedYMD: function selectedYMD(newYMD, oldYMD) {\n // TODO:\n // Should we compare to `formatYMD(this.value)` and emit\n // only if they are different?\n if (newYMD !== oldYMD) {\n this.$emit('input', this.valueAsDate ? parseYMD(newYMD) || null : newYMD || '');\n }\n },\n context: function context(newVal, oldVal) {\n if (!looseEqual(newVal, oldVal)) {\n this.$emit('context', newVal);\n }\n },\n hidden: function hidden(newVal) {\n // Reset the active focused day when hidden\n this.activeYMD = this.selectedYMD || formatYMD(this.value || this.constrainDate(this.initialDate || this.getToday())); // Enable/disable the live regions\n\n this.setLive(!newVal);\n }\n },\n created: function created() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.$emit('context', _this2.context);\n });\n },\n mounted: function mounted() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n activated: function activated()\n /* istanbul ignore next */\n {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n this.setLive(false);\n },\n beforeDestroy: function beforeDestroy() {\n this.setLive(false);\n },\n methods: {\n // Public method(s)\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.grid);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.grid);\n }\n },\n // Private methods\n setLive: function setLive(on) {\n var _this3 = this;\n\n if (on) {\n this.$nextTick(function () {\n requestAF(function () {\n _this3.isLive = true;\n });\n });\n } else {\n this.isLive = false;\n }\n },\n getToday: function getToday() {\n return parseYMD(createDate());\n },\n constrainDate: function constrainDate(date) {\n // Constrains a date between min and max\n // returns a new `Date` object instance\n return _constrainDate(date, this.computedMin, this.computedMax);\n },\n emitSelected: function emitSelected(date) {\n var _this4 = this;\n\n // Performed in a `$nextTick()` to (probably) ensure\n // the input event has emitted first\n this.$nextTick(function () {\n _this4.$emit('selected', formatYMD(date) || '', parseYMD(date) || null);\n });\n },\n // Event handlers\n setGridFocusFlag: function setGridFocusFlag(evt) {\n // Sets the gridHasFocus flag to make date \"button\" look focused\n this.gridHasFocus = !this.disabled && evt.type === 'focus';\n },\n onKeydownWrapper: function onKeydownWrapper(evt) {\n // Calendar keyboard navigation\n // Handles PAGEUP/PAGEDOWN/END/HOME/LEFT/UP/RIGHT/DOWN\n // Focuses grid after updating\n var altKey = evt.altKey,\n ctrlKey = evt.ctrlKey,\n keyCode = evt.keyCode;\n\n if (!arrayIncludes([PAGEUP, PAGEDOWN, END, HOME, LEFT, UP, RIGHT, DOWN], keyCode)) {\n /* istanbul ignore next */\n return;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n var activeDate = createDate(this.activeDate);\n var checkDate = createDate(this.activeDate);\n var day = activeDate.getDate();\n var constrainedToday = this.constrainDate(this.getToday());\n var isRTL = this.isRTL;\n\n if (keyCode === PAGEUP) {\n // PAGEUP - Previous month/year\n activeDate = (altKey ? ctrlKey ? oneDecadeAgo : oneYearAgo : oneMonthAgo)(activeDate); // We check the first day of month to be in rage\n\n checkDate = createDate(activeDate);\n checkDate.setDate(1);\n } else if (keyCode === PAGEDOWN) {\n // PAGEDOWN - Next month/year\n activeDate = (altKey ? ctrlKey ? oneDecadeAhead : oneYearAhead : oneMonthAhead)(activeDate); // We check the last day of month to be in rage\n\n checkDate = createDate(activeDate);\n checkDate.setMonth(checkDate.getMonth() + 1);\n checkDate.setDate(0);\n } else if (keyCode === LEFT) {\n // LEFT - Previous day (or next day for RTL)\n activeDate.setDate(day + (isRTL ? 1 : -1));\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === RIGHT) {\n // RIGHT - Next day (or previous day for RTL)\n activeDate.setDate(day + (isRTL ? -1 : 1));\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === UP) {\n // UP - Previous week\n activeDate.setDate(day - 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === DOWN) {\n // DOWN - Next week\n activeDate.setDate(day + 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === HOME) {\n // HOME - Today\n activeDate = constrainedToday;\n checkDate = activeDate;\n } else if (keyCode === END) {\n // END - Selected date, or today if no selected date\n activeDate = parseYMD(this.selectedDate) || constrainedToday;\n checkDate = activeDate;\n }\n\n if (!this.dateOutOfRange(checkDate) && !datesEqual(activeDate, this.activeDate)) {\n // We only jump to date if within min/max\n // We don't check for individual disabled dates though (via user function)\n this.activeYMD = formatYMD(activeDate);\n } // Ensure grid is focused\n\n\n this.focus();\n },\n onKeydownGrid: function onKeydownGrid(evt) {\n // Pressing enter/space on grid to select active date\n var keyCode = evt.keyCode;\n var activeDate = this.activeDate;\n\n if (keyCode === ENTER || keyCode === SPACE) {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (!this.disabled && !this.readonly && !this.dateDisabled(activeDate)) {\n this.selectedYMD = formatYMD(activeDate);\n this.emitSelected(activeDate);\n } // Ensure grid is focused\n\n\n this.focus();\n }\n },\n onClickDay: function onClickDay(day) {\n // Clicking on a date \"button\" to select it\n var selectedDate = this.selectedDate;\n var activeDate = this.activeDate;\n var clickedDate = parseYMD(day.ymd);\n\n if (!this.disabled && !day.isDisabled && !this.dateDisabled(clickedDate)) {\n if (!this.readonly) {\n // If readonly mode, we don't set the selected date, just the active date\n // If the clicked date is equal to the already selected date, we don't update the model\n this.selectedYMD = formatYMD(datesEqual(clickedDate, selectedDate) ? selectedDate : clickedDate);\n this.emitSelected(clickedDate);\n }\n\n this.activeYMD = formatYMD(datesEqual(clickedDate, activeDate) ? activeDate : createDate(clickedDate)); // Ensure grid is focused\n\n this.focus();\n }\n },\n gotoPrevDecade: function gotoPrevDecade() {\n this.activeYMD = formatYMD(this.constrainDate(oneDecadeAgo(this.activeDate)));\n },\n gotoPrevYear: function gotoPrevYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAgo(this.activeDate)));\n },\n gotoPrevMonth: function gotoPrevMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAgo(this.activeDate)));\n },\n gotoCurrentMonth: function gotoCurrentMonth() {\n // TODO: Maybe this goto date should be configurable?\n this.activeYMD = formatYMD(this.constrainDate(this.getToday()));\n },\n gotoNextMonth: function gotoNextMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAhead(this.activeDate)));\n },\n gotoNextYear: function gotoNextYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAhead(this.activeDate)));\n },\n gotoNextDecade: function gotoNextDecade() {\n this.activeYMD = formatYMD(this.constrainDate(oneDecadeAhead(this.activeDate)));\n },\n onHeaderClick: function onHeaderClick() {\n if (!this.disabled) {\n this.activeYMD = this.selectedYMD || formatYMD(this.getToday());\n this.focus();\n }\n }\n },\n render: function render(h) {\n var _this5 = this;\n\n // If `hidden` prop is set, render just a placeholder node\n if (this.hidden) {\n return h();\n }\n\n var valueId = this.valueId,\n widgetId = this.widgetId,\n navId = this.navId,\n gridId = this.gridId,\n gridCaptionId = this.gridCaptionId,\n gridHelpId = this.gridHelpId,\n activeId = this.activeId,\n isLive = this.isLive,\n isRTL = this.isRTL,\n activeYMD = this.activeYMD,\n selectedYMD = this.selectedYMD,\n safeId = this.safeId;\n var hideDecadeNav = !this.showDecadeNav;\n var todayYMD = formatYMD(this.getToday());\n var highlightToday = !this.noHighlightToday; // Header showing current selected date\n\n var $header = h('output', {\n staticClass: 'form-control form-control-sm text-center',\n class: {\n 'text-muted': this.disabled,\n readonly: this.readonly || this.disabled\n },\n attrs: {\n id: valueId,\n for: gridId,\n role: 'status',\n tabindex: this.disabled ? null : '-1',\n // Mainly for testing purposes, as we do not know\n // the exact format `Intl` will format the date string\n 'data-selected': toString(selectedYMD),\n // We wait until after mount to enable `aria-live`\n // to prevent initial announcement on page render\n 'aria-live': isLive ? 'polite' : 'off',\n 'aria-atomic': isLive ? 'true' : null\n },\n on: {\n // Transfer focus/click to focus grid\n // and focus active date (or today if no selection)\n click: this.onHeaderClick,\n focus: this.onHeaderClick\n }\n }, this.selectedDate ? [// We use `bdi` elements here in case the label doesn't match the locale\n // Although IE 11 does not deal with at all (equivalent to a span)\n h('bdi', {\n staticClass: 'sr-only'\n }, \" (\".concat(toString(this.labelSelected), \") \")), h('bdi', this.formatDateString(this.selectedDate))] : this.labelNoDateSelected || \"\\xA0\" // ' '\n );\n $header = h('header', {\n staticClass: 'b-calendar-header',\n class: {\n 'sr-only': this.hideHeader\n },\n attrs: {\n title: this.selectedDate ? this.labelSelectedDate || null : null\n }\n }, [$header]); // Content for the date navigation buttons\n\n var navScope = {\n isRTL: isRTL\n };\n var navProps = {\n shiftV: 0.5\n };\n\n var navPrevProps = _objectSpread(_objectSpread({}, navProps), {}, {\n flipH: isRTL\n });\n\n var navNextProps = _objectSpread(_objectSpread({}, navProps), {}, {\n flipH: !isRTL\n });\n\n var $prevDecadeIcon = this.normalizeSlot('nav-prev-decade', navScope) || h(BIconChevronBarLeft, {\n props: navPrevProps\n });\n var $prevYearIcon = this.normalizeSlot('nav-prev-year', navScope) || h(BIconChevronDoubleLeft, {\n props: navPrevProps\n });\n var $prevMonthIcon = this.normalizeSlot('nav-prev-month', navScope) || h(BIconChevronLeft, {\n props: navPrevProps\n });\n var $thisMonthIcon = this.normalizeSlot('nav-this-month', navScope) || h(BIconCircleFill, {\n props: navProps\n });\n var $nextMonthIcon = this.normalizeSlot('nav-next-month', navScope) || h(BIconChevronLeft, {\n props: navNextProps\n });\n var $nextYearIcon = this.normalizeSlot('nav-next-year', navScope) || h(BIconChevronDoubleLeft, {\n props: navNextProps\n });\n var $nextDecadeIcon = this.normalizeSlot('nav-next-decade', navScope) || h(BIconChevronBarLeft, {\n props: navNextProps\n }); // Utility to create the date navigation buttons\n\n var makeNavBtn = function makeNavBtn(content, label, handler, btnDisabled, shortcut) {\n return h('button', {\n staticClass: 'btn btn-sm btn-outline-secondary border-0 flex-fill',\n class: {\n disabled: btnDisabled\n },\n attrs: {\n title: label || null,\n type: 'button',\n 'aria-label': label || null,\n 'aria-disabled': btnDisabled ? 'true' : null,\n 'aria-keyshortcuts': shortcut || null\n },\n on: btnDisabled ? {} : {\n click: handler\n }\n }, [h('div', {\n attrs: {\n 'aria-hidden': 'true'\n }\n }, [content])]);\n }; // Generate the date navigation buttons\n\n\n var $nav = h('div', {\n staticClass: 'b-calendar-nav d-flex',\n attrs: {\n id: navId,\n role: 'group',\n 'aria-hidden': this.disabled ? 'true' : null,\n 'aria-label': this.labelNav || null,\n 'aria-controls': gridId\n }\n }, [hideDecadeNav ? h() : makeNavBtn($prevDecadeIcon, this.labelPrevDecade, this.gotoPrevDecade, this.prevDecadeDisabled, 'Ctrl+Alt+PageDown'), makeNavBtn($prevYearIcon, this.labelPrevYear, this.gotoPrevYear, this.prevYearDisabled, 'Alt+PageDown'), makeNavBtn($prevMonthIcon, this.labelPrevMonth, this.gotoPrevMonth, this.prevMonthDisabled, 'PageDown'), makeNavBtn($thisMonthIcon, this.labelCurrentMonth, this.gotoCurrentMonth, this.thisMonthDisabled, 'Home'), makeNavBtn($nextMonthIcon, this.labelNextMonth, this.gotoNextMonth, this.nextMonthDisabled, 'PageUp'), makeNavBtn($nextYearIcon, this.labelNextYear, this.gotoNextYear, this.nextYearDisabled, 'Alt+PageUp'), hideDecadeNav ? h() : makeNavBtn($nextDecadeIcon, this.labelNextDecade, this.gotoNextDecade, this.nextDecadeDisabled, 'Ctrl+Alt+PageUp')]); // Caption for calendar grid\n\n var $gridCaption = h('header', {\n key: 'grid-caption',\n staticClass: 'b-calendar-grid-caption text-center font-weight-bold',\n class: {\n 'text-muted': this.disabled\n },\n attrs: {\n id: gridCaptionId,\n 'aria-live': isLive ? 'polite' : null,\n 'aria-atomic': isLive ? 'true' : null\n }\n }, this.formatYearMonth(this.calendarFirstDay)); // Calendar weekday headings\n\n var $gridWeekDays = h('div', {\n staticClass: 'b-calendar-grid-weekdays row no-gutters border-bottom',\n attrs: {\n 'aria-hidden': 'true'\n }\n }, this.calendarHeadings.map(function (d, idx) {\n return h('small', {\n key: idx,\n staticClass: 'col text-truncate',\n class: {\n 'text-muted': _this5.disabled\n },\n attrs: {\n title: d.label === d.text ? null : d.label,\n 'aria-label': d.label\n }\n }, d.text);\n })); // Calendar day grid\n\n var $gridBody = this.calendar.map(function (week) {\n var $cells = week.map(function (day, dIndex) {\n var _class;\n\n var isSelected = day.ymd === selectedYMD;\n var isActive = day.ymd === activeYMD;\n var isToday = day.ymd === todayYMD;\n var idCell = safeId(\"_cell-\".concat(day.ymd, \"_\")); // \"fake\" button\n\n var $btn = h('span', {\n staticClass: 'btn border-0 rounded-circle text-nowrap',\n // Should we add some classes to signify if today/selected/etc?\n class: (_class = {\n // Give the fake button a focus ring\n focus: isActive && _this5.gridHasFocus,\n // Styling\n disabled: day.isDisabled || _this5.disabled,\n active: isSelected\n }, _defineProperty(_class, _this5.computedVariant, isSelected), _defineProperty(_class, _this5.computedTodayVariant, isToday && highlightToday && !isSelected && day.isThisMonth), _defineProperty(_class, 'btn-outline-light', !(isToday && highlightToday) && !isSelected && !isActive), _defineProperty(_class, 'btn-light', !(isToday && highlightToday) && !isSelected && isActive), _defineProperty(_class, 'text-muted', !day.isThisMonth && !isSelected), _defineProperty(_class, 'text-dark', !(isToday && highlightToday) && !isSelected && !isActive && day.isThisMonth), _defineProperty(_class, 'font-weight-bold', (isSelected || day.isThisMonth) && !day.isDisabled), _class),\n on: {\n click: function click() {\n return _this5.onClickDay(day);\n }\n }\n }, day.day);\n return h('div', // Cell with button\n {\n key: dIndex,\n staticClass: 'col p-0',\n class: day.isDisabled ? 'bg-light' : day.info.class || '',\n attrs: {\n id: idCell,\n role: 'button',\n 'data-date': day.ymd,\n // Primarily for testing purposes\n // Only days in the month are presented as buttons to screen readers\n 'aria-hidden': day.isThisMonth ? null : 'true',\n 'aria-disabled': day.isDisabled || _this5.disabled ? 'true' : null,\n 'aria-label': [day.label, isSelected ? \"(\".concat(_this5.labelSelected, \")\") : null, isToday ? \"(\".concat(_this5.labelToday, \")\") : null].filter(identity).join(' '),\n // NVDA doesn't convey `aria-selected`, but does `aria-current`,\n // ChromeVox doesn't convey `aria-current`, but does `aria-selected`,\n // so we set both attributes for robustness\n 'aria-selected': isSelected ? 'true' : null,\n 'aria-current': isSelected ? 'date' : null\n }\n }, [$btn]);\n }); // Return the week \"row\"\n // We use the first day of the weeks YMD value as a\n // key for efficient DOM patching / element re-use\n\n return h('div', {\n key: week[0].ymd,\n staticClass: 'row no-gutters'\n }, $cells);\n });\n $gridBody = h('div', {\n // A key is only required on the body if we add in transition support\n // key: this.activeYMD.slice(0, -3),\n staticClass: 'b-calendar-grid-body',\n style: this.disabled ? {\n pointerEvents: 'none'\n } : {}\n }, $gridBody);\n var $gridHelp = h('footer', {\n staticClass: 'b-calendar-grid-help border-top small text-muted text-center bg-light',\n attrs: {\n id: gridHelpId\n }\n }, [h('div', {\n staticClass: 'small'\n }, this.labelHelp)]);\n var $grid = h('div', {\n ref: 'grid',\n staticClass: 'b-calendar-grid form-control h-auto text-center',\n attrs: {\n id: gridId,\n role: 'application',\n tabindex: this.disabled ? null : '0',\n 'data-month': activeYMD.slice(0, -3),\n // `YYYY-MM`, mainly for testing\n 'aria-roledescription': this.labelCalendar || null,\n 'aria-labelledby': gridCaptionId,\n 'aria-describedby': gridHelpId,\n // `aria-readonly` is not considered valid on `role=\"application\"`\n // https://www.w3.org/TR/wai-aria-1.1/#aria-readonly\n // 'aria-readonly': this.readonly && !this.disabled ? 'true' : null,\n 'aria-disabled': this.disabled ? 'true' : null,\n 'aria-activedescendant': activeId\n },\n on: {\n keydown: this.onKeydownGrid,\n focus: this.setGridFocusFlag,\n blur: this.setGridFocusFlag\n }\n }, [$gridCaption, $gridWeekDays, $gridBody, $gridHelp]); // Optional bottom slot\n\n var $slot = this.normalizeSlot('default');\n $slot = $slot ? h('footer', {\n staticClass: 'b-calendar-footer'\n }, $slot) : h();\n var $widget = h('div', {\n staticClass: 'b-calendar-inner',\n style: this.block ? {} : {\n width: this.width\n },\n attrs: {\n id: widgetId,\n dir: isRTL ? 'rtl' : 'ltr',\n lang: this.computedLocale || null,\n role: 'group',\n 'aria-disabled': this.disabled ? 'true' : null,\n // If datepicker controls an input, this will specify the ID of the input\n 'aria-controls': this.ariaControls || null,\n // This should be a prop (so it can be changed to Date picker, etc, localized\n 'aria-roledescription': this.roleDescription || null,\n 'aria-describedby': [// Should the attr (if present) go last?\n // Or should this attr be a prop?\n this.bvAttrs['aria-describedby'], valueId, gridHelpId].filter(identity).join(' ')\n },\n on: {\n keydown: this.onKeydownWrapper\n }\n }, [$header, $nav, $grid, $slot]); // Wrap in an outer div that can be styled\n\n return h('div', {\n staticClass: 'b-calendar',\n class: {\n 'd-block': this.block\n }\n }, [$widget]);\n }\n});","import { BCalendar } from './calendar';\nimport { pluginFactory } from '../../utils/plugins';\nvar CalendarPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BCalendar: BCalendar\n }\n});\nexport { CalendarPlugin, BCalendar };","import { BCard } from './card';\nimport { BCardHeader } from './card-header';\nimport { BCardBody } from './card-body';\nimport { BCardTitle } from './card-title';\nimport { BCardSubTitle } from './card-sub-title';\nimport { BCardFooter } from './card-footer';\nimport { BCardImg } from './card-img';\nimport { BCardImgLazy } from './card-img-lazy';\nimport { BCardText } from './card-text';\nimport { BCardGroup } from './card-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar CardPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BCard: BCard,\n BCardHeader: BCardHeader,\n BCardBody: BCardBody,\n BCardTitle: BCardTitle,\n BCardSubTitle: BCardSubTitle,\n BCardFooter: BCardFooter,\n BCardImg: BCardImg,\n BCardImgLazy: BCardImgLazy,\n BCardText: BCardText,\n BCardGroup: BCardGroup\n }\n});\nexport { CardPlugin, BCard, BCardHeader, BCardBody, BCardTitle, BCardSubTitle, BCardFooter, BCardImg, BCardImgLazy, BCardText, BCardGroup };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from 'vue-functional-data-merge';\nimport Vue from '../../utils/vue';\nimport { htmlOrText } from '../../utils/html';\nimport { copyProps, prefixPropName } from '../../utils/props';\nimport cardMixin from '../../mixins/card'; // --- Props ---\n\nexport var props = _objectSpread(_objectSpread({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'header'))), {}, {\n header: {\n type: String // default: null\n\n },\n headerHtml: {\n type: String // default: null\n\n },\n headerClass: {\n type: [String, Object, Array] // default: null\n\n }\n}); // --- Main component ---\n// @vue/component\n\nexport var BCardHeader = /*#__PURE__*/Vue.extend({\n name: 'BCardHeader',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var headerBgVariant = props.headerBgVariant,\n headerBorderVariant = props.headerBorderVariant,\n headerTextVariant = props.headerTextVariant;\n return h(props.headerTag, mergeData(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});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport { toString } from '../../utils/string';\nvar NAME = 'BCardSubTitle';\nexport var props = {\n subTitle: {\n type: String // default: null\n\n },\n subTitleTag: {\n type: String,\n default: 'h6'\n },\n subTitleTextVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'subTitleTextVariant');\n }\n }\n}; // @vue/component\n\nexport var BCardSubTitle = /*#__PURE__*/Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.subTitleTag, mergeData(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n }), children || toString(props.subTitle));\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n textTag: {\n type: String,\n default: 'p'\n }\n}; // @vue/component\n\nexport var BCardText = /*#__PURE__*/Vue.extend({\n name: 'BCardText',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.textTag, mergeData(data, {\n staticClass: 'card-text'\n }), children);\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport { isEvent } from '../../utils/inspect';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nvar NAME = 'BButtonClose';\nvar props = {\n content: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'content');\n }\n },\n disabled: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'ariaLabel');\n }\n },\n textVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'textVariant');\n }\n }\n}; // @vue/component\n\nexport var BButtonClose = /*#__PURE__*/Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var componentData = {\n staticClass: 'close',\n class: _defineProperty({}, \"text-\".concat(props.textVariant), props.textVariant),\n attrs: {\n type: 'button',\n disabled: props.disabled,\n 'aria-label': props.ariaLabel ? String(props.ariaLabel) : null\n },\n on: {\n click: function click(evt) {\n // Ensure click on button HTML content is also disabled\n\n /* istanbul ignore if: bug in JSDOM still emits click on inner element */\n if (props.disabled && isEvent(evt)) {\n evt.stopPropagation();\n evt.preventDefault();\n }\n }\n }\n }; // Careful not to override the default slot with innerHTML\n\n if (!hasNormalizedSlot('default', $scopedSlots, $slots)) {\n componentData.domProps = {\n innerHTML: props.content\n };\n }\n\n return h('button', mergeData(data, componentData), normalizeSlot('default', {}, $scopedSlots, $slots));\n }\n});"],"sourceRoot":""}