(self["webpackChunkcalendar"] = self["webpackChunkcalendar"] || []).push([["dashboard-lazy"],{ /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=script&lang=js": /*!*************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=script&lang=js ***! \*************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue_dashboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue-dashboard */ "./node_modules/@nextcloud/vue-dashboard/dist/vue-dashboard.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_CalendarBlankOutline_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/CalendarBlankOutline.vue */ "./node_modules/vue-material-design-icons/CalendarBlankOutline.vue"); /* harmony import */ var vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/Check.vue */ "./node_modules/vue-material-design-icons/Check.vue"); /* harmony import */ var vue_material_design_icons_CheckboxBlankOutline_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/CheckboxBlankOutline.vue */ "./node_modules/vue-material-design-icons/CheckboxBlankOutline.vue"); /* harmony import */ var _nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @nextcloud/initial-state */ "./node_modules/@nextcloud/initial-state/dist/index.es.mjs"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); /* harmony import */ var p_limit__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! p-limit */ "./node_modules/p-limit/index.js"); /* harmony import */ var _fullcalendar_eventSources_eventSourceFunction_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../fullcalendar/eventSources/eventSourceFunction.js */ "./src/fullcalendar/eventSources/eventSourceFunction.js"); /* harmony import */ var _utils_moment_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/moment.js */ "./src/utils/moment.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'Dashboard', components: { DashboardWidget: _nextcloud_vue_dashboard__WEBPACK_IMPORTED_MODULE_0__.DashboardWidget, DashboardWidgetItem: _nextcloud_vue_dashboard__WEBPACK_IMPORTED_MODULE_0__.DashboardWidgetItem, NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcButton, EmptyContent: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcEmptyContent, EmptyCalendar: vue_material_design_icons_CalendarBlankOutline_vue__WEBPACK_IMPORTED_MODULE_2__["default"], IconCheck: vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_3__["default"], IconCheckbox: vue_material_design_icons_CheckboxBlankOutline_vue__WEBPACK_IMPORTED_MODULE_4__["default"] }, data() { return { events: null, locale: 'en', imagePath: (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_7__.imagePath)('calendar', 'illustrations/calendar'), loading: true, now: (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_9__.dateFactory)() }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_14__.mapGetters)({ timezoneObject: 'getResolvedTimezoneObject' }), /** * Format loaded events * * @return {Array} */ items() { if (!Array.isArray(this.events) || this.events.length === 0) { return []; } const firstEvent = this.events[0]; const endOfToday = (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_6__["default"])(this.now).endOf('day'); if (endOfToday.isBefore(firstEvent.startDate)) { return [{ isEmptyItem: true }].concat(this.events.slice(0, 4)); } return this.events; }, /** * Redirects to the new event route * * @return {string} */ clickStartNew() { return (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_7__.generateUrl)('apps/calendar') + '/new'; } }, mounted() { this.initialize(); }, methods: { /** * Initialize the widget */ async initialize() { const start = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_9__.dateFactory)(); const end = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_9__.dateFactory)(); end.setDate(end.getDate() + 14); const startOfToday = (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_6__["default"])(start).startOf('day').toDate(); await this.initializeEnvironment(); const expandedEvents = await this.fetchExpandedEvents(start, end); this.events = await this.formatEvents(expandedEvents, startOfToday); this.loading = false; }, /** * Initialize everything necessary, * before we can fetch events * * @return {Promise} */ async initializeEnvironment() { await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_8__.initializeClientForUserView)(); await this.$store.dispatch('fetchCurrentUserPrincipal'); await this.$store.dispatch('loadCollections'); const { show_tasks: showTasks, timezone } = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_5__.loadState)('calendar', 'dashboard_data'); const locale = await (0,_utils_moment_js__WEBPACK_IMPORTED_MODULE_12__["default"])(); this.$store.commit('loadSettingsFromServer', { timezone, showTasks }); this.$store.commit('setMomentLocale', { locale }); }, /** * Fetch events * * @param {Date} from Start of time-range * @param {Date} to End of time-range * @return {Promise} */ async fetchExpandedEvents(from, to) { const limit = (0,p_limit__WEBPACK_IMPORTED_MODULE_10__["default"])(10); const fetchEventPromises = []; for (const calendar of this.$store.getters.enabledCalendars) { fetchEventPromises.push(limit(async () => { let timeRangeId; try { timeRangeId = await this.$store.dispatch('getEventsFromCalendarInTimeRange', { calendar, from, to }); } catch (e) { return []; } const calendarObjects = this.$store.getters.getCalendarObjectsByTimeRangeId(timeRangeId); return (0,_fullcalendar_eventSources_eventSourceFunction_js__WEBPACK_IMPORTED_MODULE_11__.eventSourceFunction)(calendarObjects, calendar, from, to, this.timezoneObject); })); } const expandedEvents = await Promise.all(fetchEventPromises); return expandedEvents.flat(); }, /** * @param {object[]} expandedEvents Array of fullcalendar events * @param {Date} filterBefore filter events that start before date * @return {object[]} */ formatEvents(expandedEvents, filterBefore) { return expandedEvents.sort((a, b) => a.start.getTime() - b.start.getTime()).filter(event => !event.classNames.includes('fc-event-nc-task-completed')).filter(event => !event.classNames.includes('fc-event-nc-cancelled')).filter(event => filterBefore.getTime() <= event.start.getTime()).slice(0, 7).map(event => ({ isEmptyItem: false, componentName: event.extendedProps.objectType, targetUrl: event.extendedProps.objectType === 'VEVENT' ? this.getCalendarAppUrl(event) : this.getTasksAppUrl(event), subText: this.formatSubtext(event), mainText: event.title, startDate: event.start, calendarColor: this.$store.state.calendars.calendarsById[event.extendedProps.calendarId].color, calendarDisplayName: this.$store.state.calendars.calendarsById[event.extendedProps.calendarId].displayname })); }, /** * @param {object} event The full-calendar formatted event * @return {string} */ formatSubtext(event) { const locale = this.$store.state.settings.momentLocale; if (event.allDay) { return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_6__["default"])(event.start).locale(locale).calendar(null, { // TRANSLATORS Please translate only the text in brackets and keep the brackets! sameDay: t('calendar', '[Today]'), // TRANSLATORS Please translate only the text in brackets and keep the brackets! nextDay: t('calendar', '[Tomorrow]'), nextWeek: 'dddd', // TRANSLATORS Please translate only the text in brackets and keep the brackets! lastDay: t('calendar', '[Yesterday]'), // TRANSLATORS Please translate only the text in brackets and keep the brackets! lastWeek: t('calendar', '[Last] dddd'), sameElse: () => '[replace-from-now]' }).replace('replace-from-now', (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_6__["default"])(event.start).locale(locale).fromNow()); } else { const start = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_13__.DateTimeValue.fromJSDate(event.start).getInTimezone(this.timezoneObject); const utcOffset = start.utcOffset() / 60; return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_6__["default"])(event.start).utcOffset(utcOffset).locale(locale).calendar(null, { sameElse: () => '[replace-from-now]' }).replace('replace-from-now', (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_6__["default"])(event.start).utcOffset(utcOffset).locale(locale).fromNow()); } }, /** * @param {object} data The data destructuring object * @param {object} data.extendedProps Extended Properties of the FC object * @return {string} */ getCalendarAppUrl(_ref) { let { extendedProps } = _ref; return (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_7__.generateUrl)('apps/calendar') + '/edit/' + extendedProps.objectId + '/' + extendedProps.recurrenceId; }, /** * @param {object} data The data destructuring object * @param {object} data.extendedProps Extended Properties of the FC object * @return {string} */ getTasksAppUrl(_ref2) { let { extendedProps } = _ref2; const davUrlParts = extendedProps.davUrl.split('/'); const taskId = davUrlParts.pop(); const calendarId = davUrlParts.pop(); return (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_7__.generateUrl)('apps/tasks') + "/#/calendars/".concat(calendarId, "/tasks/").concat(taskId); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=template&id=22ba47ca": /*!************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=template&id=22ba47ca ***! \************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("DashboardWidget", { attrs: { id: "calendar_panel", items: _vm.items, loading: _vm.loading }, scopedSlots: _vm._u([{ key: "default", fn: function (_ref) { let { item } = _ref; return [item.isEmptyItem ? _c("EmptyContent", { staticClass: "half-screen", attrs: { id: "calendar-widget-empty-content", name: _vm.t("calendar", "No more events today") }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("IconCheck", { attrs: { size: 67 } })]; }, proxy: true }], null, true) }) : _c("DashboardWidgetItem", { attrs: { "main-text": item.mainText, "sub-text": item.subText, "target-url": item.targetUrl }, scopedSlots: _vm._u([{ key: "avatar", fn: function () { return [item.componentName === "VEVENT" ? _c("div", { staticClass: "calendar-dot", style: { "background-color": item.calendarColor }, attrs: { name: item.calendarDisplayName } }) : _c("IconCheckbox", { attrs: { "fill-color": item.calendarColor } })]; }, proxy: true }], null, true) })]; } }, { key: "empty-content", fn: function () { return [_c("EmptyContent", { attrs: { id: "calendar-widget-empty-content", name: _vm.t("calendar", "No upcoming events") }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("EmptyCalendar")]; }, proxy: true }]) }), _vm._v(" "), _c("div", { staticClass: "empty-label" }, [_c("NcButton", { attrs: { type: "secondary", href: _vm.clickStartNew } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Create a new event")) + "\n\t\t\t")])], 1)]; }, proxy: true }]) }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss": /*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss ***! \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `#calendar_panel .calendar-dot { flex-shrink: 0; height: 1rem; width: 1rem; margin-top: 0.2rem; border-radius: 50%; } #calendar_panel #calendar-widget-empty-content { text-align: center; margin-top: 5vh; } #calendar_panel #calendar-widget-empty-content.half-screen { margin-top: 0; height: 120px; margin-bottom: 2vh; } #calendar_panel .empty-label { display: flex; justify-content: center; margin-top: 5vh; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./src/views/Dashboard.vue": /*!*********************************!*\ !*** ./src/views/Dashboard.vue ***! \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _Dashboard_vue_vue_type_template_id_22ba47ca__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Dashboard.vue?vue&type=template&id=22ba47ca */ "./src/views/Dashboard.vue?vue&type=template&id=22ba47ca"); /* harmony import */ var _Dashboard_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Dashboard.vue?vue&type=script&lang=js */ "./src/views/Dashboard.vue?vue&type=script&lang=js"); /* harmony import */ var _Dashboard_vue_vue_type_style_index_0_id_22ba47ca_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss */ "./src/views/Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss"); /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); ; /* normalize component */ var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( _Dashboard_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], _Dashboard_vue_vue_type_template_id_22ba47ca__WEBPACK_IMPORTED_MODULE_0__.render, _Dashboard_vue_vue_type_template_id_22ba47ca__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, false, null, null, null ) /* hot reload */ if (false) { var api; } component.options.__file = "src/views/Dashboard.vue" /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); /***/ }), /***/ "./src/views/Dashboard.vue?vue&type=script&lang=js": /*!*********************************************************!*\ !*** ./src/views/Dashboard.vue?vue&type=script&lang=js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=script&lang=js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); /***/ }), /***/ "./src/views/Dashboard.vue?vue&type=template&id=22ba47ca": /*!***************************************************************!*\ !*** ./src/views/Dashboard.vue?vue&type=template&id=22ba47ca ***! \***************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_template_id_22ba47ca__WEBPACK_IMPORTED_MODULE_0__.render), /* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_template_id_22ba47ca__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) /* harmony export */ }); /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_template_id_22ba47ca__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=template&id=22ba47ca */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=template&id=22ba47ca"); /***/ }), /***/ "./src/views/Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss": /*!******************************************************************************!*\ !*** ./src/views/Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_id_22ba47ca_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/resolve-url-loader/index.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss */ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss"); /* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_id_22ba47ca_lang_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_id_22ba47ca_lang_scss__WEBPACK_IMPORTED_MODULE_0__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_id_22ba47ca_lang_scss__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Dashboard_vue_vue_type_style_index_0_id_22ba47ca_lang_scss__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /***/ }), /***/ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss": /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Dashboard.vue?vue&type=style&index=0&id=22ba47ca&lang=scss ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // style-loader: Adds some css to the DOM by adding a