{"version":3,"sources":["webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./src/views/schedule/UnitBlock.vue?a233","webpack:///./node_modules/bootstrap-vue/esm/utils/locale.js","webpack:///./src/views/schedule/assetsSchedules.js","webpack:///./node_modules/bootstrap-vue/esm/constants/popper.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/click-out.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/focus-in.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/dropdown.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack:///./src/views/schedule/UnitBlock.vue?363f","webpack:///src/views/schedule/UnitBlock.vue","webpack:///./src/views/schedule/UnitBlock.vue?9b87","webpack:///./src/views/schedule/UnitBlock.vue","webpack:///./node_modules/bootstrap-vue/esm/constants/date.js","webpack:///./node_modules/bootstrap-vue/esm/utils/date.js","webpack:///./node_modules/bootstrap-vue/esm/components/calendar/calendar.js","webpack:///./node_modules/bootstrap-vue/esm/directives/hover/hover.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-btn-label-control/bv-form-btn-label-control.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-datepicker/form-datepicker.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-control.js"],"names":["_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","i","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","push","value","length","err","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","$","aFunction","toObject","fails","arrayMethodIsStrict","test","nativeSort","sort","FAILS_ON_UNDEFINED","undefined","FAILS_ON_NULL","STRICT_METHOD","FORCED","target","proto","forced","comparefn","this","RTL_LANGS","map","locale","toLowerCase","isLocaleRTL","parts","replace","split","locale1","slice","join","locale2","weekdayText","baseStartDate","periodLength","SchedulesService","scheduleDate","isStart","isNew","date","Date","datetimeFormatter","setDate","getDate","val","options","month","day","year","toLocaleDateString","substr","dateObj","getMonth","getDay","dayText","n","addDays","getFullYear","hours","getHours","minutes","getMinutes","date1","date2","diffTime","Math","abs","ceil","setTime","getTime","d","toString","m","y","field","desc","a","b","utcDate","UTC","getUTCFullYear","getUTCMonth","getUTCDate","dayOfWeek","getUTCDay","setUTCDate","dateStr","Number","baseDate","createUTCDate","diff","floor","periodStart","getSunday","timeZone","Intl","DateTimeFormat","format","String","padStart","PLACEMENT_TOP_START","PLACEMENT_TOP_END","PLACEMENT_BOTTOM_START","PLACEMENT_BOTTOM_END","PLACEMENT_RIGHT_START","PLACEMENT_LEFT_START","clickOutMixin","extend","data","listenForClickOut","watch","newValue","oldValue","clickOutElement","clickOutEventName","_clickOutHandler","beforeCreate","mounted","document","beforeDestroy","methods","isClickOut","event","$el","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","arguments","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","configurable","writable","ROOT_EVENT_NAME_SHOWN","ROOT_EVENT_NAME_HIDDEN","SELECTOR_FORM_CHILD","SELECTOR_ITEM","selector","concat","els","id","boundary","disabled","dropleft","dropright","dropup","noFlip","offset","popperOpts","right","dropdownMixin","mixins","provide","bvDropdown","inject","bvNavbar","default","props","visible","visibleChangePrevented","computed","inNavbar","toggler","toggle","$refs","directionClass","boundaryClass","eventName","bvEvent","cancelable","vueTarget","menu","relatedTarget","componentId","safeId","emitEvent","defaultPrevented","$off","focusToggler","showMenu","hideMenu","created","$_popper","$_hideTimeout","deactivated","whileOpenListen","destroyPopper","clearHideTimeout","type","emitOnRoot","$emit","_this","warn","el","createPopper","$nextTick","focusMenu","element","getPopperConfig","destroy","updatePopper","scheduleUpdate","_unused","clearTimeout","placement","popperConfig","modifiers","flip","enabled","boundariesElement","preventOverflow","isOpen","method","$root","rootCloseListener","vm","show","_this2","hide","refocus","$once","_event","keyCode","indexOf","onMousedown","propagation","onKeydown","onEsc","focusNext","onSplitClick","hideHandler","_this3","setTimeout","up","_this4","items","getItems","index","focusItem","find","_this5","toAbsoluteIndex","toInteger","toLength","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","1","max","min","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","splice","start","deleteCount","insertCount","actualDeleteCount","A","k","from","to","O","len","actualStart","argumentsLength","size","formSizeMixin","sizeFormClass","render","_vm","_h","$createElement","_c","_self","staticClass","style","width","on","setDragenterRowAndIndex","dayOff","zoomMode","staticStyle","attrs","_v","reasonType","staticRenderFns","components","rowIndex","keyIndex","component","CALENDAR_GREGORY","CALENDAR_LONG","CALENDAR_NARROW","CALENDAR_SHORT","DATE_FORMAT_2_DIGIT","DATE_FORMAT_NUMERIC","_unsupportedIterableToArray","o","minLen","_arrayLikeToArray","prototype","constructor","name","arr2","_construct","Parent","args","Class","_isNativeReflectConstruct","Reflect","construct","Constructor","Function","bind","instance","_setPrototypeOf","sham","Proxy","e","p","setPrototypeOf","__proto__","_watch","createDate","_len","_key","trim","_date$split$map","v","_date$split$map2","formatYMD","locales","calendar","identity","fmt","resolvedOptions","createDateFormatter","dtf","datesEqual","firstDateOfMonth","lastDateOfMonth","setMonth","addYears","numberOfYears","setFullYear","oneMonthAgo","oneMonthAhead","oneYearAgo","oneYearAhead","oneDecadeAgo","oneDecadeAhead","_makeModelMixin","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","ariaControls","block","dateDisabledFn","dateFormatOptions","weekday","dateInfoFn","direction","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","array","BCalendar","selected","selectedYMD","activeYMD","getToday","gridHasFocus","isLive","valueId","widgetId","navId","gridId","gridCaptionId","gridHelpId","activeId","selectedDate","activeDate","computedMin","computedMax","computedWeekStarts","math","computedLocale","computedDateDisabledFn","computedDateInfoFn","calendarLocale","calendarYear","calendarMonth","calendarFirstDay","calendarDaysInMonth","computedVariant","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","weekOffset","currentDay","week","j","dayYMD","dayDisabled","dateInfo","class","label","isThisMonth","isDisabled","info","calendarHeadings","text","old","newYMD","oldYMD","constrainDate","setLive","activated","focus","grid","blur","emitSelected","setGridFocusFlag","onKeydownWrapper","altKey","ctrlKey","checkDate","constrainedToday","onKeydownGrid","onClickDay","clickedDate","gotoPrevDecade","gotoPrevYear","gotoPrevMonth","gotoCurrentMonth","gotoNextMonth","gotoNextYear","gotoNextDecade","onHeaderClick","h","_this6","hideDecadeNav","todayYMD","highlightToday","$header","for","role","tabindex","click","title","labelSelectedDate","navScope","navProps","shiftV","navPrevProps","flipH","navNextProps","$prevDecadeIcon","normalizeSlot","$prevYearIcon","$prevMonthIcon","$thisMonthIcon","$nextMonthIcon","$nextYearIcon","$nextDecadeIcon","makeNavBtn","content","handler","btnDisabled","shortcut","$nav","$gridCaption","$gridWeekDays","idx","$gridBody","$cells","dIndex","_class","isSelected","isActive","isToday","idCell","$btn","active","pointerEvents","$gridHelp","$grid","keydown","ref","$slot","$widget","lang","bvAttrs","PROP","MOUSEENTER","MOUSELEAVE","createListener","listener","fn","_ref","_ref$value","hasListener","handlerChanged","VBHover","componentUpdated","unbind","dropdown","buttonOnly","buttonVariant","formattedValue","menuClass","placeholder","BVFormBtnLabelControl","directives","isHovered","hasFocus","idButton","idLabel","idMenu","idWrapper","computedDir","setFocus","handleHover","hovered","required","state","invalid","btnScope","opened","$button","mousedown","hasNormalizedSlot","scale","$hidden","form","$menu","$label","stateClass","preventDefault","calendarProps","formBtnLabelControlProps","calendarWidth","closeButton","closeButtonVariant","dark","labelCloseButton","labelResetButton","labelTodayButton","noCloseOnSelect","resetButton","resetButtonVariant","resetValue","todayButton","todayButtonVariant","BFormDatepicker","localYMD","isVisible","localLocale","calendarYM","computedLang","computedResetValue","control","setAndClose","onSelected","onInput","onContext","ctx","onTodayButton","onResetButton","onCloseButton","onShow","onShown","onHidden","defaultButtonFn","$props","$scopedSlots","$footer","variant","_label","_label2","$calendar","input","scopedSlots","shown","SELECTOR","autofocus","formControlMixin","handleAutofocus"],"mappings":"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","file":"js/chunk-33e52990.dd709f3f.js","sourcesContent":["export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default 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}","export default 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}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? nativeSort.call(toObject(this))\n      : nativeSort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnitBlock.vue?vue&type=style&index=0&id=7289eb6c&scoped=true&lang=css&\"","// Localization utilities\nimport { RX_STRIP_LOCALE_MODS } from '../constants/regex';\nimport { arrayIncludes } from './array';\nimport { toString } from './string'; // Languages that are RTL\n\nvar 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\nexport 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};","export const  weekdayText = [\" Mon \", \" Tue \", \" Wed \", \" Thu \", \" Fri \", \" Sat \", \" Sun \"];\nexport const baseStartDate = \"2024-10-27\"\nexport const periodLength = 14\n\nexport default class SchedulesService {\n    getScheduleDate(scheduleDate, isStart, isNew = false) {\n        if (isStart) {\n            let date = new Date(scheduleDate);\n            return this.datetimeFormatter(date, isNew)\n        } else {\n            let date = new Date(scheduleDate);\n            date.setDate(date.getDate() + 1);\n            return this.datetimeFormatter(date)\n        }\n    };\n\n    dateFormat(val) {\n        if (val) {\n            const date = new Date(val);\n            const options = {month: '2-digit', day: '2-digit', year: 'numeric'}\n            if (date) return date.toLocaleDateString(\"en-US\", options);\n        }\n        if (val) return val.substr(0, 10);\n        return val\n    };\n\n    dateFormatter(dateObj) {\n        let month = dateObj.getMonth() + 1;\n        if (month < 10) {\n            month = \"0\" + month;\n        }\n        let date = dateObj.getDate();\n        if (date < 10) {\n            date = \"0\" + date;\n        }\n        const day = dateObj.getDay();\n        const dayText = weekdayText[day ? day - 1 : 6];\n        return dayText + \" \" + month + \"/\" + date;\n    };\n\n    dateFormatToSort(dateObj, n = 0) {\n        if (dateObj) {\n            dateObj = new Date(dateObj);\n            if (n) {\n                dateObj = this.addDays(dateObj, n - 2)\n            }\n            let year = dateObj.getFullYear();\n            let month = dateObj.getMonth() + 1;\n            if (month < 10) {\n                month = \"0\" + month;\n            }\n            let date = dateObj.getDate();\n            if (date < 10) {\n                date = \"0\" + date;\n            }\n            return year + \"/\" + month + \"/\" + date\n        }\n        return null\n    };\n\n    datetimeFormatter(dateObj, isNew = false) {\n        let date = dateObj.getDate();\n        if (isNew) {\n            let day = dateObj.getDay();\n            if (day) {\n                dateObj.setDate(date + (5 - day))\n                date = dateObj.getDate()\n            }\n        }\n        if (date < 10) {\n            date = \"0\" + date;\n        }\n        let month = dateObj.getMonth() + 1;\n        if (month < 10) {\n            month = \"0\" + month;\n        }\n        let year = dateObj.getFullYear();\n        let hours = dateObj.getHours();\n        if (hours < 10) {\n            hours = \"0\" + hours;\n        }\n        let minutes = dateObj.getMinutes();\n        if (minutes < 10) {\n            minutes = \"0\" + minutes;\n        }\n        return year + \"/\" + month + \"/\" + date + \" \" + hours + \":\" + minutes;\n    };\n\n    getDateDiff(date1, date2) {\n        const diffTime = Math.abs(date2 - date1) + 1;\n        return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n    };\n\n    getMinutesDiff(date1, date2) {\n        const diffTime = Math.abs(date2 - date1);\n        return Math.ceil(diffTime / (1000 * 60));\n    }\n\n    addDays(dateObj, n) {\n        dateObj.setTime(dateObj.getTime() + (n + 1) * 60 * 60 * 24 * 1000);\n        return dateObj;\n    };\n\n    addMinutes(dateObj, n) {\n        dateObj.setTime(dateObj.getTime() + n * 60 * 1000);\n        return dateObj;\n    };\n\n    dateParser(val) {\n        const date = new Date(val);\n        const d = date.getDate().toString();\n        const m = (date.getMonth() + 1).toString();\n        const y = date.getFullYear();\n        return y + \"-\" + (m.length === 1 ? \"0\" + m : m) + \"-\" + (d.length === 1 ? \"0\" + d : d);\n    };\n\n    byField(field, desc = true) {\n        if (desc) return (a, b) => a[field] > b[field] ? 1 : -1;\n        return (a, b) => a[field] < b[field] ? -1 : 1;\n    };\n\n    getSunday(date) {\n        const utcDate = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));\n        const dayOfWeek = utcDate.getUTCDay();\n        utcDate.setUTCDate(utcDate.getUTCDate() - dayOfWeek);\n        return utcDate;\n    };\n\n    createUTCDate(dateStr) {\n        const [year, month, day] = dateStr.split('-').map(Number);\n        return new Date(Date.UTC(year, month - 1, day));\n    };\n\n    calculatePeriodStart(date) {\n        const baseDate = this.createUTCDate(baseStartDate);\n        const diff = Math.floor(((date.getTime() - baseDate.getTime()) / (periodLength * 24 * 60 * 60 * 1000)) - 1);\n        let periodStart = new Date(baseDate);\n        periodStart.setUTCDate(baseDate.getUTCDate() + diff * periodLength);\n        return this.getSunday(periodStart);\n    };\n\n    formatPeriodDate(date) {\n        const d = new Date(date);\n        const options = { year: 'numeric', month: '2-digit', day: '2-digit', timeZone: 'UTC' };\n        return new Intl.DateTimeFormat('en-US', options).format(d);\n    };\n\n    formatDateToUTC(date) {\n        const year = date.getUTCFullYear();\n        const month = String(date.getUTCMonth() + 1).padStart(2, '0');\n        const day = String(date.getUTCDate()).padStart(2, '0');\n        return `${year}-${month}-${day}`;\n    };\n}","export var PLACEMENT_TOP_START = 'top-start';\nexport var PLACEMENT_TOP_END = 'top-end';\nexport var PLACEMENT_BOTTOM_START = 'bottom-start';\nexport var PLACEMENT_BOTTOM_END = 'bottom-end';\nexport var PLACEMENT_RIGHT_START = 'right-start';\nexport var PLACEMENT_RIGHT_END = 'right-end';\nexport var PLACEMENT_LEFT_START = 'left-start';\nexport var PLACEMENT_LEFT_END = 'left-end';","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { contains } from '../utils/dom';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var clickOutMixin = Vue.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});","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var focusInMixin = Vue.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});","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 Popper from 'popper.js';\nimport { Vue } from '../vue';\nimport { NAME_DROPDOWN } from '../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_TOGGLE } from '../constants/events';\nimport { CODE_DOWN, CODE_ENTER, CODE_ESC, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PLACEMENT_TOP_START, PLACEMENT_TOP_END, PLACEMENT_BOTTOM_START, PLACEMENT_BOTTOM_END, PLACEMENT_RIGHT_START, PLACEMENT_LEFT_START } from '../constants/popper';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { HTMLElement } from '../constants/safe-types';\nimport { BvEvent } from '../utils/bv-event.class';\nimport { attemptFocus, closest, contains, isVisible, requestAF, selectAll } from '../utils/dom';\nimport { getRootEventName, stopEvent } from '../utils/events';\nimport { isNull } from '../utils/inspect';\nimport { mergeDeep, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn';\nimport { clickOutMixin } from './click-out';\nimport { focusInMixin } from './focus-in';\nimport { idMixin, props as idProps } from './id';\nimport { listenOnRootMixin } from './listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_SHOWN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_SHOWN);\nvar ROOT_EVENT_NAME_HIDDEN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_HIDDEN); // CSS selectors\n\nvar SELECTOR_FORM_CHILD = '.dropdown form';\nvar 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\nvar filterVisibles = function filterVisibles(els) {\n  return (els || []).filter(isVisible);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, {\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\nexport var dropdownMixin = Vue.extend({\n  mixins: [idMixin, listenOnRootMixin, clickOutMixin, focusInMixin],\n  provide: function provide() {\n    return {\n      bvDropdown: this\n    };\n  },\n  inject: {\n    bvNavbar: {\n      default: null\n    }\n  },\n  props: props,\n  data: function data() {\n    return {\n      visible: false,\n      visibleChangePrevented: false\n    };\n  },\n  computed: {\n    inNavbar: function inNavbar() {\n      return !isNull(this.bvNavbar);\n    },\n    toggler: function toggler() {\n      var toggle = this.$refs.toggle;\n      return toggle ? toggle.$el || toggle : null;\n    },\n    directionClass: function directionClass() {\n      if (this.dropup) {\n        return 'dropup';\n      } else if (this.dropright) {\n        return 'dropright';\n      } else if (this.dropleft) {\n        return 'dropleft';\n      }\n\n      return '';\n    },\n    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  },\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  beforeDestroy: function beforeDestroy() {\n    this.visible = false;\n    this.whileOpenListen(false);\n    this.destroyPopper();\n    this.clearHideTimeout();\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 _this = 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        _this.focusMenu(); // Emit the shown event\n\n\n        _this.$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 ? '$on' : '$off';\n      this.$root[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 _this2 = 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        _this2.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 _this3 = 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 _this3.hide();\n        }, this.inNavbar ? 300 : 0);\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 _this4 = 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 = _this4.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        _this4.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 _this5 = this;\n\n      this.$nextTick(function () {\n        attemptFocus(_this5.toggler);\n      });\n    }\n  }\n});","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n","import { Vue } from '../vue';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  size: makeProp(PROP_TYPE_STRING)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formSizeMixin = Vue.extend({\n  props: props,\n  computed: {\n    sizeFormClass: function sizeFormClass() {\n      return [this.size ? \"form-control-\".concat(this.size) : null];\n    }\n  }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tl can-res text-center position-relative\",style:({width: _vm.width}),on:{\"dragenter\":_vm.setDragenterRowAndIndex}},[(_vm.dayOff && !_vm.zoomMode)?_c('v-icon',{staticStyle:{\"opacity\":\"0.5\"},attrs:{\"name\":\"fa-calendar-times\",\"scale\":\"4\"}}):_vm._e(),_c('div',{staticClass:\"day-off-reason\"},[_vm._v(_vm._s(_vm.reasonType[_vm.dayOff]))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div\n    class=\"tl can-res text-center position-relative\"\n    :style=\"{width: width}\"\n    @dragenter=\"setDragenterRowAndIndex\"\n  >\n    <v-icon v-if=\"dayOff && !zoomMode\" style=\"opacity: 0.5\" name=\"fa-calendar-times\" scale=\"4\"/>\n    <div class=\"day-off-reason\">{{ reasonType[dayOff] }}</div>\n  </div>\n</template>\n\n<script>\n\nexport default {\n  components: {\n  },\n  props: {\n    rowIndex: Number,\n    keyIndex: Number,\n    width: String,\n    dayOff: Number,\n    zoomMode: Number,\n  },\n  data() {\n    return {\n      reasonType: [\n          \"\", \"PTO\", \"Requested Off\"\n      ]\n    }\n  },\n  methods: {\n    setDragenterRowAndIndex() {\n      this.$emit(\"set-dragenter-row-and-index\", this.rowIndex, this.keyIndex);\n    },\n  }\n}\n</script>\n\n<style scoped>\n@import \"schedule.css\";\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnitBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnitBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UnitBlock.vue?vue&type=template&id=7289eb6c&scoped=true&\"\nimport script from \"./UnitBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./UnitBlock.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UnitBlock.vue?vue&type=style&index=0&id=7289eb6c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7289eb6c\",\n  null\n  \n)\n\nexport default component.exports","export var CALENDAR_GREGORY = 'gregory';\nexport var CALENDAR_LONG = 'long';\nexport var CALENDAR_NARROW = 'narrow';\nexport var CALENDAR_SHORT = 'short';\nexport var DATE_FORMAT_2_DIGIT = '2-digit';\nexport var DATE_FORMAT_NUMERIC = 'numeric';","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\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 _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 _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n// Date utility functions\nimport { CALENDAR_GREGORY } from '../constants/date';\nimport { RX_DATE, RX_DATE_SPLIT } from '../constants/regex';\nimport { concat } from './array';\nimport { identity } from './identity';\nimport { isDate, isString } from './inspect';\nimport { toInteger } from './number'; // --- Date utility methods ---\n// Create or clone a date (`new Date(...)` shortcut)\n\nexport 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\nexport 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\nexport 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\nexport 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\nexport 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\nexport 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\nexport var firstDateOfMonth = function firstDateOfMonth(date) {\n  date = createDate(date);\n  date.setDate(1);\n  return date;\n};\nexport var lastDateOfMonth = function lastDateOfMonth(date) {\n  date = createDate(date);\n  date.setMonth(date.getMonth() + 1);\n  date.setDate(0);\n  return date;\n};\nexport 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};\nexport 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};\nexport 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};\nexport var oneYearAgo = function oneYearAgo(date) {\n  return addYears(date, -1);\n};\nexport var oneYearAhead = function oneYearAhead(date) {\n  return addYears(date, 1);\n};\nexport var oneDecadeAgo = function oneDecadeAgo(date) {\n  return addYears(date, -10);\n};\nexport 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\nexport 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};","var _watch;\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 { Vue } from '../../vue';\nimport { NAME_CALENDAR } from '../../constants/components';\nimport { CALENDAR_GREGORY, CALENDAR_LONG, CALENDAR_NARROW, CALENDAR_SHORT, DATE_FORMAT_2_DIGIT, DATE_FORMAT_NUMERIC } from '../../constants/date';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_SELECTED } from '../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_LEFT, CODE_PAGEDOWN, CODE_PAGEUP, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_NAV_NEXT_DECADE, SLOT_NAME_NAV_NEXT_MONTH, SLOT_NAME_NAV_NEXT_YEAR, SLOT_NAME_NAV_PEV_DECADE, SLOT_NAME_NAV_PEV_MONTH, SLOT_NAME_NAV_PEV_YEAR, SLOT_NAME_NAV_THIS_MONTH } from '../../constants/slots';\nimport { arrayIncludes, concat } from '../../utils/array';\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 { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isArray, isPlainObject, isString } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconChevronLeft, BIconChevronDoubleLeft, BIconChevronBarLeft, BIconCircleFill } from '../../icons/icons'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_DATE_STRING\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\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  // 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\nexport var BCalendar = Vue.extend({\n  name: NAME_CALENDAR,\n  // Mixin order is important!\n  mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    var selected = formatYMD(this[MODEL_PROP_NAME]) || '';\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, _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: 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) ? _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 _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 = {}, _defineProperty(_watch, MODEL_PROP_NAME, 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, \"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, this.valueAsDate ? parseYMD(newYMD) || null : newYMD || '');\n    }\n  }), _defineProperty(_watch, \"context\", function context(newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      this.$emit(EVENT_NAME_CONTEXT, newValue);\n    }\n  }), _defineProperty(_watch, \"hidden\", function hidden(newValue) {\n    // Reset the active focused day when hidden\n    this.activeYMD = this.selectedYMD || formatYMD(this[MODEL_PROP_NAME] || this.constrainDate(this.initialDate || this.getToday())); // Enable/disable the live regions\n\n    this.setLive(!newValue);\n  }), _watch),\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(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\" // '&nbsp;'\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(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('header', {\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('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      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});","// v-b-hover directive\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { eventOnOff } from '../../utils/events';\nimport { isFunction } from '../../utils/inspect'; // --- Constants ---\n\nvar PROP = '__BV_hover_handler__';\nvar MOUSEENTER = 'mouseenter';\nvar MOUSELEAVE = 'mouseleave'; // --- Helper methods ---\n\nvar 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\nvar 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\nvar 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];\n    var hasListener = isFunction(listener);\n    var handlerChanged = !(hasListener && listener.fn === handler);\n\n    if (hasListener && handlerChanged) {\n      updateListeners(false, el, listener);\n      delete el[PROP];\n    }\n\n    if (isFunction(handler) && handlerChanged) {\n      el[PROP] = createListener(handler);\n      updateListeners(true, el, el[PROP]);\n    }\n  }\n}; // VBHover directive\n\n\nexport var VBHover = {\n  bind: directive,\n  componentUpdated: directive,\n  unbind: function unbind(el) {\n    directive(el, {\n      value: null\n    });\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\n//\n// Private component used by `b-form-datepicker` and `b-form-timepicker`\n//\nimport { Vue } from '../../vue';\nimport { NAME_FORM_BUTTON_LABEL_CONTROL } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown';\nimport { props as formControlProps } from '../../mixins/form-control';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { VBHover } from '../../directives/hover/hover';\nimport { BIconChevronDown } from '../../icons/icons'; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formSizeProps), formStateProps), omit(dropdownProps, ['disabled'])), omit(formControlProps, ['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\nexport var BVFormBtnLabelControl = /*#__PURE__*/Vue.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,\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', 'text-break', 'text-wrap', 'bg-transparent', // 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        'd-flex': !buttonOnly,\n        'h-auto': !buttonOnly,\n        'align-items-stretch': !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});","var _watch;\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 { Vue } from '../../vue';\nimport { NAME_FORM_DATEPICKER } from '../../constants/components';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT } from '../../constants/slots';\nimport { createDate, constrainDate, formatYMD, parseYMD } from '../../utils/date';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { omit, pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { BIconCalendar, BIconCalendarFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BCalendar, props as BCalendarProps } from '../calendar/calendar';\nimport { BVFormBtnLabelControl, props as BVFormBtnLabelControlProps } from '../form-btn-label-control/bv-form-btn-label-control'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_DATE_STRING\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nvar calendarProps = omit(BCalendarProps, ['block', 'hidden', 'id', 'noKeyNav', 'roleDescription', 'value', 'width']);\nvar formBtnLabelControlProps = omit(BVFormBtnLabelControlProps, ['formattedValue', 'id', 'lang', 'rtl', 'value']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), calendarProps), formBtnLabelControlProps), {}, {\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\nexport var BFormDatepicker = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM_DATEPICKER,\n  mixins: [idMixin, modelMixin],\n  props: props,\n  data: function data() {\n    return {\n      // We always use `YYYY-MM-DD` value internally\n      localYMD: formatYMD(this[MODEL_PROP_NAME]) || '',\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 = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    this.localYMD = formatYMD(newValue) || '';\n  }), _defineProperty(_watch, \"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, this.valueAsDate ? parseYMD(newValue) || null : newValue || '');\n    }\n  }), _defineProperty(_watch, \"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),\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: _objectSpread(_objectSpread({}, 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($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: _objectSpread(_objectSpread({}, pluckProps(formBtnLabelControlProps, $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});","import { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptFocus, isVisible, matches, requestAF, select } from '../utils/dom';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Constants ---\n\nvar SELECTOR = 'input, textarea, select'; // --- Props ---\n\nexport var props = 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\nexport var formControlMixin = Vue.extend({\n  props: props,\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});"],"sourceRoot":""}