{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/utils/date.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/bootstrap-vue/esm/components/image/img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/alert/alert.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-footer.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/utils/locale.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/bootstrap-vue/esm/constants/date.js","webpack:///./node_modules/bootstrap-vue/esm/components/calendar/calendar.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/col.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-datepicker/form-datepicker.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table-lite.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-state.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-text.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-control.js","webpack:///./src/views/Patient/Reservation/PrescriptionsList.vue?16ea","webpack:///src/views/Patient/Reservation/PrescriptionsList.vue","webpack:///./src/views/Patient/Reservation/PrescriptionsList.vue?ee1d","webpack:///./src/views/Patient/Reservation/PrescriptionsList.vue","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:///./src/store/Patient/modulePatientState.js","webpack:///./src/store/Patient/modulePatientMutations.js","webpack:///./src/store/Patient/modulePatientActions.js","webpack:///./src/store/Patient/modulePatientGetters.js","webpack:///./src/store/Patient/modulePatient.js"],"names":["_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","Symbol","iterator","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","err","isArray","_construct","Parent","args","Class","_isNativeReflectConstruct","Reflect","construct","a","apply","Constructor","Function","bind","instance","_setPrototypeOf","arguments","sham","Proxy","Date","e","p","setPrototypeOf","__proto__","createDate","_len","_key","parseYMD","date","trim","_date$split$map","split","map","v","_date$split$map2","year","month","day","getFullYear","getMonth","getDate","formatYMD","concat","resolveLocale","locales","calendar","filter","fmt","Intl","DateTimeFormat","resolvedOptions","locale","createDateFormatter","options","dtf","format","datesEqual","date1","date2","firstDateOfMonth","setDate","lastDateOfMonth","setMonth","addYears","numberOfYears","setFullYear","oneMonthAgo","oneMonthAhead","oneYearAgo","oneYearAhead","oneDecadeAgo","oneDecadeAhead","constrainDate","min","max","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","target","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","configurable","writable","bottom","end","start","top","BCardImg","extend","functional","props","render","h","_ref","data","src","alt","width","height","baseClass","right","left","class","attrs","cardImgProps","imgSrc","required","card","align","noBody","BCard","_class","slots","scopedSlots","imgLeft","imgRight","imgStart","imgEnd","imgBottom","header","headerHtml","footer","footerHtml","textVariant","bgVariant","borderVariant","$scopedSlots","$slots","slotScope","$imgFirst","$imgLast","$img","$header","hasHeaderSlot","domProps","html","$content","overlay","staticClass","$footer","hasFooterSlot","tag","bottomRowMixin","methods","renderBottomRow","fields","this","computedFields","stacked","tbodyTrClass","tbodyTrAttr","$createElement","hasNormalizedSlot","normalizeSlot","columns","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computed","computedBusy","watch","newValue","oldValue","$emit","stopIfBusy","event","renderBusy","colspan","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","items","computedItems","$empty","isFiltered","role","stringifyObjectValues","sort","k","join","row","ignoreFields","includeFields","fieldsObj","formattedRow","reduce","result","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","DEBOUNCE_DEPRECATED_MSG","filterDebounce","String","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","identity","computedFilterIncluded","computedFilterDebounce","ms","warn","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","$_filterTimer","clearFilterTimer","deep","handler","newCriteria","_this","timeout","setTimeout","created","_this2","$nextTick","Boolean","beforeDestroy","clearTimeout","fn","item","_this3","regExp","pattern","replace","RegExp","lastIndex","computedFieldsObj","currentPage","perPage","paginationMixin","localPaging","noProviderPaging","paginatedItems","sortedItems","math","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","apiUrl","noProviderSorting","providerMixin","mixins","providerTriggerContext","ctx","sortBy","sortDesc","localSortBy","localSortDesc","_providerUpdate","mounted","listenOnRoot","id","refresh","$off","$on","clearSelected","_providerSetLocal","emitOnRoot","context","then","message","_props","_watch","SELECT_MODES","noSelectOnClick","selectMode","selectable","selectedVariant","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","some","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","idx","beforeMount","selectRow","index","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","variant","dark","selectableRowAttrs","on","method","selectionHandler","selected","shiftKey","ctrlKey","metaKey","b","_ref$sortBy","_ref$formatter","_ref$locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","get","bb","localeCompare","MODEL_PROP_NAME_SORT_BY","MODEL_EVENT_NAME_SORT_BY","MODEL_PROP_NAME_SORT_DESC","MODEL_EVENT_NAME_SORT_DESC","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","SORT_DIRECTION_LAST","SORT_DIRECTIONS","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","f","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","getFieldFormatter","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","topRowMixin","renderTopRow","BTable","BLANK_TEMPLATE","makeBlankImgSrc","color","encodeURIComponent","blank","blankColor","block","center","fluid","fluidGrow","rounded","sizes","srcset","thumbnail","BImg","title","titleTag","BCardTitle","children","_makeModelMixin","type","defaultValue","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","parseCountDown","show","parseShow","dismissLabel","dismissible","fade","BAlert","countDown","localShow","clearCountDownInterval","$_countDownTimeout","dismiss","$alert","$dismissButton","click","noFade","bodyClass","BCardBody","_ref2","bodyBgVariant","bodyBorderVariant","bodyTextVariant","$title","$subTitle","subTitle","bodyTag","footerClass","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","stableSort","compareFn","RTL_LANGS","toLowerCase","isLocaleRTL","parts","locale1","locale2","PLACEMENT_TOP_START","PLACEMENT_TOP_END","PLACEMENT_BOTTOM_START","PLACEMENT_BOTTOM_END","PLACEMENT_RIGHT_START","PLACEMENT_LEFT_START","clickOutMixin","listenForClickOut","clickOutElement","clickOutEventName","_clickOutHandler","beforeCreate","document","isClickOut","$el","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","ROOT_EVENT_NAME_SHOWN","ROOT_EVENT_NAME_HIDDEN","SELECTOR_FORM_CHILD","SELECTOR_ITEM","selector","els","boundary","disabled","dropleft","dropright","dropup","noFlip","offset","popperOpts","dropdownMixin","provide","bvDropdown","inject","bvNavbar","default","visible","visibleChangePrevented","inNavbar","toggler","toggle","$refs","directionClass","boundaryClass","eventName","bvEvent","cancelable","vueTarget","menu","relatedTarget","componentId","safeId","emitEvent","defaultPrevented","focusToggler","showMenu","hideMenu","$_popper","$_hideTimeout","deactivated","whileOpenListen","destroyPopper","clearHideTimeout","el","createPopper","focusMenu","element","getPopperConfig","destroy","updatePopper","scheduleUpdate","_unused","placement","popperConfig","modifiers","flip","enabled","boundariesElement","preventOverflow","isOpen","$root","rootCloseListener","vm","hide","refocus","$once","_event","keyCode","indexOf","onMousedown","propagation","onKeydown","onEsc","focusNext","onSplitClick","hideHandler","up","_this4","getItems","focusItem","find","_this5","CALENDAR_GREGORY","CALENDAR_LONG","CALENDAR_NARROW","CALENDAR_SHORT","DATE_FORMAT_2_DIGIT","DATE_FORMAT_NUMERIC","ariaControls","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","showDecadeNav","startWeekday","todayVariant","valueAsDate","weekdayHeaderFormat","BCalendar","selectedYMD","activeYMD","getToday","gridHasFocus","isLive","valueId","widgetId","navId","gridId","gridCaptionId","gridHelpId","activeId","selectedDate","activeDate","computedMin","computedMax","computedWeekStarts","computedLocale","computedDateDisabledFn","computedDateInfoFn","calendarLocale","calendarYear","calendarMonth","calendarFirstDay","calendarDaysInMonth","computedVariant","computedTodayVariant","computedNavButtonVariant","isRTL","dir","selectedFormatted","formatDateString","activeFormatted","dateDisabled","rtl","dateOutOfRange","rangeFn","ymd","hour","minute","second","formatYearMonth","formatWeekdayName","formatWeekdayNameShort","formatDay","nf","NumberFormat","style","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","prevDecadeDisabled","prevYearDisabled","prevMonthDisabled","thisMonthDisabled","nextMonthDisabled","nextYearDisabled","nextDecadeDisabled","matrix","firstDay","daysInMonth","startIndex","getDay","weekOffset","currentDay","week","j","dayYMD","dayDisabled","dateInfo","label","isThisMonth","isDisabled","info","calendarHeadings","d","text","old","newYMD","oldYMD","setLive","activated","focus","grid","blur","emitSelected","setGridFocusFlag","onKeydownWrapper","altKey","checkDate","constrainedToday","onKeydownGrid","onClickDay","clickedDate","gotoPrevDecade","gotoPrevYear","gotoPrevMonth","gotoCurrentMonth","gotoNextMonth","gotoNextYear","gotoNextDecade","onHeaderClick","_this6","hideDecadeNav","todayYMD","highlightToday","for","tabindex","labelSelectedDate","navScope","navProps","shiftV","navPrevProps","flipH","navNextProps","$prevDecadeIcon","$prevYearIcon","$prevMonthIcon","$thisMonthIcon","$nextMonthIcon","$nextYearIcon","$nextDecadeIcon","makeNavBtn","content","btnDisabled","shortcut","$nav","$gridCaption","$gridWeekDays","$gridBody","$cells","dIndex","isSelected","isActive","isToday","idCell","$btn","active","pointerEvents","$gridHelp","$grid","keydown","ref","$slot","$widget","lang","bvAttrs","size","formSizeMixin","sizeFormClass","ALIGN_SELF_VALUES","computeBreakpoint","breakpoint","className","computeBreakpointClass","breakpointPropMap","generateProps","breakpoints","breakpointCol","breakpointOffset","breakpointOrder","col","order","alignSelf","cols","BCol","_classList$push","classList","_keys","c","hasColClasses","headerClass","BCardHeader","headerBgVariant","headerBorderVariant","headerTextVariant","headerTag","subTitleTag","subTitleTextVariant","BCardSubTitle","calendarProps","formBtnLabelControlProps","calendarWidth","closeButton","closeButtonVariant","labelCloseButton","labelResetButton","labelTodayButton","noCloseOnSelect","resetButton","resetButtonVariant","resetValue","todayButton","todayButtonVariant","BFormDatepicker","localYMD","isVisible","localLocale","formattedValue","calendarYM","computedLang","computedResetValue","control","setAndClose","onSelected","onInput","onContext","onTodayButton","onResetButton","onCloseButton","onShow","onShown","onHidden","defaultButtonFn","isHovered","hasFocus","$props","placeholder","_label","_label2","$calendar","input","menuClass","shown","BTableLite","state","formStateMixin","computedState","stateClass","computedAriaInvalid","ariaInvalid","textTag","BCardText","SELECTOR","autofocus","form","formControlMixin","handleAutofocus","_vm","_h","_c","_self","_v","$t","model","Search","callback","$$v","$set","expression","$event","stopPropagation","SearchPrescription","Model","_l","Note","_f","baseURL","DoctorImage","DoctorName","Download","staticStyle","CurrentPage","GoToFirstPage","GoBack","CurrPage","Math","ceil","CountPerPage","GoNext","GoToLastPage","back","staticRenderFns","components","BButton","BLink","BRow","EnglishLan","PatientID","FilteredList","console","params","ID","dispatch","iconPack","icon","catch","window","modulePatient","component","PROP","MOUSEENTER","MOUSELEAVE","createListener","listener","_ref$value","hasListener","handlerChanged","VBHover","componentUpdated","unbind","dropdown","buttonOnly","buttonVariant","BVFormBtnLabelControl","directives","idButton","idLabel","idMenu","idWrapper","computedDir","setFocus","handleHover","hovered","invalid","btnScope","opened","$button","mousedown","scale","$hidden","$menu","$label","preventDefault","patients","SurgeryAndTreatment","PatientReservationSurgeries","MonthPatientReservationSurgeries","pendingPatientMedicalReport","SurgeryDocuments","ADD_ITEM","unshift","SET_Patient","SET_SurgeryAndTreatment","SET_SurgeryDocuments","UPDATE_Patient","Patient","PatientIndex","findIndex","assign","REMOVE_ITEM","itemId","ItemIndex","splice","SET_PatientReservationSurgeries","SET_MonthPatientReservationSurgeries","SET_PEND_MEDICAL_REPORT","MedicalReport","AddPatient","commit","Promise","resolve","reject","axios","post","response","Data","error","SearchPatients","UpdatePatient","getPatientReservationSurgeryCalender","getPatientReservationSurgery","UpdateListPatientMedicalReportRequest","UpdateListPatientReservationSessionDiagnosis","UpdatePatientReservationSession","ChangeReservationJoin","reservationId","ScheduleAnotherAppintment","patientReservationID","CancelSession","session","ChangeStatusSession","getPatientPendingList","patientID","AppointmentReservationPaymentDatail","GetAppointMentTapPayment","appointmentID","OrderID","GetSurgeryTapPayment","surgeryReservistionID","GetPatientRedervedDoctor","ProcessingPaymentDatail","SurgeryPaymentDatail","AddPatientReservationSurgery","AddPatientMedicalDocument","DeletePatientMedicalDocument","AddListPatientMedicalDocument","GetPatient","itemid","GetPatientForMainData","GetAllPatientMedicalReports","GetAllProfilePatientMedicalReports","DeletePatient","SearchPatientCancelledReservationSessions","SearchPatientReservationSessions","SearchReservationSessionPrescriptions","GetPatientReservationSessionPrescription","GetAllUserNotificationSettings","GetUserNotificationSettings","GetPatientReservationSurgery","GetHospitalSurgery","GetSurgeryDocuments","UpdateUserNotificationSetting","Item","AddUserNotificationSetting","SearchPatientMedicalHistoryReports","SearchSurgeryAndTreatment","AddPatientMedicalHistoryReport","AddPatientMedicalReportRequest","PatientMedicalReportRequest","Message","GetPatientMedicalHoistory","SendInvoiceEmail","GetGeneralSetting","namespaced","mutations","actions","getters"],"mappings":"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","file":"js/chunk-e69a14e4.2a145a5f.js","sourcesContent":["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};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { props as BImgProps } from '../image/img'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, pick(BImgProps, ['src', 'alt', 'width', 'height', 'left', 'right'])), {}, {\n bottom: makeProp(PROP_TYPE_BOOLEAN, false),\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n start: makeProp(PROP_TYPE_BOOLEAN, false),\n top: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_IMG); // --- Main component ---\n// @vue/component\n\nexport var BCardImg = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var src = props.src,\n alt = props.alt,\n width = props.width,\n height = props.height;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n }\n\n return h('img', mergeData(data, {\n class: baseClass,\n attrs: {\n src: src,\n alt: alt,\n width: width,\n height: height\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 { Vue, mergeData } from '../../vue';\nimport { NAME_CARD } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName, unprefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardBody, props as BCardBodyProps } from './card-body';\nimport { BCardHeader, props as BCardHeaderProps } from './card-header';\nimport { BCardFooter, props as BCardFooterProps } from './card-footer';\nimport { BCardImg, props as BCardImgProps } from './card-img'; // --- Props ---\n\nvar cardImgProps = copyProps(BCardImgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, BCardBodyProps), BCardHeaderProps), BCardFooterProps), cardImgProps), cardProps), {}, {\n align: makeProp(PROP_TYPE_STRING),\n noBody: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD); // --- Main component ---\n// @vue/component\n\nexport var BCard = /*#__PURE__*/Vue.extend({\n name: NAME_CARD,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var imgSrc = props.imgSrc,\n imgLeft = props.imgLeft,\n imgRight = props.imgRight,\n imgStart = props.imgStart,\n imgEnd = props.imgEnd,\n imgBottom = props.imgBottom,\n header = props.header,\n headerHtml = props.headerHtml,\n footer = props.footer,\n footerHtml = props.footerHtml,\n align = props.align,\n textVariant = props.textVariant,\n bgVariant = props.bgVariant,\n borderVariant = props.borderVariant;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $imgFirst = h();\n var $imgLast = h();\n\n if (imgSrc) {\n var $img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n });\n\n if (imgBottom) {\n $imgLast = $img;\n } else {\n $imgFirst = $img;\n }\n }\n\n var $header = h();\n var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n if (hasHeaderSlot || header || headerHtml) {\n $header = h(BCardHeader, {\n props: pluckProps(BCardHeaderProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n }\n\n var $content = normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots); // Wrap content in `` when `noBody` prop set\n\n if (!props.noBody) {\n $content = h(BCardBody, {\n props: pluckProps(BCardBodyProps, props)\n }, $content); // When the `overlap` prop is set we need to wrap the `` and ``\n // into a relative positioned wrapper to don't distract a potential header or footer\n\n if (props.overlay && imgSrc) {\n $content = h('div', {\n staticClass: 'position-relative'\n }, [$imgFirst, $content, $imgLast]); // Reset image variables since they are already in the wrapper\n\n $imgFirst = h();\n $imgLast = h();\n }\n }\n\n var $footer = h();\n var hasFooterSlot = hasNormalizedSlot(SLOT_NAME_FOOTER, $scopedSlots, $slots);\n\n if (hasFooterSlot || footer || footerHtml) {\n $footer = h(BCardFooter, {\n props: pluckProps(BCardFooterProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n }, normalizeSlot(SLOT_NAME_FOOTER, slotScope, $scopedSlots, $slots));\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': imgLeft || imgStart,\n 'flex-row-reverse': (imgRight || imgEnd) && !(imgLeft || imgStart)\n }, _defineProperty(_class, \"text-\".concat(align), align), _defineProperty(_class, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class, \"text-\".concat(textVariant), textVariant), _class)\n }), [$imgFirst, $header, $content, $footer, $imgLast]);\n }\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_BOTTOM_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var bottomRowMixin = Vue.extend({\n props: props,\n methods: {\n renderBottomRow: function renderBottomRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-bottom-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n key: 'b-bottom-row'\n }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n columns: fields.length,\n fields: fields\n }));\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Constants ---\n\nvar MODEL_PROP_NAME_BUSY = 'busy';\nvar MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\nexport var props = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n// @vue/component\n\nexport var busyMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localBusy: false\n };\n },\n computed: {\n computedBusy: function computedBusy() {\n return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n }\n },\n watch: {\n localBusy: function localBusy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n }\n }\n },\n methods: {\n // Event handler helper\n stopIfBusy: function stopIfBusy(event) {\n // If table is busy (via provider) then don't propagate\n if (this.computedBusy) {\n stopEvent(event);\n return true;\n }\n\n return false;\n },\n // Render the busy indicator or return `null` if not busy\n renderBusy: function renderBusy() {\n var tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n return h(BTr, {\n staticClass: 'b-table-busy-slot',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n key: 'table-busy-slot'\n }, [h(BTd, {\n props: {\n colspan: this.computedFields.length || null\n }\n }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n } // We return `null` here so that we can determine if we need to\n // render the table items rows or not\n\n\n return null;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_EMPTYFILTERED, SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Props ---\n\nexport var props = {\n emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n emptyHtml: makeProp(PROP_TYPE_STRING),\n emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var emptyMixin = Vue.extend({\n props: props,\n methods: {\n renderEmpty: function renderEmpty() {\n var items = this.computedItems;\n var h = this.$createElement;\n var $empty = h();\n\n if (this.showEmpty && (!items || items.length === 0) && !(this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n var fields = this.computedFields,\n isFiltered = this.isFiltered,\n emptyText = this.emptyText,\n emptyHtml = this.emptyHtml,\n emptyFilteredText = this.emptyFilteredText,\n emptyFilteredHtml = this.emptyFilteredHtml,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n emptyFilteredHtml: emptyFilteredHtml,\n emptyFilteredText: emptyFilteredText,\n emptyHtml: emptyHtml,\n emptyText: emptyText,\n fields: fields,\n // Not sure why this is included, as it will always be an empty array\n items: items\n });\n\n if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n });\n }\n\n $empty = h(BTd, {\n props: {\n colspan: fields.length || null\n }\n }, [h('div', {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite'\n }\n }, [$empty])]);\n $empty = h(BTr, {\n staticClass: 'b-table-empty-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n }, [$empty]);\n }\n\n return $empty;\n }\n }\n});","import { isDate, isObject, isUndefinedOrNull } from './inspect';\nimport { keys } from './object';\nimport { toString } from './string'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n// ex:\n// { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n// becomes\n// 'one 3 2 zzz 10 12 11'\n//\n// Strings are returned as-is\n// Numbers get converted to string\n// `null` and `undefined` values are filtered out\n// Dates are converted to their native string format\n\nexport var stringifyObjectValues = function stringifyObjectValues(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n } // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n\n\n if (isObject(value) && !isDate(value)) {\n return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .map(function (k) {\n return stringifyObjectValues(value[k]);\n }).filter(function (v) {\n return !!v;\n }) // Ignore empty strings\n .join(' ');\n }\n\n return toString(value);\n};","import { arrayIncludes } from '../../../utils/array';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport { clone, keys, pick } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nexport var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // We first need to format the row based on the field configurations\n // This ensures that we add formatted values for keys that may not\n // exist in the row itself\n var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n var field = fieldsObj[key];\n var filterByFormatted = field.filterByFormatted;\n var formatter = isFunction(filterByFormatted) ?\n /* istanbul ignore next */\n filterByFormatted : filterByFormatted ?\n /* istanbul ignore next */\n field.formatter : null;\n\n if (isFunction(formatter)) {\n result[key] = formatter(row[key], key, row);\n }\n\n return result;\n }, clone(row)); // Determine the allowed keys:\n // - Ignore special fields that start with `_`\n // - Ignore fields in the `ignoreFields` array\n // - Include only fields in the `includeFields` array\n\n var allowedKeys = keys(formattedRow).filter(function (key) {\n return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n });\n return pick(formattedRow, allowedKeys);\n};","import { isObject } from '../../../utils/inspect';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\nimport { sanitizeRow } from './sanitize-row'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nexport var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n /* istanbul ignore next */\n '';\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_FILTERED } from '../../../constants/events';\nimport { PROP_TYPE_REG_EXP, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY, PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { RX_DIGITS, RX_SPACES } from '../../../constants/regex';\nimport { concat } from '../../../utils/array';\nimport { cloneDeep } from '../../../utils/clone-deep';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { toInteger } from '../../../utils/number';\nimport { hasPropFunction, makeProp } from '../../../utils/props';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport { stringifyRecordValues } from './stringify-record-values'; // --- Constants ---\n\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"\" instead.'; // --- Props ---\n\nexport var props = {\n filter: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n return RX_DIGITS.test(String(value));\n }),\n filterFunction: makeProp(PROP_TYPE_FUNCTION),\n filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n}; // --- Mixin ---\n// @vue/component\n\nexport var filteringMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n // Flag for displaying which empty slot to show and some event triggering\n isFiltered: false,\n // Where we store the copy of the filter criteria after debouncing\n // We pre-set it with the sanitized filter value\n localFilter: this.filterSanitize(this.filter)\n };\n },\n computed: {\n computedFilterIgnored: function computedFilterIgnored() {\n return concat(this.filterIgnoredFields || []).filter(identity);\n },\n computedFilterIncluded: function computedFilterIncluded() {\n return concat(this.filterIncludedFields || []).filter(identity);\n },\n computedFilterDebounce: function computedFilterDebounce() {\n var ms = toInteger(this.filterDebounce, 0);\n /* istanbul ignore next */\n\n if (ms > 0) {\n warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n }\n\n return ms;\n },\n localFiltering: function localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true;\n },\n // For watching changes to `filteredItems` vs `localItems`\n filteredCheck: function filteredCheck() {\n var filteredItems = this.filteredItems,\n localItems = this.localItems,\n localFilter = this.localFilter;\n return {\n filteredItems: filteredItems,\n localItems: localItems,\n localFilter: localFilter\n };\n },\n // Sanitized/normalize filter-function prop\n localFilterFn: function localFilterFn() {\n // Return `null` to signal to use internal filter function\n var filterFunction = this.filterFunction;\n return hasPropFunction(filterFunction) ? filterFunction : null;\n },\n // Returns the records in `localItems` that match the filter criteria\n // Returns the original `localItems` array if not sorting\n filteredItems: function filteredItems() {\n // Note the criteria is debounced and sanitized\n var items = this.localItems,\n criteria = this.localFilter; // Resolve the filtering function, when requested\n // We prefer the provided filtering function and fallback to the internal one\n // When no filtering criteria is specified the filtering factories will return `null`\n\n var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n }\n },\n watch: {\n // Watch for debounce being set to 0\n computedFilterDebounce: function computedFilterDebounce(newValue) {\n if (!newValue && this.$_filterTimer) {\n this.clearFilterTimer();\n this.localFilter = this.filterSanitize(this.filter);\n }\n },\n // Watch for changes to the filter criteria, and debounce if necessary\n filter: {\n // We need a deep watcher in case the user passes\n // an object when using `filter-function`\n deep: true,\n handler: function handler(newCriteria) {\n var _this = this;\n\n var timeout = this.computedFilterDebounce;\n this.clearFilterTimer();\n\n if (timeout && timeout > 0) {\n // If we have a debounce time, delay the update of `localFilter`\n this.$_filterTimer = setTimeout(function () {\n _this.localFilter = _this.filterSanitize(newCriteria);\n }, timeout);\n } else {\n // Otherwise, immediately update `localFilter` with `newFilter` value\n this.localFilter = this.filterSanitize(newCriteria);\n }\n }\n },\n // Watch for changes to the filter criteria and filtered items vs `localItems`\n // Set visual state and emit events as required\n filteredCheck: function filteredCheck(_ref) {\n var filteredItems = _ref.filteredItems,\n localFilter = _ref.localFilter;\n // Determine if the dataset is filtered or not\n var isFiltered = false;\n\n if (!localFilter) {\n // If filter criteria is falsey\n isFiltered = false;\n } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n // If filter criteria is an empty array or object\n isFiltered = false;\n } else if (localFilter) {\n // If filter criteria is truthy\n isFiltered = true;\n }\n\n if (isFiltered) {\n this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n }\n\n this.isFiltered = isFiltered;\n },\n isFiltered: function isFiltered(newValue, oldValue) {\n if (newValue === false && oldValue === true) {\n // We need to emit a filtered event if `isFiltered` transitions from `true` to\n // `false` so that users can update their pagination controls\n var localItems = this.localItems;\n this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create private non-reactive props\n this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n // This will trigger any watchers/dependents\n // this.localFilter = this.filterSanitize(this.filter)\n // Set the initial filtered state in a `$nextTick()` so that\n // we trigger a filtered event if needed\n\n this.$nextTick(function () {\n _this2.isFiltered = Boolean(_this2.localFilter);\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearFilterTimer();\n },\n methods: {\n clearFilterTimer: function clearFilterTimer() {\n clearTimeout(this.$_filterTimer);\n this.$_filterTimer = null;\n },\n filterSanitize: function filterSanitize(criteria) {\n // Sanitizes filter criteria based on internal or external filtering\n if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n // If using internal filter function, which only accepts string or RegExp,\n // return '' to signify no filter\n return '';\n } // Could be a string, object or array, as needed by external filter function\n // We use `cloneDeep` to ensure we have a new copy of an object or array\n // without Vue's reactive observers\n\n\n return cloneDeep(criteria);\n },\n // Filter Function factories\n filterFnFactory: function filterFnFactory(filterFn, criteria) {\n // Wrapper factory for external filter functions\n // Wrap the provided filter-function and return a new function\n // Returns `null` if no filter-function defined or if criteria is falsey\n // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n // we have it passed, so that the caller computed prop will be reactive to changes\n // in the original filter-function (as this routine is a method)\n if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n return null;\n } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n var fn = function fn(item) {\n // Generated function returns true if the criteria matches part\n // of the serialized data, otherwise false\n return filterFn(item, criteria);\n }; // Return the wrapped function\n\n\n return fn;\n },\n defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n var _this3 = this;\n\n // Generates the default filter function, using the given filter criteria\n // Returns `null` if no criteria or criteria format not supported\n if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n // Built in filter can only support strings or RegExp criteria (at the moment)\n return null;\n } // Build the RegExp needed for filtering\n\n\n var regExp = criteria;\n\n if (isString(regExp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n\n regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n } // Generate the wrapped filter test function to use\n\n\n var fn = function fn(item) {\n // This searches all row values (and sub property values) in the entire (excluding\n // special `_` prefixed keys), because we convert the record to a space-separated\n // string containing all the value properties (recursively), even ones that are\n // not visible (not specified in this.fields)\n // Users can ignore filtering on specific fields, or on only certain fields,\n // and can optionall specify searching results of fields with formatter\n //\n // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n //\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n //\n // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n regExp.lastIndex = 0;\n return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n }; // Return the generated function\n\n\n return fn;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n}; // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n props: props,\n computed: {\n localPaging: function localPaging() {\n return this.hasProvider ? !!this.noProviderPaging : true;\n },\n paginatedItems: function paginatedItems() {\n var items = this.sortedItems || this.filteredItems || this.localItems || [];\n var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n if (this.localPaging && perPage) {\n // Grab the current page of data (which may be past filtered items limit)\n items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n } // Return the items to display in the table\n\n\n return items;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_REFRESH, EVENT_NAME_REFRESHED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { warn } from '../../../utils/warn';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\nvar ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\nexport var props = {\n // Passed to the context object\n // Not used by `` directly\n apiUrl: makeProp(PROP_TYPE_STRING),\n // Adds in 'Function' support\n items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var providerMixin = Vue.extend({\n mixins: [listenOnRootMixin],\n props: props,\n computed: {\n hasProvider: function hasProvider() {\n return isFunction(this.items);\n },\n providerTriggerContext: function providerTriggerContext() {\n // Used to trigger the provider function via a watcher. Only the fields that\n // are needed for triggering a provider update are included. Note that the\n // regular this.context is sent to the provider during fetches though, as they\n // may need all the prop info.\n var ctx = {\n apiUrl: this.apiUrl,\n filter: null,\n sortBy: null,\n sortDesc: null,\n perPage: null,\n currentPage: null\n };\n\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter;\n }\n\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy;\n ctx.sortDesc = this.localSortDesc;\n }\n\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage;\n ctx.currentPage = this.currentPage;\n }\n\n return clone(ctx);\n }\n },\n watch: {\n // Provider update triggering\n items: function items(newValue) {\n // If a new provider has been specified, trigger an update\n if (this.hasProvider || isFunction(newValue)) {\n this.$nextTick(this._providerUpdate);\n }\n },\n providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n // Trigger the provider to update as the relevant context values have changed.\n if (!looseEqual(newValue, oldValue)) {\n this.$nextTick(this._providerUpdate);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Call the items provider if necessary\n if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n // Fetch on mount if localItems is empty\n this._providerUpdate();\n } // Listen for global messages to tell us to force refresh the table\n\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n if (id === _this.id || id === _this) {\n _this.refresh();\n }\n });\n },\n methods: {\n refresh: function refresh() {\n var items = this.items,\n refresh = this.refresh; // Public Method: Force a refresh of the provider function\n\n this.$off(EVENT_NAME_REFRESHED, refresh);\n\n if (this.computedBusy) {\n // Can't force an update when forced busy by user (busy prop === true)\n if (this.localBusy && this.hasProvider) {\n // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n this.$on(EVENT_NAME_REFRESHED, refresh);\n }\n } else {\n this.clearSelected();\n\n if (this.hasProvider) {\n this.$nextTick(this._providerUpdate);\n } else {\n /* istanbul ignore next */\n this.localItems = isArray(items) ? items.slice() : [];\n }\n }\n },\n // Provider related methods\n _providerSetLocal: function _providerSetLocal(items) {\n this.localItems = isArray(items) ? items.slice() : [];\n this.localBusy = false;\n this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n if (this.id) {\n this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n }\n },\n _providerUpdate: function _providerUpdate() {\n var _this2 = this;\n\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return;\n } // If table is busy, wait until refreshed before calling again\n\n\n if (this.computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh);\n return;\n } // Set internal busy state\n\n\n this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n this.$nextTick(function () {\n try {\n // Call provider function passing it the context and optional callback\n var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n if (isPromise(data)) {\n // Provider returned Promise\n data.then(function (items) {\n // Provider resolved with items\n _this2._providerSetLocal(items);\n });\n } else if (isArray(data)) {\n // Provider returned Array data\n _this2._providerSetLocal(data);\n } else {\n /* istanbul ignore if */\n if (_this2.items.length !== 2) {\n // Check number of arguments provider function requested\n // Provider not using callback (didn't request second argument), so we clear\n // busy state as most likely there was an error in the provider function\n\n /* istanbul ignore next */\n warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n _this2.localBusy = false;\n }\n }\n } catch (e)\n /* istanbul ignore next */\n {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n _this2.localBusy = false;\n\n _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n }\n });\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED, EVENT_NAME_FILTERED, EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_SELECTED } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes, createArray } from '../../../utils/array';\nimport { identity } from '../../../utils/identity';\nimport { isArray, isNumber } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax, mathMin } from '../../../utils/math';\nimport { makeProp } from '../../../utils/props';\nimport { sanitizeRow } from './sanitize-row'; // --- Constants ---\n\nvar SELECT_MODES = ['range', 'multi', 'single']; // --- Props ---\n\nexport var props = {\n // Disable use of click handlers for row selection\n noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n return arrayIncludes(SELECT_MODES, value);\n }),\n selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n}; // --- Mixin ---\n// @vue/component\n\nexport var selectableMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n hasSelectableRowClick: function hasSelectableRowClick() {\n return this.isSelectable && !this.noSelectOnClick;\n },\n supportsSelectableRows: function supportsSelectableRows() {\n return true;\n },\n selectableHasSelection: function selectableHasSelection() {\n var selectedRows = this.selectedRows;\n return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n var isSelectable = this.isSelectable;\n return _ref = {\n 'b-table-selectable': isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n return {\n // TODO:\n // Should this attribute not be included when no-select-on-click is set\n // since this attribute implies keyboard navigation?\n 'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n };\n }\n },\n watch: {\n computedItems: function computedItems(newValue, oldValue) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n for (var i = 0; equal && i < newValue.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(newValue);\n },\n selectMode: function selectMode() {\n this.clearSelected();\n },\n hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(!newValue);\n },\n selectedRows: function selectedRows(_selectedRows, oldValue) {\n var _this = this;\n\n if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit(EVENT_NAME_ROW_SELECTED, items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers if needed\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return !!(isNumber(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n }\n\n return {};\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method](EVENT_NAME_FILTERED, this.clearSelected);\n this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, event) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable || this.noSelectOnClick) {\n // Don't do anything if table is not in selectable mode\n this.clearSelected();\n return;\n }\n\n var selectMode = this.selectMode,\n selectedLastRow = this.selectedLastRow;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (selectedLastRow > -1 && event.shiftKey) {\n // range\n for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(event.ctrlKey || event.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n this.selectedLastRow = selected ? index : -1;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n});","var _props, _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 { EVENT_NAME_HEAD_CLICKED, EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { stableSort } from '../../../utils/stable-sort';\nimport { trim } from '../../../utils/string';\nimport { defaultSortCompare } from './default-sort-compare'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SORT_BY = 'sortBy';\nvar MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\nvar MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\nvar MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\nvar SORT_DIRECTION_ASC = 'asc';\nvar SORT_DIRECTION_DESC = 'desc';\nvar SORT_DIRECTION_LAST = 'last';\nvar SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\nexport var props = (_props = {\n labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort Ascending'),\n labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort Descending'),\n noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n // Another prop that should have had a better name\n // It should be `noSortClear` (on non-sortable headers)\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n}, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n numeric: true\n})), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n return arrayIncludes(SORT_DIRECTIONS, value);\n})), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n// @vue/component\n\nexport var sortingMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n // Sorts the filtered items and returns a new array of the sorted items\n // When not sorted, the original items array will be returned\n sortedItems: function sortedItems() {\n var sortBy = this.localSortBy,\n sortDesc = this.localSortDesc,\n locale = this.sortCompareLocale,\n nullLast = this.sortNullLast,\n sortCompare = this.sortCompare,\n localSorting = this.localSorting;\n var items = (this.filteredItems || this.localItems || []).slice();\n\n var localeOptions = _objectSpread(_objectSpread({}, this.sortCompareOptions), {}, {\n usage: 'sort'\n });\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = isFunction(sortByFormatted) ?\n /* istanbul ignore next */\n sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return stableSort(items, function (a, b) {\n var result = null; // Call user provided `sortCompare` routine first\n\n if (isFunction(sortCompare)) {\n // TODO:\n // Change the `sortCompare` signature to the one of `defaultSortCompare`\n // with the next major version bump\n result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n // is not defined or returns `null`/`false`\n\n\n if (isUndefinedOrNull(result) || result === false) {\n result = defaultSortCompare(a, b, {\n sortBy: sortBy,\n formatter: formatter,\n locale: locale,\n localeOptions: localeOptions,\n nullLast: nullLast\n });\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: (_watch = {\n /* istanbul ignore next: pain in the butt to test */\n isSortable: function isSortable(newValue) {\n if (newValue) {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n } else {\n this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n }\n }, _defineProperty(_watch, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortDesc) {\n return;\n }\n\n this.localSortDesc = newValue || false;\n }), _defineProperty(_watch, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortBy) {\n return;\n }\n\n this.localSortBy = newValue || '';\n }), _defineProperty(_watch, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n // Emit update to sort-desc.sync\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n }\n }), _defineProperty(_watch, \"localSortBy\", function localSortBy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n }\n }), _watch),\n created: function created() {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, event, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n _this.localSortDesc = false;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n if (this.localSortBy === sortKey) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = sortKey; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable; // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n return {\n 'aria-sort': ariaSort\n };\n },\n sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n // A label to be placed in an `.sr-only` element in the header cell\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No label if not a sortable table\n return null;\n }\n\n var sortable = field.sortable; // The correctness of these labels is very important for screen-reader users.\n\n var labelSorting = '';\n\n if (sortable) {\n if (this.localSortBy === key) {\n // currently sorted sortable column.\n labelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n } else {\n // Not currently sorted sortable column.\n // Not using nested ternary's here for clarity/readability\n // Default for ariaLabel\n labelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n labelSorting = this.labelSortAsc;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n labelSorting = this.labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n labelSorting = this.localSortBy ? this.labelSortClear : '';\n } // Return the sr-only sort label or null if no label\n\n\n return trim(labelSorting) || null;\n }\n }\n});","import { get } from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isNumeric, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toFloat } from '../../../utils/number';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\n\nvar normalizeValue = function normalizeValue(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n }\n\n if (isNumeric(value)) {\n return toFloat(value, value);\n }\n\n return value;\n}; // Default sort compare routine\n//\n// TODO:\n// Add option to sort by multiple columns (tri-state per column,\n// plus order of columns in sort) where `sortBy` could be an array\n// of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n// or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n// Multisort will most likely be handled in `mixin-sort.js` by\n// calling this method for each sortBy\n\n\nexport var defaultSortCompare = function defaultSortCompare(a, b) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n _ref$formatter = _ref.formatter,\n formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? undefined : _ref$locale,\n _ref$localeOptions = _ref.localeOptions,\n localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n _ref$nullLast = _ref.nullLast,\n nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n // Get the value by `sortBy`\n var aa = get(a, sortBy, null);\n var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n if (isFunction(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n } // Internally normalize value\n // `null` / `undefined` => ''\n // `'0'` => `0`\n\n\n aa = normalizeValue(aa);\n bb = normalizeValue(bb);\n\n if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting `null` / `undefined` / '' last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting `null` / `undefined` / '' last\n return -1;\n } // Do localized string comparison\n\n\n return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n};","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TOP_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var topRowMixin = Vue.extend({\n methods: {\n renderTopRow: function renderTopRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-top-row',\n class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n key: 'b-top-row'\n }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n columns: fields.length,\n fields: fields\n })]);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TABLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { bottomRowMixin, props as bottomRowProps } from './helpers/mixin-bottom-row';\nimport { busyMixin, props as busyProps } from './helpers/mixin-busy';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { emptyMixin, props as emptyProps } from './helpers/mixin-empty';\nimport { filteringMixin, props as filteringProps } from './helpers/mixin-filtering';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { paginationMixin, props as paginationProps } from './helpers/mixin-pagination';\nimport { providerMixin, props as providerProps } from './helpers/mixin-provider';\nimport { selectableMixin, props as selectableProps } from './helpers/mixin-selectable';\nimport { sortingMixin, props as sortingProps } from './helpers/mixin-sorting';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead';\nimport { topRowMixin, props as topRowProps } from './helpers/mixin-top-row'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), bottomRowProps), busyProps), captionProps), colgroupProps), emptyProps), filteringProps), itemsProps), paginationProps), providerProps), selectableProps), sortingProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps), topRowProps)), NAME_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BTable = /*#__PURE__*/Vue.extend({\n name: NAME_TABLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n props: props // Render function is provided by `tableRendererMixin`\n\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_IMG } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { identity } from '../../utils/identity';\nimport { isString } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Constants --\n// Blank image with fill template\n\nvar BLANK_TEMPLATE = '' + '' + ''; // --- Helper methods ---\n\nvar makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n alt: makeProp(PROP_TYPE_STRING),\n blank: makeProp(PROP_TYPE_BOOLEAN, false),\n blankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n center: makeProp(PROP_TYPE_BOOLEAN, false),\n fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Gives fluid images class `w-100` to make them grow to fit container\n fluidGrow: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_NUMBER_STRING),\n left: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n // Possible values:\n // `false`: no rounding of corners\n // `true`: slightly rounded corners\n // 'top': top corners rounded\n // 'right': right corners rounded\n // 'bottom': bottom corners rounded\n // 'left': left corners rounded\n // 'circle': circle/oval\n // '0': force rounding off\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sizes: makeProp(PROP_TYPE_ARRAY_STRING),\n src: makeProp(PROP_TYPE_STRING),\n srcset: makeProp(PROP_TYPE_ARRAY_STRING),\n thumbnail: makeProp(PROP_TYPE_BOOLEAN, false),\n width: makeProp(PROP_TYPE_NUMBER_STRING)\n}, NAME_IMG); // --- Main component ---\n// @vue/component\n\nexport var BImg = /*#__PURE__*/Vue.extend({\n name: NAME_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data;\n var alt = props.alt,\n src = props.src,\n block = props.block,\n fluidGrow = props.fluidGrow,\n rounded = props.rounded;\n var width = toInteger(props.width) || null;\n var height = toInteger(props.height) || null;\n var align = null;\n var srcset = concat(props.srcset).filter(identity).join(',');\n var sizes = concat(props.sizes).filter(identity).join(',');\n\n if (props.blank) {\n if (!height && width) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n if (!width && !height) {\n width = 1;\n height = 1;\n } // Make a blank SVG image\n\n\n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n\n srcset = null;\n sizes = null;\n }\n\n if (props.left) {\n align = 'float-left';\n } else if (props.right) {\n align = 'float-right';\n } else if (props.center) {\n align = 'mx-auto';\n block = true;\n }\n\n return h('img', mergeData(data, {\n attrs: {\n src: src,\n alt: alt,\n width: width ? toString(width) : null,\n height: height ? toString(height) : null,\n srcset: srcset || null,\n sizes: sizes || null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || fluidGrow,\n 'w-100': fluidGrow,\n rounded: rounded === '' || rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(rounded), isString(rounded) && rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n title: makeProp(PROP_TYPE_STRING),\n titleTag: makeProp(PROP_TYPE_STRING, 'h4')\n}, NAME_CARD_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.titleTag, mergeData(data, {\n staticClass: 'card-title'\n }), children || toString(props.title));\n }\n});","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 { COMPONENT_UID_KEY, Vue } from '../../vue';\nimport { NAME_ALERT } from '../../constants/components';\nimport { EVENT_NAME_DISMISSED, EVENT_NAME_DISMISS_COUNT_DOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DISMISS } from '../../constants/slots';\nimport { requestAF } from '../../utils/dom';\nimport { isBoolean, isNumeric } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('show', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: false\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Convert `show` value to a number\n\n\nvar parseCountDown = function parseCountDown(show) {\n if (show === '' || isBoolean(show)) {\n return 0;\n }\n\n show = toInteger(show, 0);\n return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n if (show === '' || show === true) {\n return true;\n }\n\n if (toInteger(show, 0) < 1) {\n // Boolean will always return false for the above comparison\n return false;\n }\n\n return !!show;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n dismissLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n dismissible: makeProp(PROP_TYPE_BOOLEAN, false),\n fade: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING, 'info')\n})), NAME_ALERT); // --- Main component ---\n// @vue/component\n\nexport var BAlert = /*#__PURE__*/Vue.extend({\n name: NAME_ALERT,\n mixins: [modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {\n countDown: 0,\n // If initially shown, we need to set these for SSR\n localShow: parseShow(this[MODEL_PROP_NAME])\n };\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n this.countDown = parseCountDown(newValue);\n this.localShow = parseShow(newValue);\n }), _defineProperty(_watch, \"countDown\", function countDown(newValue) {\n var _this = this;\n\n this.clearCountDownInterval();\n var show = this[MODEL_PROP_NAME]; // Ignore if `show` transitions to a boolean value\n\n if (isNumeric(show)) {\n this.$emit(EVENT_NAME_DISMISS_COUNT_DOWN, newValue); // Update the v-model if needed\n\n if (show !== newValue) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n\n if (newValue > 0) {\n this.localShow = true;\n this.$_countDownTimeout = setTimeout(function () {\n _this.countDown--;\n }, 1000);\n } else {\n // Slightly delay the hide to allow any UI updates\n this.$nextTick(function () {\n requestAF(function () {\n _this.localShow = false;\n });\n });\n }\n }\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue) {\n var show = this[MODEL_PROP_NAME]; // Only emit dismissed events for dismissible or auto-dismissing alerts\n\n if (!newValue && (this.dismissible || isNumeric(show))) {\n this.$emit(EVENT_NAME_DISMISSED);\n } // Only emit booleans if we weren't passed a number via v-model\n\n\n if (!isNumeric(show) && show !== newValue) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_filterTimer = null;\n var show = this[MODEL_PROP_NAME];\n this.countDown = parseCountDown(show);\n this.localShow = parseShow(show);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearCountDownInterval();\n },\n methods: {\n dismiss: function dismiss() {\n this.clearCountDownInterval();\n this.countDown = 0;\n this.localShow = false;\n },\n clearCountDownInterval: function clearCountDownInterval() {\n clearTimeout(this.$_countDownTimeout);\n this.$_countDownTimeout = null;\n }\n },\n render: function render(h) {\n var $alert = h();\n\n if (this.localShow) {\n var dismissible = this.dismissible,\n variant = this.variant;\n var $dismissButton = h();\n\n if (dismissible) {\n // Add dismiss button\n $dismissButton = h(BButtonClose, {\n attrs: {\n 'aria-label': this.dismissLabel\n },\n on: {\n click: this.dismiss\n }\n }, [this.normalizeSlot(SLOT_NAME_DISMISS)]);\n }\n\n $alert = h('div', {\n staticClass: 'alert',\n class: _defineProperty({\n 'alert-dismissible': dismissible\n }, \"alert-\".concat(variant), variant),\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-atomic': true\n },\n key: this[COMPONENT_UID_KEY]\n }, [$dismissButton, this.normalizeSlot()]);\n }\n\n return h(BVTransition, {\n props: {\n noFade: !this.fade\n }\n }, [$alert]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_BODY } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardTitle, props as titleProps } from './card-title';\nimport { BCardSubTitle, props as subTitleProps } from './card-sub-title'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, titleProps), subTitleProps), copyProps(cardProps, prefixPropName.bind(null, 'body'))), {}, {\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n overlay: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_BODY); // --- Main component ---\n// @vue/component\n\nexport var BCardBody = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_BODY,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var bodyBgVariant = props.bodyBgVariant,\n bodyBorderVariant = props.bodyBorderVariant,\n bodyTextVariant = props.bodyTextVariant;\n var $title = h();\n\n if (props.title) {\n $title = h(BCardTitle, {\n props: pluckProps(titleProps, props)\n });\n }\n\n var $subTitle = h();\n\n if (props.subTitle) {\n $subTitle = h(BCardSubTitle, {\n props: pluckProps(subTitleProps, props),\n class: ['mb-2']\n });\n }\n\n return h(props.bodyTag, mergeData(data, {\n staticClass: 'card-body',\n class: [(_ref2 = {\n 'card-img-overlay': props.overlay\n }, _defineProperty(_ref2, \"bg-\".concat(bodyBgVariant), bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(bodyBorderVariant), bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(bodyTextVariant), bodyTextVariant), _ref2), props.bodyClass]\n }), [$title, $subTitle, children]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_FOOTER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'footer'))), {}, {\n footer: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_FOOTER); // --- Main component ---\n// @vue/component\n\nexport var BCardFooter = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_FOOTER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var footerBgVariant = props.footerBgVariant,\n footerBorderVariant = props.footerBorderVariant,\n footerTextVariant = props.footerTextVariant;\n return h(props.footerTag, mergeData(data, {\n staticClass: 'card-footer',\n class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(footerBgVariant), footerBgVariant), _defineProperty(_ref2, \"border-\".concat(footerBorderVariant), footerBorderVariant), _defineProperty(_ref2, \"text-\".concat(footerTextVariant), footerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.footerHtml, props.footer)\n }), children);\n }\n});","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};","// 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 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 ``\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 ``\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});","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';","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 , 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 at all (equivalent to a span)\n h('bdi', {\n staticClass: 'sr-only'\n }, \" (\".concat(toString(this.labelSelected), \") \")), h('bdi', this.formatDateString(this.selectedDate))] : this.labelNoDateSelected || \"\\xA0\" // ' '\n );\n $header = h('header', {\n staticClass: 'b-calendar-header',\n class: {\n 'sr-only': this.hideHeader\n },\n attrs: {\n title: this.selectedDate ? this.labelSelectedDate || null : null\n }\n }, [$header]); // Content for the date navigation buttons\n\n var navScope = {\n isRTL: isRTL\n };\n var navProps = {\n shiftV: 0.5\n };\n\n var navPrevProps = _objectSpread(_objectSpread({}, navProps), {}, {\n flipH: isRTL\n });\n\n var navNextProps = _objectSpread(_objectSpread({}, navProps), {}, {\n flipH: !isRTL\n });\n\n var $prevDecadeIcon = this.normalizeSlot(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});","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});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from '../../vue';\nimport { NAME_COL } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_COL_CLASS } from '../../constants/regex';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { memoize } from '../../utils/memoize';\nimport { assign, create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase } from '../../utils/string'; // --- Constants ---\n\nvar ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch']; // --- Helper methods ---\n// Compute a breakpoint class name\n\nvar computeBreakpoint = function computeBreakpoint(type, breakpoint, value) {\n var className = type;\n\n if (isUndefinedOrNull(value) || value === false) {\n return undefined;\n }\n\n if (breakpoint) {\n className += \"-\".concat(breakpoint);\n } // Handling the boolean style prop when accepting `[Boolean, String, Number]`\n // means Vue will not convert `` to `sm: true` for us\n // Since the default is `false`, '' indicates the prop's presence\n\n\n if (type === 'col' && (value === '' || value === true)) {\n // .col-md\n return lowerCase(className);\n } // .order-md-6\n\n\n className += \"-\".concat(value);\n return lowerCase(className);\n}; // Memoized function for better performance on generating class names\n\n\nvar computeBreakpointClass = memoize(computeBreakpoint); // Cached copy of the breakpoint prop names\n\nvar breakpointPropMap = create(null); // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n // Grab the breakpoints from the cached config (exclude the '' (xs) breakpoint)\n var breakpoints = getBreakpointsUpCached().filter(identity); // i.e. 'col-sm', 'col-md-6', 'col-lg-auto', ...\n\n var breakpointCol = breakpoints.reduce(function (props, breakpoint) {\n props[breakpoint] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n return props;\n }, create(null)); // i.e. 'offset-md-1', 'offset-lg-12', ...\n\n var breakpointOffset = breakpoints.reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'offset')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // i.e. 'order-md-1', 'order-lg-12', ...\n\n var breakpointOrder = breakpoints.reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'order')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // For loop doesn't need to check `.hasOwnProperty()`\n // when using an object created from `null`\n\n breakpointPropMap = assign(create(null), {\n col: keys(breakpointCol),\n offset: keys(breakpointOffset),\n order: keys(breakpointOrder)\n }); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, breakpointCol), breakpointOffset), breakpointOrder), {}, {\n // Flex alignment\n alignSelf: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(ALIGN_SELF_VALUES, value);\n }),\n // Generic flexbox 'col' (xs)\n col: makeProp(PROP_TYPE_BOOLEAN, false),\n // i.e. 'col-1', 'col-2', 'col-auto', ...\n cols: makeProp(PROP_TYPE_NUMBER_STRING),\n offset: makeProp(PROP_TYPE_NUMBER_STRING),\n order: makeProp(PROP_TYPE_NUMBER_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_COL);\n}; // --- Main component ---\n// We do not use Vue.extend here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BCol = {\n name: NAME_COL,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var cols = props.cols,\n offset = props.offset,\n order = props.order,\n alignSelf = props.alignSelf;\n var classList = []; // Loop through `col`, `offset`, `order` breakpoint props\n\n for (var type in breakpointPropMap) {\n // Returns colSm, offset, offsetSm, orderMd, etc.\n var _keys = breakpointPropMap[type];\n\n for (var i = 0; i < _keys.length; i++) {\n // computeBreakpoint(col, colSm => Sm, value=[String, Number, Boolean])\n var c = computeBreakpointClass(type, _keys[i].replace(type, ''), props[_keys[i]]); // If a class is returned, push it onto the array.\n\n if (c) {\n classList.push(c);\n }\n }\n }\n\n var hasColClasses = classList.some(function (className) {\n return RX_COL_CLASS.test(className);\n });\n classList.push((_classList$push = {\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: props.col || !hasColClasses && !cols\n }, _defineProperty(_classList$push, \"col-\".concat(cols), cols), _defineProperty(_classList$push, \"offset-\".concat(offset), offset), _defineProperty(_classList$push, \"order-\".concat(order), order), _defineProperty(_classList$push, \"align-self-\".concat(alignSelf), alignSelf), _classList$push));\n return h(props.tag, mergeData(data, {\n class: classList\n }), children);\n }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_HEADER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'header'))), {}, {\n header: makeProp(PROP_TYPE_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_HEADER); // --- Main component ---\n// @vue/component\n\nexport var BCardHeader = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_HEADER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var headerBgVariant = props.headerBgVariant,\n headerBorderVariant = props.headerBorderVariant,\n headerTextVariant = props.headerTextVariant;\n return h(props.headerTag, mergeData(data, {\n staticClass: 'card-header',\n class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(headerBgVariant), headerBgVariant), _defineProperty(_ref2, \"border-\".concat(headerBorderVariant), headerBorderVariant), _defineProperty(_ref2, \"text-\".concat(headerTextVariant), headerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.headerHtml, props.header)\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_SUB_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n subTitle: makeProp(PROP_TYPE_STRING),\n subTitleTag: makeProp(PROP_TYPE_STRING, 'h6'),\n subTitleTextVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_CARD_SUB_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardSubTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_SUB_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.subTitleTag, mergeData(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n }), children || toString(props.subTitle));\n }\n});","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});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TABLE_LITE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), captionProps), colgroupProps), itemsProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps)), NAME_TABLE_LITE); // --- Main component ---\n// @vue/component\n\nexport var BTableLite = /*#__PURE__*/Vue.extend({\n name: NAME_TABLE_LITE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n // These are pretty lightweight, and are useful for lightweight tables\n captionMixin, colgroupMixin],\n props: props // Render function is provided by `tableRendererMixin`\n\n});","/* Form control contextual state class computation\n *\n * Returned class is either 'is-valid' or 'is-invalid' based on the 'state' prop\n * state can be one of five values:\n * - true for is-valid\n * - false for is-invalid\n * - null for no contextual state\n */\nimport { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN } from '../constants/props';\nimport { isBoolean } from '../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Tri-state prop: true, false, null (or undefined)\n state: makeProp(PROP_TYPE_BOOLEAN, null)\n}, 'formState'); // --- Mixin ---\n// @vue/component\n\nexport var formStateMixin = Vue.extend({\n props: props,\n computed: {\n computedState: function computedState() {\n // If not a boolean, ensure that value is null\n return isBoolean(this.state) ? this.state : null;\n },\n stateClass: function stateClass() {\n var state = this.computedState;\n return state === true ? 'is-valid' : state === false ? 'is-invalid' : null;\n },\n computedAriaInvalid: function computedAriaInvalid() {\n var ariaInvalid = this.ariaInvalid;\n\n if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {\n return 'true';\n }\n\n return this.computedState === false ? 'true' : ariaInvalid;\n }\n }\n});","import { Vue } from '../vue';\nimport { NAME_CARD } from '../constants/components';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n bgVariant: makeProp(PROP_TYPE_STRING),\n borderVariant: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_CARD); // --- Mixin ---\n// @vue/component\n\nexport var cardMixin = Vue.extend({\n props: props\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n textTag: makeProp(PROP_TYPE_STRING, 'p')\n}, NAME_CARD_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BCardText = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TEXT,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.textTag, mergeData(data, {\n staticClass: 'card-text'\n }), children);\n }\n});","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});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-card',[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"4\",\"xl\":\"3\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('SearchBy')))]),_c('vs-input',{attrs:{\"name\":\"Doctor Name\",\"placeholder\":_vm.$t('DoctorName')},model:{value:(_vm.Search.DoctorName),callback:function ($$v) {_vm.$set(_vm.Search, \"DoctorName\", $$v)},expression:\"Search.DoctorName\"}})],1),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"1\",\"xl\":\"1\"}},[_c('span',{},[_vm._v(\" \"+_vm._s(_vm.$t(\"Or\"))+\" \")])]),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"4\",\"xl\":\"3\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('From')))]),_c('b-form-datepicker',{attrs:{\"placeholder\":_vm.$t('DateFrom'),\"name\":\"DateFrom\"},model:{value:(_vm.Search.DateFrom),callback:function ($$v) {_vm.$set(_vm.Search, \"DateFrom\", $$v)},expression:\"Search.DateFrom\"}})],1),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"4\",\"xl\":\"3\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('To')))]),_c('b-form-datepicker',{attrs:{\"placeholder\":_vm.$t('DateTo'),\"name\":\"DateTo\"},model:{value:(_vm.Search.DateTo),callback:function ($$v) {_vm.$set(_vm.Search, \"DateTo\", $$v)},expression:\"Search.DateTo\"}})],1),_c('div',[_c('feather-icon',{staticClass:\"mt-3 \",attrs:{\"icon\":\"SearchIcon\",\"svgClasses\":\" w-16\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.SearchPrescription()}}})],1)],1)],1),(_vm.Model.length==0)?_c('h3',[_vm._v(_vm._s(_vm.$t(\"NoDataToshow\")))]):_vm._e(),_c('div',_vm._l((_vm.FilteredList),function(item,index){return _c('b-row',{key:index},[_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"2\",\"xl\":\"2\"}},[_vm._v(\" \"+_vm._s(item.Note)+\" \")]),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"2\",\"xl\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm._f(\"formatDate\")(item.Date))+\" \")]),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"2\",\"xl\":\"2\"}}),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"2\",\"xl\":\"2\"}},[_c('div',[_c('vs-avatar',{attrs:{\"size\":\"large\",\"src\":_vm.baseURL + item.DoctorImage}})],1),_vm._v(\" \"+_vm._s(item.DoctorName)+\" \")]),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"2\",\"xl\":\"2\"}},[_c('vs-button',{staticClass:\"text-white\",attrs:{\"color\":\"primary\",\"text-color\":\"rgb(69, 74, 98)\",\"icon-pack\":\"icon icon-download\",\"icon\":\"feather\"},on:{\"click\":function($event){return _vm.Download(item, index)}}},[_vm._v(_vm._s(_vm.$t(\"Download\"))+\" \")])],1),_c('vs-divider',{staticClass:\"w-2/3\"})],1)}),1),_c('b-card',{},[_c('b-row',{staticStyle:{\"text-align\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"4\",\"xl\":\"3\"}},[_c('feather-icon',{staticClass:\"mr-0 mr-sm-50\",attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"16\",\"disabled\":this.CurrentPage == 1},on:{\"click\":function($event){return _vm.GoToFirstPage()}}}),_c('feather-icon',{staticClass:\"mr-0 mr-sm-50\",attrs:{\"icon\":\"ChevronsLeftIcon\",\"size\":\"16\",\"disabled\":this.CurrentPage == 1},on:{\"click\":function($event){return _vm.GoBack()}}})],1),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"4\",\"xl\":\"3\"}},[_vm._v(\" Page \"+_vm._s(_vm.CurrPage)+\" of \"+_vm._s(Math.ceil(_vm.Model.length / _vm.CountPerPage))+\" \")]),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"4\",\"xl\":\"3\"}},[_c('feather-icon',{staticClass:\"mr-0 mr-sm-50\",attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"16\",\"disabled\":this.CurrentPage == Math.ceil(_vm.Model.length / _vm.CountPerPage)},on:{\"click\":function($event){return _vm.GoNext()}}}),_c('feather-icon',{staticClass:\"mr-0 mr-sm-50\",attrs:{\"icon\":\"ChevronsRightIcon\",\"size\":\"16\",\"disabled\":this.CurrentPage == Math.ceil(_vm.Model.length / _vm.CountPerPage)},on:{\"click\":function($event){return _vm.GoToLastPage()}}})],1)],1)],1),_c('div',{staticClass:\"vx-row\"},[_c('div',{staticClass:\"vx-col w-full\"},[_c('div',{staticClass:\"mt-8 flex flex-wrap items-center justify-end\"},[_c('b-button',{attrs:{\"type\":\"border\",\"color\":\"danger\"},on:{\"click\":function($event){return _vm.back()}}},[_vm._v(_vm._s(_vm.$t(\"Back\")))])],1)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","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!./PrescriptionsList.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!./PrescriptionsList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PrescriptionsList.vue?vue&type=template&id=3d01a0bf&\"\nimport script from \"./PrescriptionsList.vue?vue&type=script&lang=js&\"\nexport * from \"./PrescriptionsList.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","// 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});","/*=========================================================================================\r\n File Name: moduleActivityState.js\r\n Description: Activity Module State\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\nexport default {\r\n patients: [],\r\n SurgeryAndTreatment: [],\r\n PatientReservationSurgeries: [],\r\n MonthPatientReservationSurgeries: [],\r\n pendingPatientMedicalReport:[],\r\n SurgeryDocuments:[]\r\n};\r\n","/*=========================================================================================\r\n File Name: modulePatientMutations.js\r\n Description: Patient Module Mutations\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\nexport default {\r\n ADD_ITEM(state, item) {\r\n state.patients.unshift(item);\r\n },\r\n SET_Patient(state, patients) {\r\n state.patients = patients;\r\n },\r\n SET_SurgeryAndTreatment(state, SurgeryAndTreatment) {\r\n state.SurgeryAndTreatment = SurgeryAndTreatment;\r\n },\r\n SET_SurgeryDocuments(state, SurgeryDocuments) {\r\n debugger\r\n state.SurgeryDocuments = SurgeryDocuments;\r\n },\r\n UPDATE_Patient(state, Patient) {\r\n const PatientIndex = state.patients.findIndex(p => p.ID == Patient.ID);\r\n Object.assign(state.patients[PatientIndex], Patient);\r\n },\r\n REMOVE_ITEM(state, itemId) {\r\n const ItemIndex = state.patients.findIndex(p => p.ID == itemId);\r\n state.patients.splice(ItemIndex, 1);\r\n },\r\n SET_PatientReservationSurgeries(state, PatientReservationSurgeries) {\r\n \r\n state.PatientReservationSurgeries = PatientReservationSurgeries;\r\n },\r\n SET_MonthPatientReservationSurgeries(state, PatientReservationSurgeries) {\r\n \r\n state.MonthPatientReservationSurgeries = PatientReservationSurgeries;\r\n },\r\n SET_PEND_MEDICAL_REPORT(state, MedicalReport){\r\n \r\n state.pendingPatientMedicalReport=MedicalReport\r\n \r\n }\r\n};\r\n","/*=========================================================================================\r\n File Name: modulePatientActions.js\r\n Description: Patient Module Actions\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\nimport axios from \"@/axios.js\";\r\n\r\nexport default {\r\n AddPatient({ commit }, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"/api/Patient/AddPatient\", item)\r\n .then(response => {\r\n commit(\r\n \"ADD_ITEM\",\r\n Object.assign(item, { ID: response.data.Data.ID })\r\n );\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n SearchPatients({ commit }, item) {\r\n return new Promise((resolve, reject) => {\r\n debugger\r\n axios\r\n .post(\"/api/Patient/SearchPatients\", item)\r\n .then(response => {\r\n commit(\"SET_Patient\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n UpdatePatient(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"/api/Patient/UpdatePatient\", item)\r\n .then(response => {\r\n // commit(\"UPDATE_Patient\", item);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n getPatientReservationSurgeryCalender({ commit }, item) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSurgery/SearchPatientReservationSurgerys\",\r\n item\r\n )\r\n .then(response => {\r\n commit(\"SET_MonthPatientReservationSurgeries\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n getPatientReservationSurgery({ commit }, item) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSurgery/SearchPatientReservationSurgerys\",\r\n item\r\n )\r\n .then(response => {\r\n commit(\"SET_PatientReservationSurgeries\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n UpdateListPatientMedicalReportRequest(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientMedicalReportRequest/UpdateListPatientMedicalReportRequest\",\r\n item\r\n )\r\n .then(response => {\r\n // commit(\"SET_PatientReservationSurgeries\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n UpdateListPatientReservationSessionDiagnosis(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/Patient/UpdateListPatientReservationSessionDiagnosis\",\r\n item\r\n )\r\n .then(response => {\r\n // commit(\"SET_PatientReservationSurgeries\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n UpdatePatientReservationSession(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSession/UpdatePatientReservationSession\",\r\n item\r\n )\r\n .then(response => {\r\n\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n ChangeReservationJoin(context, reservationId) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\r\n \"/API/PatientReservationSession/ChangeReservationJoin?reservationId=\"+reservationId,\r\n )\r\n .then(response => {\r\n\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n ScheduleAnotherAppintment(context, patientReservationID) {\r\n return new Promise((resolve, reject) => {\r\n axios.get(\"API/PatientReservationSession/ScheduleAnotherAppintment?patientReservationID=\" + patientReservationID)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n CancelSession(context, session) {\r\n return new Promise((resolve, reject) => {\r\n axios.post(\"API/PatientReservationSession/ChangePatientReservationSessionStatus\", session)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n ChangeStatusSession(context, session) {\r\n return new Promise((resolve, reject) => {\r\n axios.post(\"API/PatientReservationSession/ChangePatientReservationSessionStatus\", session)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n getPatientPendingList({ commit }, patientID) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\r\n \"/API/Patient/GetAllPatientPendingAppointmentAndSurgery?patientID=\" + patientID\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n AppointmentReservationPaymentDatail(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSession/AppointmentReservationPaymentDatail\",\r\n item\r\n )\r\n .then(response => {\r\n\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetAppointMentTapPayment(context, model) {\r\n return new Promise((resolve, reject) => {\r\n debugger;\r\n axios\r\n .get(\r\n \"api/PatientReservationSession/GetAppointMentTapPayment?appointmentID=\" +model.appointmentID+\"&OrderID=\"+model.OrderID )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetSurgeryTapPayment(context, model) {\r\n return new Promise((resolve, reject) => {\r\n debugger;\r\n axios\r\n .get(\r\n \"api/PatientReservationSurgery/GetSurgeryTapPayment?surgeryReservistionID=\" +model.surgeryReservistionID+\"&OrderID=\"+model.OrderID )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetPatientRedervedDoctor(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSession/GetPatientRedervedDoctor\",\r\n item\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n ProcessingPaymentDatail(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSurgery/ProcessingPaymentDatail\",\r\n item\r\n )\r\n .then(response => {\r\n\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n SurgeryPaymentDatail(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSurgery/SurgeryPaymentDatail\",\r\n item\r\n )\r\n .then(response => {\r\n\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n AddPatientReservationSurgery(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSurgery/AddPatientReservationSurgery\",\r\n item\r\n )\r\n .then(response => {\r\n // commit(\"SET_PatientReservationSurgeries\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n AddPatientMedicalDocument(context, item) {\r\n debugger\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/Patient/AddPatientMedicalDocument\",\r\n item\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n DeletePatientMedicalDocument(context, item) {\r\n debugger\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/Patient/DeletePatientMedicalDocument\",\r\n item\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n AddListPatientMedicalDocument(context, item) {\r\n debugger\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/Patient/AddListPatientMedicalDocument\",\r\n item\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetPatient({ commit }, itemid) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\"/api/Patient/GetPatientByID?patientID=\" + itemid)\r\n .then(response => {\r\n resolve(response);\r\n\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetPatientForMainData({ commit }, itemid) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\"/api/Patient/GetPatientForMainData?patientID=\" + itemid)\r\n .then(response => {\r\n resolve(response);\r\n\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetAllPatientMedicalReports(context, itemid) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"/api/Patient/GetAllPatientMedicalReports?patientID=\" + itemid)\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n\r\n GetAllProfilePatientMedicalReports(context, itemid) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"/api/Patient/GetAllProfilePatientMedicalReports?patientID=\" + itemid)\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n \r\n DeletePatient(context, item) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\"/api/Patient/DeletePatient?id=\" + item)\r\n .then(response => {\r\n // commit(\"REMOVE_ITEM\", item.ID);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n SearchPatientCancelledReservationSessions(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSession/SearchPatientCancelledReservationSessions\",\r\n item\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n SearchPatientReservationSessions(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSession/SearchPatientReservationSessions\",\r\n item\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n SearchReservationSessionPrescriptions(context, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientReservationSessionPrescription/SearchPatientReservationSessionPrescriptions\",\r\n item\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n GetPatientReservationSessionPrescription({ commit }, patientReservationID) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\r\n \"/API/PatientReservationSessionPrescription/GetPatientReservationSessionPrescription?patientReservationID=\" + patientReservationID\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetAllUserNotificationSettings({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\"/API/UserNotificationSetting/GetAllUserNotificationSettings\")\r\n .then(response => {\r\n commit(\"SET_Patient\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetUserNotificationSettings({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\"/API/UserNotificationSetting/GetUserNotificationSettings\")\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetPatientReservationSurgery(context, ID) { \r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\r\n \"/API/PatientReservationSurgery/GetPatientReservationSurgery?reservationSurgeryID=\" +\r\n ID\r\n )\r\n .then(response => {\r\n // commit(\"SET_Patient\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetHospitalSurgery(context, ID) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\r\n \"/API/HospitalSurgery/GetHospitalSurgery?ID=\" +\r\n ID\r\n )\r\n .then(response => {\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n }, \r\n GetSurgeryDocuments({ commit }, ID) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\r\n \"/API/PatientReservationSurgery/GetPatientReservationSurgeryDocuments?reservationSurgeryID=\" +\r\n ID\r\n )\r\n .then(response => {\r\n debugger\r\n commit(\"SET_SurgeryDocuments\", response.data.Data)\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n UpdateUserNotificationSetting(context, Item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"/API/UserNotificationSetting/UpdateUserNotificationSetting\", Item)\r\n .then(response => {\r\n\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n AddUserNotificationSetting(context, Item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"/API/UserNotificationSetting/AddUserNotificationSetting\", Item)\r\n .then(response => {\r\n\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n SearchPatientMedicalHistoryReports(context, Item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientMedicalHistoryReport/SearchPatientMedicalHistoryReports\",\r\n Item\r\n )\r\n .then(response => {\r\n // commit(\"SET_Patient\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n SearchSurgeryAndTreatment({ commit }, Item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientMedicalHistoryReport/SearchPatientMedicalHistoryReports\",\r\n Item\r\n )\r\n .then(response => {\r\n commit(\"SET_SurgeryAndTreatment\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n AddPatientMedicalHistoryReport(context, Item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientMedicalHistoryReport/AddPatientMedicalHistoryReport\",\r\n Item\r\n )\r\n .then(response => {\r\n // commit(\"SET_Patient\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n AddPatientMedicalReportRequest(context, Item) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n \"/API/PatientMedicalReportRequest/AddPatientMedicalReportRequest\",\r\n Item\r\n )\r\n .then(response => {\r\n // commit(\"SET_Patient\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n PatientMedicalReportRequest({ commit }, item) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"/api/PatientMedicalReportRequest/SearchPatientMedicalReportRequests\", item)\r\n .then(response => {\r\n debugger\r\n response.data.Message\r\n commit(\"SET_PEND_MEDICAL_REPORT\", response.data.Data);\r\n debugger\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n debugger\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetPatientMedicalHoistory(context, ID) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\r\n \"/API/PatientMedicalHistory/GetPatientMedicalHistory/?patientId=\" +\r\n ID\r\n )\r\n .then(response => {\r\n // commit(\"SET_Patient\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n SendInvoiceEmail({ commit }, item) {\r\n debugger\r\n return new Promise((resolve, reject) => {\r\n axios.post(\"/api/Patient/SendInvoiceEmail\",\r\n item)\r\n .then((response) => {\r\n\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n\r\n\r\n GetGeneralSetting({ commit }) {\r\n debugger\r\n return new Promise((resolve, reject) => {\r\n axios.get(\"/api/Setting/GetGeneralSetting\")\r\n .then((response) => {\r\n\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n \r\n\r\n};","/*=========================================================================================\r\n File Name: moduleCategoryAssessmentGetters.js\r\n Description: CategoryAssessment Module Getters\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\n\r\nexport default {\r\n \r\n}\r\n","/*=========================================================================================\r\n File Name: modulePatient.js\r\n Description: Patient Module\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\n\r\nimport state from './modulePatientState.js'\r\nimport mutations from './modulePatientMutations.js'\r\nimport actions from './modulePatientActions.js'\r\nimport getters from './modulePatientGetters.js'\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n state: state,\r\n mutations: mutations,\r\n actions: actions,\r\n getters: getters\r\n}\r\n"],"sourceRoot":""}