/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (function() { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./node_modules/@stencil/core/internal/client lazy recursive ^\\.\\/.*\\.entry\\.js.*$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ referencedExports: , ":
/*!***************************************************************************************************************************************************************************!*\
!*** ./node_modules/@stencil/core/internal/client/ lazy ^\.\/.*\.entry\.js.*$ include: \.entry\.js$ exclude: \.system\.entry\.js$ referencedExports: , namespace object ***!
\***************************************************************************************************************************************************************************/
/***/ (function(module) {
eval("{function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./node_modules/@stencil/core/internal/client lazy recursive ^\\\\.\\\\/.*\\\\.entry\\\\.js.*$ include: \\\\.entry\\\\.js$ exclude: \\\\.system\\\\.entry\\\\.js$ referencedExports: , \";\nmodule.exports = webpackEmptyAsyncContext;\n\n//# sourceURL=webpack://jandl/./node_modules/@stencil/core/internal/client/_lazy_^\\.\\/.*\\.entry\\.js.*$_include:_\\.entry\\.js$_exclude:_\\.system\\.entry\\.js$_referencedExports:_,__namespace_object?\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app/_config/App.vue?vue&type=script&lang=js":
/*!**********************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app/_config/App.vue?vue&type=script&lang=js ***!
\**********************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _plugins_tm_modal_team_z_delete_team_modal_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/team/z-delete-team-modal.vue */ \"./src/plugins/tm@modal/team/z-delete-team-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_team_z_team_modal_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@modal/team/z-team-modal.vue */ \"./src/plugins/tm@modal/team/z-team-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_task_z_delete_task_modal_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/task/z-delete-task-modal.vue */ \"./src/plugins/tm@modal/task/z-delete-task-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_task_z_delete_timeblock_modal_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/tm@modal/task/z-delete-timeblock-modal.vue */ \"./src/plugins/tm@modal/task/z-delete-timeblock-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_task_z_task_modal_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@modal/task/z-task-modal.vue */ \"./src/plugins/tm@modal/task/z-task-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_blocker_z_delete_blocker_modal_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/tm@modal/blocker/z-delete-blocker-modal.vue */ \"./src/plugins/tm@modal/blocker/z-delete-blocker-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_task_z_complete_task_modal_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@modal/task/z-complete-task-modal.vue */ \"./src/plugins/tm@modal/task/z-complete-task-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_master_task_z_complete_master_task_modal_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@modal/master-task/z-complete-master-task-modal.vue */ \"./src/plugins/tm@modal/master-task/z-complete-master-task-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_task_z_task_add_time_modal_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/plugins/tm@modal/task/z-task-add-time-modal.vue */ \"./src/plugins/tm@modal/task/z-task-add-time-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_blocker_z_blocker_modal_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/plugins/tm@modal/blocker/z-blocker-modal.vue */ \"./src/plugins/tm@modal/blocker/z-blocker-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_master_task_z_delete_master_task_modal_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/plugins/tm@modal/master-task/z-delete-master-task-modal.vue */ \"./src/plugins/tm@modal/master-task/z-delete-master-task-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_master_task_z_master_task_modal_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/plugins/tm@modal/master-task/z-master-task-modal.vue */ \"./src/plugins/tm@modal/master-task/z-master-task-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_master_task_z_delete_team_member_modal_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@modal/master-task/z-delete-team-member-modal.vue */ \"./src/plugins/tm@modal/master-task/z-delete-team-member-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_task_cell_z_show_menu_modal_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/plugins/tm@modal/task-cell/z-show-menu-modal.vue */ \"./src/plugins/tm@modal/task-cell/z-show-menu-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_task_z_unable_to_edit_office_task_modal_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/plugins/tm@modal/task/z-unable-to-edit-office-task-modal.vue */ \"./src/plugins/tm@modal/task/z-unable-to-edit-office-task-modal.vue\");\n/* harmony import */ var _plugins_tm_modal_task_z_unable_to_complete_task_modal_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue */ \"./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ZDeleteTeamModal: _plugins_tm_modal_team_z_delete_team_modal_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ZTeamModal: _plugins_tm_modal_team_z_team_modal_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ZDeleteTaskModal: _plugins_tm_modal_task_z_delete_task_modal_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n ZDeleteBlockerModal: _plugins_tm_modal_blocker_z_delete_blocker_modal_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n ZTaskModal: _plugins_tm_modal_task_z_task_modal_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n ZMasterTaskModal: _plugins_tm_modal_master_task_z_master_task_modal_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n ZCompleteTaskModal: _plugins_tm_modal_task_z_complete_task_modal_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n ZTaskAddTimeModal: _plugins_tm_modal_task_z_task_add_time_modal_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n ZBlockerModal: _plugins_tm_modal_blocker_z_blocker_modal_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n ZDeleteMasterTaskModal: _plugins_tm_modal_master_task_z_delete_master_task_modal_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n ZDeleteTeamMemberModal: _plugins_tm_modal_master_task_z_delete_team_member_modal_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n ZShowMenuModal: _plugins_tm_modal_task_cell_z_show_menu_modal_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n ZCompleteMasterTaskModal: _plugins_tm_modal_master_task_z_complete_master_task_modal_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n ZDeleteTimeBlockModal: _plugins_tm_modal_task_z_delete_timeblock_modal_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ZUnableToEditOfficeTaskModal: _plugins_tm_modal_task_z_unable_to_edit_office_task_modal_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n ZUnableToCompleteTaskModal: _plugins_tm_modal_task_z_unable_to_complete_task_modal_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n },\n mounted() {\n this.$events.on('show-menu-modal', data => {\n this.$refs['z-show-menu-modal'].showModal(data);\n });\n this.$events.on('show-delete-team-modal', ({\n team\n }) => {\n this.$refs['z-delete-team-modal'].showModal({\n team\n });\n });\n this.$events.on('show-team-modal', ({\n team\n }) => {\n this.$refs['z-team-modal'].showModal({\n team\n });\n });\n this.$events.on('show-delete-task-modal', ({\n subtask\n }) => {\n this.$refs['z-delete-task-modal'].showModal({\n subtask\n });\n });\n this.$events.on('show-delete-timeblock-modal', ({\n subtask\n }) => {\n this.$refs['z-delete-timeblock-modal'].showModal({\n subtask\n });\n });\n this.$events.on('show-delete-blocker-modal', ({\n blocker\n }) => {\n this.$refs['z-delete-blocker-modal'].showModal({\n blocker\n });\n });\n this.$events.on('show-delete-master-task-modal', ({\n mastertask\n }) => {\n this.$refs['z-delete-master-task-modal'].showModal({\n mastertask\n });\n });\n this.$events.on('show-delete-team-member-modal', ({\n member,\n team\n }) => {\n this.$refs['z-delete-team-member-modal'].showModal({\n member,\n team\n });\n });\n this.$events.on('show-subtask-modal', ({\n subtask,\n editMode,\n mastertask\n }) => {\n if (subtask && subtask.id) {\n const id = subtask.id;\n this.$router.push({\n query: {\n 'subtask': id\n }\n });\n }\n this.$refs['z-task-modal'].showModal({\n subtask,\n editMode,\n mastertask\n });\n });\n this.$events.on('show-mastertask-modal', ({\n mastertask,\n editMode\n }) => {\n if (mastertask && mastertask.id) {\n const id = mastertask.id;\n this.$router.push({\n query: {\n 'mastertask': id\n }\n });\n }\n this.$refs['z-master-task-modal'].showModal({\n mastertask,\n editMode\n });\n });\n this.$events.on('show-complete-task-modal', ({\n subtask\n }) => {\n this.$refs['z-complete-task-modal'].showModal({\n subtask\n });\n });\n this.$events.on('show-complete-master-task-modal', ({\n mastertask\n }) => {\n this.$refs['z-complete-master-task-modal'].showModal({\n mastertask\n });\n });\n this.$events.on('show-blocker-modal', ({\n blocker = {}\n }) => {\n this.$refs['z-blocker-modal'].showModal({\n blocker\n });\n });\n this.$events.on('show-task-add-time-modal', ({\n subtask\n }) => {\n this.$refs['z-task-add-time-modal'].showModal({\n subtask\n });\n });\n this.$events.on('on-subtask-edited', () => {\n this.$store.dispatch('tm/reloadSubtasks');\n });\n this.$events.on('on-mastertask-edited', () => {\n this.$store.dispatch('tm/reloadMastertasks');\n });\n this.$events.on('on-mastertask-deleted', () => {\n this.$store.dispatch('tm/reloadMastertasks');\n });\n this.$events.on('show-unable-to-edit-office-task-modal', ({\n mode\n }) => {\n this.$refs['z-unable-to-edit-office-task-modal'].showModal({\n mode\n });\n });\n this.$events.on('show-unable-to-complete-task-modal', ({\n subtask\n }) => {\n this.$refs['z-unable-to-complete-task-modal'].showModal({\n subtask\n });\n });\n this._showModalsAfterInicialization();\n },\n methods: {\n onTeamUpdate(team) {\n this.$events.emit('on-team-update', team);\n },\n onTaskDeleted(task) {\n this.$events.emit('on-subtask-deleted', task);\n },\n onBlockerDeleted(task) {\n this.$events.emit('on-blocker-deleted', task);\n },\n onTaskEdited(task) {\n this.$events.emit('on-subtask-edited', task);\n },\n onMasterTaskDeleted(mastertask) {\n this.$events.emit('on-mastertask-deleted', mastertask);\n },\n onMasterTaskEdited(mastertask) {\n this.$events.emit('on-mastertask-edited', mastertask);\n },\n _showModalsAfterInicialization(repeat = 0) {\n setTimeout(() => {\n if (repeat > 50) return this.$router.push({\n name: this.$route.name\n });else if (!this.$store.getters['tm/isInitialized']) return this._showModalsAfterInicialization(repeat + 1);else if (this.$route.query['mastertask']) return this.$events.emit('show-mastertask-modal', {\n mastertask: {\n id: this.$route.query['mastertask']\n },\n editMode: false\n });else if (this.$route.query['subtask']) return this.$events.emit('show-subtask-modal', {\n subtask: {\n id: this.$route.query['subtask']\n },\n editMode: false\n });\n }, 300);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/app/_config/App.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/all-day-bar.vue?vue&type=script&lang=js":
/*!*************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/all-day-bar.vue?vue&type=script&lang=js ***!
\*************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cell_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cell.vue */ \"./src/plugins/app@vendor/vue-cal/cell.vue\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inject: ['vuecal', 'view', 'editEvents'],\n components: {\n 'vuecal-cell': _cell_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n },\n props: {\n // Vue-cal main component options (props).\n options: {\n type: Object,\n required: true\n },\n cells: {\n type: Array,\n required: true\n },\n label: {\n type: String,\n required: true\n },\n daySplits: {\n type: Array,\n default: () => []\n },\n shortEvents: {\n type: Boolean,\n default: true\n },\n height: {\n type: String,\n default: ''\n },\n cellOrSplitMinWidth: {\n type: Number,\n default: null\n }\n },\n computed: {\n hasCellOrSplitWidth() {\n return !!(this.options.minCellWidth || this.daySplits.length && this.options.minSplitWidth);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/all-day-bar.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/cell.vue?vue&type=script&lang=js":
/*!******************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/cell.vue?vue&type=script&lang=js ***!
\******************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _event_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./event.vue */ \"./src/plugins/app@vendor/vue-cal/event.vue\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inject: ['vuecal', 'utils', 'modules', 'view', 'domEvents'],\n components: {\n Event: _event_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n },\n props: {\n // Vue-cal main component options (props).\n options: {\n type: Object,\n default: () => ({})\n },\n editEvents: {\n type: Object,\n required: true\n },\n data: {\n type: Object,\n required: true\n },\n cellSplits: {\n type: Array,\n default: () => []\n },\n minTimestamp: {\n type: [Number, null],\n default: null\n },\n maxTimestamp: {\n type: [Number, null],\n default: null\n },\n cellWidth: {\n type: [Number, Boolean],\n default: false\n },\n allDay: {\n type: Boolean,\n default: false\n }\n },\n data: () => ({\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n cellOverlaps: {},\n cellOverlapsStreak: 1,\n // Largest amount of simultaneous events in cell.\n // On mouse down, save the time at cursor so it can be reused on cell focus event\n // where there is no cursor coords.\n timeAtCursor: null,\n highlighted: false,\n // On event drag over.\n highlightedSplit: null\n }),\n methods: {\n getSplitAtCursor({\n target\n }) {\n const targetIsSplit = target.classList.contains('vuecal__cell-split');\n let split = targetIsSplit ? target : this.vuecal.findAncestor(target, 'vuecal__cell-split');\n if (split) {\n split = split.attributes['data-split'].value;\n // Convert to a numeric value if split id is a number.\n if (parseInt(split).toString() === split.toString()) split = parseInt(split);\n }\n return split || null;\n },\n splitClasses(split) {\n return {\n 'vuecal__cell-split': true,\n 'vuecal__cell-split--highlighted': this.highlightedSplit === split.id,\n 'vuecal__cell-split--weekend': split.isWeekend,\n [split.class]: !!split.class\n };\n },\n checkCellOverlappingEvents() {\n // If splits, checkCellOverlappingEvents() is called from within computed splits.\n if (this.options.time && this.eventsCount && !this.splitsCount) {\n if (this.eventsCount === 1) {\n this.cellOverlaps = [];\n this.cellOverlapsStreak = 1;\n }\n // If only 1 event remains re-init the overlaps.\n else [this.cellOverlaps, this.cellOverlapsStreak] = this.utils.event.checkCellOverlappingEvents(this.events, this.options);\n }\n },\n isDOMElementAnEvent(el) {\n return this.vuecal.isDOMElementAnEvent(el);\n },\n /**\n * Select a cell and go to narrower view on double click or single click according to vuecalProps option.\n */\n selectCell(DOMEvent, force = false) {\n // If splitting days, also return the clicked split on cell click when emitting event.\n const split = this.splitsCount ? this.getSplitAtCursor(DOMEvent) : null;\n this.utils.cell.selectCell(force, this.timeAtCursor, split);\n this.timeAtCursor = null;\n },\n onCellkeyPressEnter(DOMEvent) {\n if (!this.isSelected) this.onCellFocus(DOMEvent);\n\n // If splitting days, also return the clicked split on cell keypress when emitting event.\n const split = this.splitsCount ? this.getSplitAtCursor(DOMEvent) : null;\n this.utils.cell.keyPressEnterCell(this.timeAtCursor, split);\n this.timeAtCursor = null;\n },\n /**\n * On cell focus, from tab key or from mousedown, highlight the cell and emit\n * the cell-focus event with the date of the cell start when focusing from tab or\n * the date & time at cursor if click/touch.\n */\n onCellFocus(DOMEvent) {\n if (!this.isSelected && !this.isDisabled) {\n this.isSelected = this.data.startDate; // Highlight the cell.\n\n // If splitting days, also return the clicked split on cell focus when emitting event.\n const split = this.splitsCount ? this.getSplitAtCursor(DOMEvent) : null;\n\n // Cell-focus event returns the cell start date (at midnight) if triggered from tab key,\n // or cursor coords time if clicked.\n const date = this.timeAtCursor || this.data.startDate;\n this.vuecal.$emit('cell-focus', split ? {\n date,\n split\n } : date);\n }\n },\n onCellMouseDown(DOMEvent, split = null, touch = false) {\n // Prevent a double mouse down on touch devices.\n if ('ontouchstart' in window && !touch) return false;\n if (!this.isSelected) this.onCellFocus(DOMEvent);\n const {\n clickHoldACell,\n focusAnEvent\n } = this.domEvents;\n // Reinit the click trigger on each mousedown.\n // In some cases we explicitly set this flag to prevent the click event to trigger,\n // and cancel event creation.\n this.domEvents.cancelClickEventCreation = false;\n // Also reinit this var on each mousedown.\n clickHoldACell.eventCreated = false;\n this.timeAtCursor = new Date(this.data.startDate);\n const {\n minutes,\n cursorCoords: {\n y\n }\n } = this.vuecal.minutesAtCursor(DOMEvent);\n this.timeAtCursor.setMinutes(minutes);\n const mouseDownOnEvent = this.isDOMElementAnEvent(DOMEvent.target);\n // Unfocus an event if any is focused and clicking on cell outside of an event.\n if (!mouseDownOnEvent && focusAnEvent._eid) {\n (this.view.events.find(e => e._eid === focusAnEvent._eid) || {}).focused = false;\n }\n\n // Only if event creation is allowed and mousedown is on a cell (not on event).\n if (this.editEvents.create && !mouseDownOnEvent) this.setUpEventCreation(DOMEvent, y);\n },\n setUpEventCreation(DOMEvent, startCursorY) {\n // If dragToCreateEvent is true, start the event creation from dragging\n // only on week and day views (doesn't make sense on month view).\n if (this.options.dragToCreateEvent && ['week', 'day'].includes(this.view.id)) {\n const {\n dragCreateAnEvent\n } = this.domEvents;\n dragCreateAnEvent.startCursorY = startCursorY;\n\n // If splitting days, store the clicked split to create an event in it from the global\n // mousemove handler in index.vue.\n dragCreateAnEvent.split = this.splitsCount ? this.getSplitAtCursor(DOMEvent) : null;\n\n // Save the time at cursor on initial mousedown.\n dragCreateAnEvent.start = this.timeAtCursor;\n\n // If snapToTime, set the start to the closest intervaled number.\n if (this.options.snapToTime) {\n let timeMinutes = this.timeAtCursor.getHours() * 60 + this.timeAtCursor.getMinutes();\n const plusHalfSnapTime = timeMinutes + this.options.snapToTime / 2;\n timeMinutes = plusHalfSnapTime - plusHalfSnapTime % this.options.snapToTime;\n dragCreateAnEvent.start.setHours(0, timeMinutes, 0, 0);\n }\n }\n\n // If the cellClickHold option is true and not mousedown on an event, click & hold to create an event.\n else if (this.options.cellClickHold && ['month', 'week', 'day'].includes(this.view.id)) {\n this.setUpCellHoldTimer(DOMEvent);\n }\n },\n // When click & holding a cell, and if allowed, set a timeout to create an event (can be cancelled).\n setUpCellHoldTimer(DOMEvent) {\n const {\n clickHoldACell\n } = this.domEvents;\n clickHoldACell.cellId = `${this.vuecal._.uid}_${this.data.formattedDate}`;\n // If splitting days, store the clicked split to create an event in it from the global\n // mousemove handler in index.vue.\n clickHoldACell.split = this.splitsCount ? this.getSplitAtCursor(DOMEvent) : null;\n clickHoldACell.timeoutId = setTimeout(() => {\n if (clickHoldACell.cellId && !this.domEvents.cancelClickEventCreation) {\n const {\n _eid\n } = this.utils.event.createAnEvent(this.timeAtCursor, null, clickHoldACell.split ? {\n split: clickHoldACell.split\n } : {});\n clickHoldACell.eventCreated = _eid;\n }\n }, clickHoldACell.timeout);\n },\n onCellTouchStart(DOMEvent, split = null) {\n // If not mousedown on an event.\n this.onCellMouseDown(DOMEvent, split, true);\n },\n onCellClick(DOMEvent, split) {\n const allNonWorkingHoursEvents = DOMEvent.target.querySelectorAll('.non-working-event');\n const calendarHeight = DOMEvent.target.offsetHeight;\n const morningNonWorkingHoursEventHeight = allNonWorkingHoursEvents?.[0]?.offsetHeight || 950;\n const afternoonNonWorkingHoursEventHeight = allNonWorkingHoursEvents?.[1]?.offsetHeight || 1700;\n if (\n // Check if the click is not in the non-working hours events\n DOMEvent.offsetY > morningNonWorkingHoursEventHeight && DOMEvent.offsetY < calendarHeight - afternoonNonWorkingHoursEventHeight) {\n const dateFrom = split.date;\n dateFrom.setHours(Math.floor(DOMEvent.offsetY / 100), 0, 0, 0);\n const dateTo = new Date(dateFrom);\n dateTo.setHours(dateFrom.getHours() + 1);\n const time = moment__WEBPACK_IMPORTED_MODULE_7___default()(dateFrom).format('HH:mm');\n const isTeamCalendar = this.$route.name === 'Dashboard - Teams';\n const employee = isTeamCalendar ? split.employee_id : Number(localStorage.getItem('selectedEmployee') || this.user.id);\n this.$events.emit('show-menu-modal', {\n time,\n date: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].formatDateTimeForBackend(dateFrom),\n employee\n });\n setTimeout(() => {\n this.$events.emit('add-timeblock', {\n id: null,\n start: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].formatDateTimeForBackend(dateFrom),\n end: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].formatDateTimeForBackend(dateTo)\n });\n }, 150);\n }\n if (!this.isDOMElementAnEvent(DOMEvent.target)) this.selectCell(DOMEvent);\n },\n onCellDblClick(DOMEvent) {\n const date = new Date(this.data.startDate);\n date.setMinutes(this.vuecal.minutesAtCursor(DOMEvent).minutes);\n\n // If splitting days, also return the clicked split on cell dblclick when emitting event.\n const split = this.splitsCount ? this.getSplitAtCursor(DOMEvent) : null;\n this.vuecal.$emit('cell-dblclick', split ? {\n date,\n split\n } : date);\n if (this.options.dblclickToNavigate) this.vuecal.switchToNarrowerView();\n },\n onCellContextMenu(DOMEvent) {\n DOMEvent.stopPropagation();\n DOMEvent.preventDefault();\n const date = new Date(this.data.startDate);\n const {\n cursorCoords,\n minutes\n } = this.vuecal.minutesAtCursor(DOMEvent);\n date.setMinutes(minutes);\n\n // If splitting days, also return the clicked split on cell contextmenu when emitting event.\n const split = this.splitsCount ? this.getSplitAtCursor(DOMEvent) : null;\n this.vuecal.$emit('cell-contextmenu', {\n date,\n ...cursorCoords,\n ...(split || {}),\n e: DOMEvent\n });\n }\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapGetters)('auth', ['user']),\n // Drag & drop module.\n dnd() {\n return this.modules.dnd;\n },\n nowInMinutes() {\n return this.utils.date.dateToMinutes(this.vuecal.now);\n },\n isBeforeMinDate() {\n return this.minTimestamp !== null && this.minTimestamp > this.data.endDate.getTime();\n },\n isAfterMaxDate() {\n return this.maxTimestamp && this.maxTimestamp < this.data.startDate.getTime();\n },\n // Is the current cell disabled or not.\n isDisabled() {\n const {\n disableDays\n } = this.options;\n const {\n isYearsOrYearView\n } = this.vuecal;\n if (disableDays.length && disableDays.includes(this.data.formattedDate) && !isYearsOrYearView) return true;\n return this.isBeforeMinDate || this.isAfterMaxDate;\n },\n // Is the current cell selected or not.\n isSelected: {\n get() {\n let selected = false;\n const {\n selectedDate\n } = this.view;\n if (this.view.id === 'years') {\n selected = selectedDate.getFullYear() === this.data.startDate.getFullYear();\n } else if (this.view.id === 'year') {\n selected = selectedDate.getFullYear() === this.data.startDate.getFullYear() && selectedDate.getMonth() === this.data.startDate.getMonth();\n } else selected = selectedDate.getTime() === this.data.startDate.getTime();\n return selected;\n },\n set(date) {\n this.view.selectedDate = date;\n this.vuecal.$emit('update:selected-date', this.view.selectedDate);\n }\n },\n // Cache result for performance.\n isWeekOrDayView() {\n return ['week', 'day'].includes(this.view.id);\n },\n transitionDirection() {\n return this.vuecal.transitionDirection;\n },\n specialHours() {\n // this.data.specialHours is always an array, but may be empty.\n return this.data.specialHours.map(block => {\n let {\n from,\n to\n } = block;\n from = Math.max(from, this.options.timeFrom);\n to = Math.min(to, this.options.timeTo);\n return {\n ...block,\n height: (to - from) * this.timeScale,\n top: (from - this.options.timeFrom) * this.timeScale\n };\n });\n },\n events() {\n const {\n startDate: cellStart,\n endDate: cellEnd\n } = this.data;\n let events = [];\n\n // Calculate events on month/week/day views or years/year if eventsCountOnYearView.\n if (!(['years', 'year'].includes(this.view.id) && !this.options.eventsCountOnYearView)) {\n // Means that when vuecal.view.events changes all the cells will be looking up new value. :/\n // Also clone array to prevent modifying original.\n events = this.view.events.slice(0);\n if (this.view.id === 'month') {\n events.push(...this.view.outOfScopeEvents);\n }\n\n // Only keep events in cell time range.\n events = events.filter(e => this.utils.event.eventInRange(e, cellStart, cellEnd));\n if (this.options.showAllDayEvents && this.view.id !== 'month') events = events.filter(e => !!e.allDay === this.allDay);\n\n // From events in view, filter the ones that are out of `time-from`-`time-to` range in this cell.\n if (this.options.time && this.isWeekOrDayView && !this.allDay) {\n const {\n timeFrom,\n timeTo\n } = this.options;\n events = events.filter(e => {\n const segment = e.daysCount > 1 && e.segments[this.data.formattedDate] || {};\n const singleDayInRange = e.daysCount === 1 && e.startTimeMinutes < timeTo && e.endTimeMinutes > timeFrom;\n const multipleDayInRange = e.daysCount > 1 && segment.startTimeMinutes < timeTo && segment.endTimeMinutes > timeFrom;\n const recurrMultDayInRange = false; // e.daysCount > 1 && e.repeat && recurringEventInRange(e, cellStart, cellEnd)\n return e.allDay || singleDayInRange || multipleDayInRange || recurrMultDayInRange;\n });\n }\n\n // Position events with time in the timeline when there is a timeline and not in allDay slot.\n if (this.options.time && this.isWeekOrDayView && !(this.options.showAllDayEvents && this.allDay)) {\n // Sort events in chronological order.\n events.sort((a, b) => a.start < b.start ? -1 : 1);\n }\n\n // If splits, checkCellOverlappingEvents() is called from within computed splits.\n if (!this.cellSplits.length) this.$nextTick(this.checkCellOverlappingEvents);\n }\n return events;\n },\n eventsCount() {\n return this.events.length;\n },\n splits() {\n return this.cellSplits.map((item, i) => {\n const events = this.events.filter(e => e.split === item.id);\n const [overlaps, streak] = this.utils.event.checkCellOverlappingEvents(events.filter(e => !e.background && !e.allDay), this.options);\n return {\n ...item,\n overlaps,\n overlapsStreak: streak,\n events\n };\n });\n },\n splitsCount() {\n return this.splits.length;\n },\n cellClasses() {\n return {\n [this.data.class]: !!this.data.class,\n 'vuecal__cell--current': this.data.current,\n // E.g. Current year in years view.\n 'vuecal__cell--today': this.data.today,\n 'vuecal__cell--out-of-scope': this.data.outOfScope,\n 'vuecal__cell--before-min': this.isDisabled && this.isBeforeMinDate,\n 'vuecal__cell--after-max': this.isDisabled && this.isAfterMaxDate,\n 'vuecal__cell--disabled': this.isDisabled,\n 'vuecal__cell--selected': this.isSelected,\n 'vuecal__cell--highlighted': this.highlighted,\n 'vuecal__cell--has-splits': this.splitsCount,\n 'vuecal__cell--has-events': this.eventsCount\n };\n },\n cellStyles() {\n return {\n // cellWidth is only applied when hiding weekdays on month and week views.\n ...(this.cellWidth ? {\n width: `${this.cellWidth}%`\n } : {})\n };\n },\n timelineVisible() {\n const {\n time,\n timeTo\n } = this.options;\n return this.data.today && this.isWeekOrDayView && time && !this.allDay && this.nowInMinutes <= timeTo;\n },\n todaysTimePosition() {\n // Skip the Maths if not relevant.\n if (!this.data.today || !this.options.time) return;\n const minutesFromTop = this.nowInMinutes - this.options.timeFrom;\n return Math.round(minutesFromTop * this.timeScale);\n },\n timeScale() {\n return this.options.timeCellHeight / this.options.timeStep;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/cell.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/event.vue?vue&type=script&lang=js":
/*!*******************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/event.vue?vue&type=script&lang=js ***!
\*******************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inject: [\"vuecal\", \"utils\", \"modules\", \"view\", \"domEvents\", \"editEvents\"],\n props: {\n cellFormattedDate: {\n type: String,\n default: \"\"\n },\n event: {\n type: Object,\n default: () => ({})\n },\n cellEvents: {\n type: Array,\n default: () => []\n },\n cellOverlaps: {\n type: Object,\n default: () => ({})\n },\n allOverlaps: {\n type: Object,\n default: () => ({})\n },\n // If multiple simultaneous events, the events are placed from left to right from the\n // one starting first to the last. (See utils/event.js > checkCellOverlappingEvents)\n eventPosition: {\n type: Number,\n default: 0\n },\n overlapsStreak: {\n type: Number,\n default: 0\n },\n allDay: {\n type: Boolean,\n default: false\n } // Is the event displayed in the all-day bar.\n },\n data: () => ({\n // Event touch detection with 30px threshold.\n touch: {\n dragThreshold: 30,\n // px.\n startX: 0,\n startY: 0,\n // Detect if the event touch start + touch end was a drag or a tap.\n // If it was a drag, don't call the event-click handler.\n dragged: false\n }\n }),\n methods: {\n /**\n * On event mousedown.\n * Do not prevent propagation to trigger cell mousedown which highlights the cell if not highlighted.\n */\n onMouseDown(e, touch = false) {\n let targetElement;\n if (e.target.nodeName == 'BUTTON') {\n targetElement = e.target;\n } else if (e.srcElement.nodeName == 'IMG') {\n targetElement = e.target.parentElement;\n }\n if (targetElement?.classList?.contains('v-btn__content') || e?.target?.nodeName == 'BUTTON') {\n e.preventDefault();\n return;\n }\n\n // Prevent a double mouse down on touch devices.\n if (\"ontouchstart\" in window && !touch) return false;\n const {\n clickHoldAnEvent,\n focusAnEvent,\n resizeAnEvent,\n dragAnEvent\n } = this.domEvents;\n\n // If the delete button is already out and event is on focus then delete event.\n // Return true so the event-click function (if any) is not called.\n if (focusAnEvent._eid === this.event._eid && clickHoldAnEvent._eid === this.event._eid) {\n return true;\n }\n\n // Focus the clicked event.\n this.focusEvent();\n clickHoldAnEvent._eid = null; // Reinit click hold on each click.\n\n // Show event delete button.\n if (this.vuecal.editEvents.delete && this.event.deletable) {\n clickHoldAnEvent.timeoutId = setTimeout(() => {\n if (!resizeAnEvent._eid && !dragAnEvent._eid) {\n clickHoldAnEvent._eid = this.event._eid;\n this.event.deleting = true;\n }\n }, clickHoldAnEvent.timeout);\n }\n },\n /**\n * The mouseup handler is global (whole document) and initialized in index.vue on mounted.\n * It handles the mouseup on cell, events, and everything.\n * All mouseup on event, should be put there to avoid conflicts with other cases.\n * This function is also called on touchend on the event.\n */\n onMouseUp(e) {\n // Don't allow mouseup to be fired on different event than mousedown for the onEventClick function.\n if (this.domEvents.focusAnEvent._eid === this.event._eid && !this.touch.dragged) {\n // This is used in the global mouseup handler.\n this.domEvents.focusAnEvent.mousedUp = true;\n }\n this.touch.dragged = false; // After the touchend happens, reset the dragged flag.\n },\n onMouseEnter(e) {\n e.preventDefault();\n this.vuecal.emitWithEvent(\"event-mouse-enter\", this.event);\n },\n onMouseLeave(e) {\n e.preventDefault();\n this.vuecal.emitWithEvent(\"event-mouse-leave\", this.event);\n },\n // Detect if user taps on an event or drags it. If dragging, don't fire the event-click handler (if any).\n onTouchMove(e) {\n // Skip the maths if there is no event click handler.\n if (typeof this.vuecal.onEventClick !== \"function\") return;\n const {\n clientX,\n clientY\n } = e.touches[0];\n const {\n startX,\n startY,\n dragThreshold\n } = this.touch;\n if (Math.abs(clientX - startX) > dragThreshold || Math.abs(clientY - startY) > dragThreshold) {\n this.touch.dragged = true;\n }\n },\n onTouchStart(e) {\n this.touch.startX = e.touches[0].clientX;\n this.touch.startY = e.touches[0].clientY;\n this.onMouseDown(e, true);\n },\n onEnterKeypress(e) {\n if (typeof this.vuecal.onEventClick === \"function\") return this.vuecal.onEventClick(this.event, e);\n },\n onDblClick(e) {\n if (typeof this.vuecal.onEventDblclick === \"function\") return this.vuecal.onEventDblclick(this.event, e);\n },\n onDragStart(e) {\n if (this.event.type == 'blocker' || this.event.type == 'non-working-hours' || this.event.type == 'office365_blocker') return; //|| this.event._timeblock_is_finished || this.event.subtask?.is_finished\n this.event.draggingStatic = false;\n this.dnd && this.dnd.eventDragStart(e, this.event);\n },\n onDragEnd() {\n this.dnd && this.dnd.eventDragEnd(this.event);\n },\n onResizeHandleMouseDown() {\n this.focusEvent();\n this.domEvents.dragAnEvent._eid = null;\n this.domEvents.resizeAnEvent = Object.assign(this.domEvents.resizeAnEvent, {\n _eid: this.event._eid,\n start: (this.segment || this.event).start,\n split: this.event.split || null,\n segment: !!this.segment && this.utils.date.formatDateLite(this.segment.start),\n originalEnd: new Date((this.segment || this.event).end),\n originalEndTimeMinutes: this.event.endTimeMinutes\n });\n this.event.resizing = true;\n },\n deleteEvent(touch = false) {\n // Prevent a double mouse down on touch devices.\n if (\"ontouchstart\" in window && !touch) return false;\n this.utils.event.deleteAnEvent(this.event);\n },\n touchDeleteEvent(event) {\n this.deleteEvent(true);\n },\n cancelDeleteEvent() {\n this.event.deleting = false;\n },\n focusEvent() {\n const {\n focusAnEvent\n } = this.domEvents;\n const focusedEvent = focusAnEvent._eid;\n\n // If event is already focus cancel refocusing.\n if (focusedEvent === this.event._eid) return;\n // Unfocus previous event if any.\n else if (focusedEvent) {\n const event = this.view.events.find(e => e._eid === focusedEvent);\n if (event) event.focused = false;\n }\n\n // Cancel delete on previous event if any.\n this.vuecal.cancelDelete();\n this.vuecal.emitWithEvent(\"event-focus\", this.event);\n focusAnEvent._eid = this.event._eid;\n this.event.focused = true;\n }\n },\n computed: {\n eventDimensions() {\n const {\n startTimeMinutes,\n endTimeMinutes\n } = this.segment || this.event;\n\n // Top of event.\n let minutesFromTop = startTimeMinutes - this.vuecal.timeFrom;\n const top = Math.max(Math.round(minutesFromTop * this.vuecal.timeCellHeight / this.vuecal.timeStep), 0);\n\n // Bottom of event.\n minutesFromTop = Math.min(endTimeMinutes, this.vuecal.timeTo) - this.vuecal.timeFrom;\n const bottom = Math.round(minutesFromTop * this.vuecal.timeCellHeight / this.vuecal.timeStep);\n const height = Math.max(bottom - top, 5); // Min height is 5px.\n return {\n top,\n height\n };\n },\n eventStyles() {\n if (this.event.allDay || !this.vuecal.time || !this.event.endTimeMinutes || this.view.id === \"month\" || this.allDay) return {};\n // let width = 100 / Math.min(this.overlaps.length + 1, this.overlapsStreak)\n // let left = (100 - ((this.overlaps.length + 1) * 10 )) * this.eventPosition\n\n let width = 100 - this.eventPosition * 10;\n let left = 5 * this.eventPosition;\n let zIdnex = (this.eventPosition + 1) * 10;\n let background = this.event.master_task_color;\n if (Array.isArray(this.cellOverlaps.sameOverlaps) && this.cellOverlaps.sameOverlaps.length) {\n const sameOverlapsLength = this.cellOverlaps.sameOverlaps.length + 1;\n const parentNotSameOverlaps = this.cellOverlaps.overlaps.filter(x => {\n if (!this.cellOverlaps.sameOverlaps.includes(x) && this.allOverlaps[this.event._eid].position > this.allOverlaps[x].position) return x;\n });\n width = 100 / sameOverlapsLength - 5;\n left = 100 / sameOverlapsLength * (this.eventPosition - parentNotSameOverlaps.length) + 5 * (this.eventPosition - parentNotSameOverlaps.length) / sameOverlapsLength;\n if (parentNotSameOverlaps.length) {\n width = width - parentNotSameOverlaps.length * (10 / sameOverlapsLength);\n left = left + (5 * parentNotSameOverlaps.length - 10 * parentNotSameOverlaps.length / sameOverlapsLength * (this.eventPosition - parentNotSameOverlaps.length));\n }\n }\n if (this.vuecal.minEventWidth && width < this.vuecal.minEventWidth) {\n width = this.vuecal.minEventWidth;\n left = (100 - this.vuecal.minEventWidth) / this.cellOverlaps.overlaps.length * this.eventPosition;\n }\n const {\n top,\n height\n } = this.eventDimensions;\n return {\n background: background,\n \"z-index\": `${zIdnex}`,\n top: `${top}px`,\n height: `${height}px`,\n width: `${width}%`,\n left: this.event.left && `${this.event.left}px` || `${left}%`\n };\n },\n // Don't rely on global variables otherwise whenever it would change all the events would be redrawn.\n eventClasses() {\n const {\n isFirstDay,\n isLastDay\n } = this.segment || {};\n return {\n [this.event.class]: !!this.event.class,\n \"event-blocker\": this.event.is_blocker,\n \"vuecal__event--focus\": this.event.focused,\n \"vuecal__event--resizing\": this.event.resizing,\n \"vuecal__event--background\": this.event.background,\n \"vuecal__event--deletable\": this.event.deleting,\n \"vuecal__event--all-day\": this.event.allDay,\n // Only apply the dragging class on the event copy that is being dragged.\n \"vuecal__event--dragging\": !this.event.draggingStatic && this.event.dragging,\n // Only apply the static class on the event original that remains static while a copy is being dragged.\n // Sometimes when dragging fast the static class would get stuck and events stays invisible,\n // So if dragging is false disable the static class as well.\n \"vuecal__event--static\": this.event.dragging && this.event.draggingStatic,\n // Multiple days events.\n \"vuecal__event--multiple-days\": !!this.segment,\n \"event-start\": this.segment && isFirstDay && !isLastDay,\n \"event-middle\": this.segment && !isFirstDay && !isLastDay,\n \"event-end\": this.segment && isLastDay && !isFirstDay\n };\n },\n // When multiple-day events, a segment is a portion of event spanning on 1 day.\n segment() {\n return this.event.segments && this.event.segments[this.cellFormattedDate] || null;\n },\n draggable() {\n const {\n draggable,\n background,\n daysCount\n } = this.event;\n return this.vuecal.editEvents.drag && draggable && !background && daysCount === 1;\n },\n resizable() {\n const {\n editEvents,\n time\n } = this.vuecal;\n return editEvents.resize && this.event.resizable && time && !this.allDay && (!this.segment || this.segment && this.segment.isLastDay) && this.view.id !== \"month\";\n },\n // Drag & drop module.\n dnd() {\n return this.modules.dnd;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/event.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/header.vue?vue&type=script&lang=js":
/*!********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/header.vue?vue&type=script&lang=js ***!
\********************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _weekdays_headings_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./weekdays-headings.vue */ \"./src/plugins/app@vendor/vue-cal/weekdays-headings.vue\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inject: ['vuecal', 'previous', 'next', 'switchView', 'updateSelectedDate', 'modules', 'view'],\n components: {\n WeekdaysHeadings: _weekdays_headings_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n },\n props: {\n // Vuecal main component options (props).\n options: {\n type: Object,\n default: () => ({})\n },\n editEvents: {\n type: Object,\n required: true\n },\n hasSplits: {\n type: [Boolean, Number],\n default: false\n },\n daySplits: {\n type: Array,\n default: () => []\n },\n viewProps: {\n type: Object,\n default: () => ({})\n },\n weekDays: {\n type: Array,\n default: () => []\n },\n switchToNarrowerView: {\n type: Function,\n default: () => {}\n }\n },\n data: () => ({\n highlightedControl: null\n }),\n methods: {\n goToToday() {\n // Last midnight.\n this.updateSelectedDate(new Date(new Date().setHours(0, 0, 0, 0)));\n },\n switchToBroaderView() {\n this.transitionDirection = 'left';\n if (this.broaderView) this.switchView(this.broaderView);\n }\n },\n computed: {\n transitionDirection: {\n get() {\n return this.vuecal.transitionDirection;\n },\n set(direction) {\n this.vuecal.transitionDirection = direction;\n }\n },\n broaderView() {\n const {\n enabledViews\n } = this.vuecal;\n return enabledViews[enabledViews.indexOf(this.view.id) - 1];\n },\n showDaySplits() {\n return this.view.id === 'day' && this.hasSplits && this.options.stickySplitLabels && !this.options.minSplitWidth;\n },\n // Drag & drop module.\n dnd() {\n return this.modules.dnd;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/header.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/index.vue?vue&type=script&lang=js":
/*!*******************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/index.vue?vue&type=script&lang=js ***!
\*******************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/esnext.iterator.reduce.js */ \"./node_modules/core-js/modules/esnext.iterator.reduce.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/esnext.iterator.some.js */ \"./node_modules/core-js/modules/esnext.iterator.some.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _utils_date__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/date */ \"./src/plugins/app@vendor/vue-cal/utils/date.js\");\n/* harmony import */ var _utils_cell__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils/cell */ \"./src/plugins/app@vendor/vue-cal/utils/cell.js\");\n/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils/event */ \"./src/plugins/app@vendor/vue-cal/utils/event.js\");\n/* harmony import */ var _header_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./header.vue */ \"./src/plugins/app@vendor/vue-cal/header.vue\");\n/* harmony import */ var _weekdays_headings_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./weekdays-headings.vue */ \"./src/plugins/app@vendor/vue-cal/weekdays-headings.vue\");\n/* harmony import */ var _all_day_bar_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./all-day-bar.vue */ \"./src/plugins/app@vendor/vue-cal/all-day-bar.vue\");\n/* harmony import */ var _cell_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./cell.vue */ \"./src/plugins/app@vendor/vue-cal/cell.vue\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _styles_scss__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./styles.scss */ \"./src/plugins/app@vendor/vue-cal/styles.scss\");\n/* harmony import */ var _styles_scss__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_styles_scss__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _scss_index_scss__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./scss/index.scss */ \"./src/plugins/app@vendor/vue-cal/scss/index.scss\");\n/* harmony import */ var _scss_index_scss__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_scss_index_scss__WEBPACK_IMPORTED_MODULE_17__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst minutesInADay = 24 * 60; // Don't do the maths every time.\nconst textsDefaults = {\n weekDays: Array(7).fill(''),\n weekDaysShort: [],\n months: Array(12).fill(''),\n years: '',\n year: '',\n month: '',\n week: '',\n day: '',\n today: '',\n noEvent: '',\n allDay: '',\n deleteEvent: '',\n createEvent: '',\n dateFormat: 'dddd MMMM D, YYYY',\n am: 'am',\n pm: 'pm'\n};\nconst validViews = ['years', 'year', 'month', 'week', 'day'];\n\n// Only 1 instance of DateUtils for all the instances of Vue Cal, created when first importing the Vue Cal lib.\n// The dateUtils does not need to be dependent of Vue Cal instance, it only needs localized texts when ready.\n// This becomes a problem when showing multiple instances of Vue Cal with different locales like in the\n// documentation page. So the texts are overridable through a the `updateDateTexts` function.\nconst dateUtils = new _utils_date__WEBPACK_IMPORTED_MODULE_8__[\"default\"](textsDefaults); // Do this ASAP for date prototypes.\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'vue-cal',\n components: {\n 'vuecal-cell': _cell_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n 'vuecal-header': _header_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n WeekdaysHeadings: _weekdays_headings_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n AllDayBar: _all_day_bar_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n },\n // By Vue design, passing props loses the reactivity unless it's a method or reactive OBJECT.\n provide() {\n return {\n vuecal: this,\n utils: this.utils,\n modules: this.modules,\n // Methods.\n previous: this.previous,\n next: this.next,\n switchView: this.switchView,\n updateSelectedDate: this.updateSelectedDate,\n editEvents: this.editEvents,\n // Objects.\n view: this.view,\n domEvents: this.domEvents\n };\n },\n props: {\n activeView: {\n type: String,\n default: 'week'\n },\n scrollToHour: {\n type: Number,\n default: 0\n },\n // In minutes.\n // Only used if there are daySplits with minSplitWidth, to add the same height top spacer on time column.\n allDayBarHeight: {\n type: [String, Number],\n default: '25px'\n },\n cellClickHold: {\n type: Boolean,\n default: true\n },\n cellContextmenu: {\n type: Boolean,\n default: false\n },\n clickToNavigate: {\n type: Boolean,\n default: false\n },\n dblclickToNavigate: {\n type: Boolean,\n default: true\n },\n disableDatePrototypes: {\n type: Boolean,\n default: false\n },\n disableDays: {\n type: Array,\n default: () => []\n },\n disableViews: {\n type: Array,\n default: () => []\n },\n dragToCreateEvent: {\n type: Boolean,\n default: true\n },\n // Start a drag creation after dragging a certain amount of pixels.\n // This prevents drag creation by mistake when you want to navigate.\n dragToCreateThreshold: {\n type: Number,\n default: 15\n },\n editableEvents: {\n type: [Boolean, Object],\n default: false\n },\n unscheduledTime: {\n type: Array,\n default: []\n },\n events: {\n type: Array,\n default: () => []\n },\n eventsCountOnYearView: {\n type: Boolean,\n default: false\n },\n eventsOnMonthView: {\n type: [Boolean, String],\n default: false\n },\n hideBody: {\n type: Boolean,\n default: false\n },\n hideTitleBar: {\n type: Boolean,\n default: false\n },\n hideViewSelector: {\n type: Boolean,\n default: false\n },\n hideWeekdays: {\n type: Array,\n default: () => []\n },\n hideWeekends: {\n type: Boolean,\n default: false\n },\n locale: {\n type: [String, Object],\n default: 'en'\n },\n maxDate: {\n type: [String, Date],\n default: ''\n },\n minCellWidth: {\n type: Number,\n default: 0\n },\n minDate: {\n type: [String, Date],\n default: ''\n },\n minEventWidth: {\n type: Number,\n default: 0\n },\n minSplitWidth: {\n type: Number,\n default: 0\n },\n onEventClick: {\n type: [Function, null],\n default: null\n },\n onEventCreate: {\n type: [Function, null],\n default: null\n },\n onEventDblclick: {\n type: [Function, null],\n default: null\n },\n overlapsPerTimeStep: {\n type: Boolean,\n default: false\n },\n resizeX: {\n type: Boolean,\n default: false\n },\n selectedDate: {\n type: [String, Date],\n default: ''\n },\n showAllDayEvents: {\n type: [Boolean, String],\n default: false\n },\n showTimeInCells: {\n type: Boolean,\n default: false\n },\n showWeekNumbers: {\n type: [Boolean, String],\n default: false\n },\n snapToTime: {\n type: Number,\n default: 0\n },\n small: {\n type: Boolean,\n default: false\n },\n specialHours: {\n type: Object,\n default: () => ({})\n },\n splitDays: {\n type: Array,\n default: () => []\n },\n startWeekOnSunday: {\n type: Boolean,\n default: false\n },\n stickySplitLabels: {\n type: Boolean,\n default: false\n },\n time: {\n type: Boolean,\n default: true\n },\n timeCellHeight: {\n type: Number,\n default: 40\n },\n // In pixels.\n timeFormat: {\n type: String,\n default: ''\n },\n timeFrom: {\n type: Number,\n default: 0\n },\n // In minutes.\n timeStep: {\n type: Number,\n default: 60\n },\n // In minutes.\n timeTo: {\n type: Number,\n default: minutesInADay\n },\n // In minutes.\n todayButton: {\n type: Boolean,\n default: false\n },\n transitions: {\n type: Boolean,\n default: true\n },\n twelveHour: {\n type: Boolean,\n default: false\n },\n watchRealTime: {\n type: Boolean,\n default: false\n },\n // Expensive, so only trigger on demand.\n xsmall: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n ready: false,\n // Is vue-cal ready.\n // Make texts reactive before a locale is loaded.\n texts: {\n ...textsDefaults\n },\n utils: {\n // Remove prototypes ASAP if the user wants so.\n date: (this.disableDatePrototypes ? dateUtils.removePrototypes() : false) || dateUtils,\n cell: null,\n // Note: Destructuring class method loses the `this` context and Vue Cal becomes inaccessible\n // from the event utils function. Don't do:\n // const { eventInRange, createEventSegments } = this.utils.event\n event: null\n },\n modules: {\n dnd: null\n },\n cellsEl: null,\n // At any time this object will be filled with current view, visible events and selected date.\n view: {\n id: '',\n title: '',\n startDate: null,\n endDate: null,\n firstCellDate: null,\n lastCellDate: null,\n selectedDate: null,\n // All the events are stored in the mutableEvents array, but subset of visible ones are passed\n // Into the current view for fast lookup and manipulation.\n events: []\n },\n eventIdIncrement: 1,\n // Internal unique id.\n // Preset at now date on load, but updated every minute if watchRealTime,\n // or updated at least on each cells rerender, in order to keep Today's date accurate.\n now: new Date(),\n // Useful when watchRealTime = true, 2 timeouts: 1 to snap to round minutes, then 1 every minute.\n timeTickerIds: [null, null],\n // All the possible events/cells interractions:\n // e.g. focus, click, click & hold, resize, drag & drop (coming).\n domEvents: {\n resizeAnEvent: {\n _eid: null,\n // Only one at a time.\n start: null,\n split: null,\n segment: null,\n originalEndTimeMinutes: 0,\n originalEnd: null,\n end: null,\n startCell: null,\n endCell: null\n },\n dragAnEvent: {\n // Only one at a time, only needed for vuecal dragging-event class.\n _eid: null\n },\n dragCreateAnEvent: {\n startCursorY: null,\n start: null,\n // The cell date where we start the drag.\n split: null,\n event: null\n },\n focusAnEvent: {\n _eid: null,\n // Only one at a time.\n // Useful to detect a full click (mousedown + mouseup on same event).\n // E.g. Only call onEventClick function (if any) on full click.\n mousedUp: false\n },\n clickHoldAnEvent: {\n _eid: null,\n // Only one at a time.\n timeout: 1200,\n // Hold for 1.2s to delete an event.\n timeoutId: null\n },\n dblTapACell: {\n taps: 0,\n timeout: 500 // Allowed latency between first and second click.\n },\n clickHoldACell: {\n cellId: null,\n split: null,\n timeout: 1200,\n // Hold for 1.2s to create an event.\n timeoutId: null,\n eventCreated: false\n },\n // A single click can trigger event creation if the user decides so.\n // But prevent this to happen on click & hold, on event click and on resize event.\n cancelClickEventCreation: false\n },\n // The events source of truth.\n // An array of mutable events updated each time given external events array changes.\n mutableEvents: [],\n // Transition when switching view. left when going toward the past, right when going toward future.\n transitionDirection: 'right'\n };\n },\n methods: {\n /**\n * Only import locale on demand to keep a small library weight.\n *\n * @param {String|Object} locale the language user whishes to have on vue-cal.\n */\n async loadLocale(locale) {\n if (typeof this.locale === 'object') {\n this.texts = Object.assign({}, textsDefaults, locale);\n this.utils.date.updateTexts(this.texts);\n return;\n }\n if (this.locale === 'en') {\n const texts = await __webpack_require__.e(/*! import() */ \"src_plugins_app_vendor_vue-cal_i18n_en_json\").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n/en.json */ \"./src/plugins/app@vendor/vue-cal/i18n/en.json\", 19));\n this.texts = Object.assign({}, textsDefaults, texts);\n } else {\n __webpack_require__(\"./src/plugins/app@vendor/vue-cal/i18n lazy recursive ^\\\\.\\\\/.*\\\\.json$ referencedExports: default\")(`./${locale}.json`).then(response => {\n this.texts = Object.assign({}, textsDefaults, response.default);\n this.utils.date.updateTexts(this.texts);\n });\n }\n },\n /**\n * Only import drag and drop module on demand to keep a small library weight.\n */\n loadDragAndDrop() {\n __webpack_require__.e(/*! import() */ \"src_plugins_app_vendor_vue-cal_modules_drag-and-drop_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./modules/drag-and-drop */ \"./src/plugins/app@vendor/vue-cal/modules/drag-and-drop.js\")).then(response => {\n const {\n DragAndDrop\n } = response;\n this.modules.dnd = new DragAndDrop(this);\n })\n // eslint-disable-next-line no-console\n .catch(() => console.warn('Vue Cal: Missing drag & drop module.'));\n },\n /**\n * Checks that the given view is in the array of valid views or use 'week' otherwise.\n * Then check the view is enabled or use the first enabled view instead.\n * Raises error and warning if needed.\n *\n * @param {String} view The view to validate.\n * @return {String} a valid view.\n */\n validateView(view) {\n if (!validViews.includes(view)) {\n // eslint-disable-next-line no-console\n console.error(`Vue Cal: invalid active-view parameter provided: \"${view}\".\\nA valid view must be one of: ${validViews.join(', ')}.`);\n view = 'week';\n }\n if (!this.enabledViews.includes(view)) {\n // eslint-disable-next-line no-console\n console.warn(`Vue Cal: the provided active-view \"${view}\" is disabled. Using the \"${this.enabledViews[0]}\" view instead.`);\n view = this.enabledViews[0];\n }\n return view;\n },\n /**\n * On click/dblclick of a cell go to a narrower view if available.\n * E.g. Click on month cell takes you to week view if not hidden, otherwise on day view if not hidden.\n *\n * @param {String | Date} date A starting date for the view, if none, fallbacks to the selected date,\n * If also empty fallbacks to the current view start date.\n */\n switchToNarrowerView(date = null) {\n this.transitionDirection = 'right';\n const view = this.enabledViews[this.enabledViews.indexOf(this.view.id) + 1];\n if (view) this.switchView(view, date);\n },\n /**\n * Switches to the specified view on view selector click, or programmatically form external call (via $refs).\n * If a date is given, it will be selected and if the view does not contain it, it will go to that date.\n *\n * @param {String} view the view to go to. Among `years`, `year`, `month`, `week`, `day`.\n * @param {String | Date} date A starting date for the view, if none, fallbacks to the selected date,\n * If also empty fallbacks to the current view start date.\n * @param {Boolean} fromViewSelector to know if the caller is the built-in view selector.\n */\n switchView(view, date = null, fromViewSelector = false) {\n view = this.validateView(view);\n const ud = this.utils.date;\n // This is user to prevent firing the custom event twice when syncing activeView.\n const viewDateBeforeChange = this.view.startDate && this.view.startDate.getTime();\n if (this.transitions && fromViewSelector) {\n if (this.view.id === view) return;\n const views = this.enabledViews;\n this.transitionDirection = views.indexOf(this.view.id) > views.indexOf(view) ? 'left' : 'right';\n }\n const oldView = this.view.id;\n this.view.events = [];\n this.view.id = view;\n this.view.firstCellDate = null; // For month view, if filling cells before 1st of month.\n this.view.lastCellDate = null; // For month view, if filling cells after current month.\n\n if (!date) date = this.view.selectedDate || this.view.startDate;\n switch (view) {\n case 'years':\n {\n // Always fill first cell with a multiple of 25 years, E.g. year 2000, or 2025.\n this.view.startDate = new Date(Math.floor(date.getFullYear() / 25) * 25 || 2000, 0, 1);\n this.view.endDate = new Date(this.view.startDate.getFullYear() + 25, 0, 1);\n this.view.endDate.setSeconds(-1); // End at 23:59:59.\n break;\n }\n case 'year':\n {\n this.view.startDate = new Date(date.getFullYear(), 0, 1);\n this.view.endDate = new Date(date.getFullYear() + 1, 0, 1);\n this.view.endDate.setSeconds(-1); // End at 23:59:59.\n break;\n }\n case 'month':\n {\n this.view.startDate = new Date(date.getFullYear(), date.getMonth(), 1);\n this.view.endDate = new Date(date.getFullYear(), date.getMonth() + 1, 1);\n this.view.endDate.setSeconds(-1); // End at 23:59:59.\n\n // If the first day of the month is not a FirstDayOfWeek (Monday or Sunday), prepend missing days to the days array.\n let startDate = new Date(this.view.startDate);\n if (startDate.getDay() !== (this.startWeekOnSunday ? 0 : 1)) {\n startDate = ud.getPreviousFirstDayOfWeek(startDate, this.startWeekOnSunday);\n }\n\n // Used in viewCells computed array & returned in emitted events.\n this.view.firstCellDate = startDate;\n this.view.lastCellDate = ud.addDays(startDate, 41);\n this.view.lastCellDate.setHours(23, 59, 59, 0);\n if (this.hideWeekends) {\n // Remove first weekend from firstCellDate if hide-weekends.\n if ([0, 6].includes(this.view.firstCellDate.getDay())) {\n const daysToAdd = this.view.firstCellDate.getDay() === 6 && !this.startWeekOnSunday ? 2 : 1;\n this.view.firstCellDate = ud.addDays(this.view.firstCellDate, daysToAdd);\n }\n // Remove first weekend from startDate if hide-weekends.\n if ([0, 6].includes(this.view.startDate.getDay())) {\n const daysToAdd = this.view.startDate.getDay() === 6 ? 2 : 1;\n this.view.startDate = ud.addDays(this.view.startDate, daysToAdd);\n }\n // Remove last weekend from lastCellDate if hide-weekends.\n if ([0, 6].includes(this.view.lastCellDate.getDay())) {\n const daysToSubtract = this.view.lastCellDate.getDay() === 0 && !this.startWeekOnSunday ? 2 : 1;\n this.view.lastCellDate = ud.subtractDays(this.view.lastCellDate, daysToSubtract);\n }\n // Remove last weekend from endDate if hide-weekends.\n if ([0, 6].includes(this.view.endDate.getDay())) {\n const daysToSubtract = this.view.endDate.getDay() === 0 ? 2 : 1;\n this.view.endDate = ud.subtractDays(this.view.endDate, daysToSubtract);\n }\n }\n break;\n }\n case 'week':\n {\n // const isTodayInView = moment(date).week() == moment().week()\n\n date = ud.getPreviousFirstDayOfWeek(date, this.startWeekOnSunday);\n const weekDaysCount = this.hideWeekends ? 5 : 7;\n this.view.startDate = this.hideWeekends && this.startWeekOnSunday ? ud.addDays(date, 1) : date;\n this.view.startDate.setHours(0, 0, 0, 0);\n\n // if (isTodayInView) {\n // \tthis.view.endDate = ud.addDays(date, weekDaysCount + 2)\n // } else {\n // \tthis.view.endDate = ud.addDays(date, weekDaysCount)\n // }\n\n this.view.endDate = ud.addDays(date, weekDaysCount);\n this.view.endDate.setSeconds(-1); // End at 23:59:59.\n\n break;\n }\n case 'day':\n {\n this.view.startDate = date;\n this.view.startDate.setHours(0, 0, 0, 0);\n this.view.endDate = new Date(date);\n this.view.endDate.setHours(23, 59, 59, 0); // End at 23:59:59.\n break;\n }\n }\n this.addEventsToView();\n\n // Prevent firing the `view-change` event twice (if using .sync or v-model).\n const viewDate = this.view.startDate && this.view.startDate.getTime();\n if (oldView === view && viewDate === viewDateBeforeChange) return;\n\n // Emit events to outside of Vue Cal and update the activeView (if using .sync or v-model).\n this.$emit('update:activeView', view);\n if (this.ready) {\n const startDate = this.view.startDate;\n const params = {\n view,\n startDate,\n endDate: this.view.endDate,\n ...(this.isMonthView ? {\n firstCellDate: this.view.firstCellDate,\n lastCellDate: this.view.lastCellDate,\n outOfScopeEvents: this.view.outOfScopeEvents.map(this.cleanupEvent)\n } : {}),\n events: this.view.events.map(this.cleanupEvent),\n ...(this.isWeekView ? {\n week: ud.getWeek(this.startWeekOnSunday ? ud.addDays(startDate, 1) : startDate)\n } : {})\n };\n this.$refs['vuecal_scroll'].scrollTop = this.scrollToHour * this.timeCellHeight;\n this.$emit('view-change', params);\n }\n },\n /**\n * Shorthand function for external call (via $refs).\n */\n previous() {\n this.previousNext(false);\n },\n /**\n * Shorthand function for external call (via $refs).\n */\n next() {\n this.previousNext();\n },\n /**\n * On click on previous or next arrow, update the calendar visible date range.\n *\n * @param {Boolean} next\n */\n previousNext(next = true) {\n const ud = this.utils.date;\n this.transitionDirection = next ? 'right' : 'left';\n const modifier = next ? 1 : -1;\n let firstCellDate = null;\n const {\n startDate,\n id: viewId\n } = this.view;\n switch (viewId) {\n case 'years':\n firstCellDate = new Date(startDate.getFullYear() + 25 * modifier, 0, 1);\n break;\n case 'year':\n firstCellDate = new Date(startDate.getFullYear() + 1 * modifier, 1, 1);\n break;\n case 'month':\n firstCellDate = new Date(startDate.getFullYear(), startDate.getMonth() + 1 * modifier, 1);\n break;\n case 'week':\n firstCellDate = ud[next ? 'addDays' : 'subtractDays'](ud.getPreviousFirstDayOfWeek(startDate, this.startWeekOnSunday), 7);\n break;\n case 'day':\n firstCellDate = ud[next ? 'addDays' : 'subtractDays'](startDate, 1);\n const weekDay = firstCellDate.getDay(); // 0 to 6 with Sunday at position 0.\n const weekDayIndex = this.startWeekOnSunday ? weekDay : (weekDay || 7) - 1;\n const isDayHidden = this.weekDays[weekDayIndex].hide;\n\n // If the day to show on the day view is listed as hidden by hideWeekdays or hideWeekends,\n // show the next one that is not hidden if navigating forward, or show the previous available\n // if navigating backward.\n if (isDayHidden) {\n const daysWithIndex = this.weekDays.map((day, i) => ({\n ...day,\n i\n }));\n let dayToShow = null;\n let daysFromDate = 0;\n if (next) {\n dayToShow = [...daysWithIndex.slice(weekDayIndex), ...daysWithIndex].find(day => {\n daysFromDate++;\n return !day.hide;\n }).i; // Returns 0 to 6 with Monday at position 0.\n daysFromDate--;\n } else {\n dayToShow = [...daysWithIndex, ...daysWithIndex.slice(0, weekDayIndex)].reverse().find(day => {\n daysFromDate++;\n return !day.hide;\n }).i; // Returns 0 to 6 with Monday at position 0.\n }\n firstCellDate = ud[next ? 'addDays' : 'subtractDays'](firstCellDate, daysFromDate);\n }\n break;\n }\n if (firstCellDate) this.switchView(viewId, firstCellDate);\n },\n /**\n * Add events (subset from mutableEvents) to the current view (in `this.view.events`).\n * This is done for performance, so that all the cells have a quick lookup of only what's needed.\n *\n * @param {Array} events\n */\n addEventsToView(events = []) {\n const ue = this.utils.event;\n const {\n startDate,\n endDate,\n firstCellDate,\n lastCellDate\n } = this.view;\n // Clear the current view if not explicitely giving an array of events to add.\n if (!events.length) this.view.events = [];\n // @todo: remove the code that explicitly updates this.mutableEvents (e.g on event resize).\n // as we are already mutating the event from mutableEvents.\n events = events.length ? events : [...this.mutableEvents];\n\n // In no event or if on years/year view and eventsCountOnYearView is false\n // then don't add events to view.\n if (!events || this.isYearsOrYearView && !this.eventsCountOnYearView) return;\n\n // First remove the events that are not in view.\n // Keep the unfiltered array of events for outOfScopeEvents below.\n let filteredEvents = events.filter(e => ue.eventInRange(e, startDate, endDate));\n\n // For each multiple-day event and only if needed, create its segments (= days) for rendering in the view.\n // If we don't display the event on month view (eventsOnMonthView = false) then don't create segments.\n if (!this.isYearsOrYearView && !(this.isMonthView && !this.eventsOnMonthView)) {\n filteredEvents = filteredEvents.map(e => {\n return e.daysCount > 1 ? ue.createEventSegments(e, firstCellDate || startDate, lastCellDate || endDate) : e;\n });\n }\n this.view.events.push(...filteredEvents);\n if (this.isMonthView) {\n // Save out of scope events into the view object separated from the array of in-scope events.\n this.view.outOfScopeEvents = [];\n events.forEach(e => {\n if (ue.eventInRange(e, firstCellDate, startDate) || ue.eventInRange(e, endDate, lastCellDate)) {\n // Only add events to the view.outOfScopeEvents array if not already in view.events\n // (multiple-day events case).\n if (!this.view.events.some(e2 => e2._eid === e._eid)) this.view.outOfScopeEvents.push(e);\n }\n });\n }\n },\n /**\n * find a DOM ancestor of a given DOM node `el` matching given class name.\n *\n * @param {Object} el a DOM node to find ancestor from.\n * @param {String} Class the CSS class name of the ancestor.\n * @return {Object} The matched DOM node or null if no match.\n */\n findAncestor(el, Class) {\n while ((el = el.parentElement) && !el.classList.contains(Class)) {}\n return el;\n },\n /**\n * Tells whether a clicked DOM node is or is within a calendar event.\n *\n * @param {Object} el a DOM node to check if event.\n * @return {Boolean} true if the given DOM node is - or is in - an event.\n */\n isDOMElementAnEvent(el) {\n return el.classList.contains('vuecal__event') || this.findAncestor(el, 'vuecal__event');\n },\n /**\n * Capture mousemove anywhere in the page.\n * If resizing an event was started earlier, this will update event end.\n * If resizing was not started, this method is calculation is avoided with a premature return.\n * Notes: Event resizing is started in cell component (onMouseDown) but place onMouseMove & onMouseUp\n * handlers in the single-instance parent for performance.\n *\n * @param {Object} e the native DOM event object.\n */\n onMouseMove(e) {\n const {\n resizeAnEvent,\n dragAnEvent,\n dragCreateAnEvent\n } = this.domEvents;\n if (resizeAnEvent._eid === null && dragAnEvent._eid === null && !dragCreateAnEvent.start) return;\n e.preventDefault();\n if (resizeAnEvent._eid) this.eventResizing(e);else if (this.dragToCreateEvent && dragCreateAnEvent.start) this.eventDragCreation(e);\n },\n /**\n * Capture mouseup anywhere in the page, not only on a cell or event.\n * Then end up any resize, drag & drop, click & hold or event or cell.\n * Notes: Mouseup can never cancel a click with preventDefault or stopPropagation,\n * But it always happens before the click event.\n *\n * @param {Object} e the native DOM event object.\n */\n onMouseUp(e) {\n const {\n focusAnEvent,\n resizeAnEvent,\n clickHoldAnEvent,\n clickHoldACell,\n dragCreateAnEvent\n } = this.domEvents;\n const {\n _eid: isClickHoldingEvent\n } = clickHoldAnEvent;\n const {\n _eid: wasResizing\n } = resizeAnEvent;\n let hasResized = false;\n const {\n event: dragCreatedEvent,\n start: dragCreateStarted\n } = dragCreateAnEvent;\n const mouseUpOnEvent = this.isDOMElementAnEvent(e.target);\n const eventClicked = focusAnEvent.mousedUp; // If has mousedown & mouseup on the same event.\n focusAnEvent.mousedUp = false; // Reinit the variable for next mouseup.\n\n if (mouseUpOnEvent) this.domEvents.cancelClickEventCreation = true;\n\n // Skip the rest if an event was created successfully.\n if (clickHoldACell.eventCreated) return;\n\n // On event resize end, emit event if duration has changed.\n if (wasResizing) {\n const {\n originalEnd,\n originalEndTimeMinutes,\n endTimeMinutes\n } = resizeAnEvent;\n const event = this.view.events.find(e => e._eid === resizeAnEvent._eid);\n // If end time is different than original, consider as resized.\n hasResized = endTimeMinutes && endTimeMinutes !== originalEndTimeMinutes;\n\n // When resizing the endTime changes but the day may change too when resizing horizontally.\n // So compare timestamps instead of only endTimeMinutes.\n if (event && event.end.getTime() !== originalEnd.getTime()) {\n // Update the modified event in the mutable events array.\n const mutableEvent = this.mutableEvents.find(e => e._eid === resizeAnEvent._eid);\n mutableEvent.endTimeMinutes = event.endTimeMinutes;\n mutableEvent.end = event.end;\n const cleanEvent = this.cleanupEvent(event);\n const originalEvent = {\n ...this.cleanupEvent(event),\n end: originalEnd,\n endTimeMinutes: event.originalEndTimeMinutes\n };\n this.$emit('event-duration-change', {\n event: cleanEvent,\n oldDate: resizeAnEvent.originalEnd,\n originalEvent\n });\n this.$emit('event-change', {\n event: cleanEvent,\n originalEvent\n });\n }\n if (event) event.resizing = false;\n resizeAnEvent._eid = null;\n resizeAnEvent.start = null;\n resizeAnEvent.split = null;\n resizeAnEvent.segment = null;\n resizeAnEvent.originalEndTimeMinutes = null;\n resizeAnEvent.originalEnd = null;\n resizeAnEvent.endTimeMinutes = null;\n resizeAnEvent.startCell = null;\n resizeAnEvent.endCell = null;\n } else if (dragCreateStarted) {\n // The drag create might be started but not completed due to threshold never reached.\n if (dragCreatedEvent) {\n this.emitWithEvent('event-drag-create', dragCreatedEvent);\n dragCreateAnEvent.event.resizing = false; // Remove the CSS resizing class.\n }\n\n // End the drag creation process.\n dragCreateAnEvent.start = null;\n dragCreateAnEvent.split = null;\n dragCreateAnEvent.event = null;\n }\n\n // If not mouse up on an event, unfocus any event except if just dragged.\n if (!mouseUpOnEvent && !wasResizing) this.unfocusEvent();\n\n // Prevent showing delete button if click and hold was not long enough.\n // Click & hold timeout is initiated in onMouseDown() in event component.\n if (clickHoldAnEvent.timeoutId && !isClickHoldingEvent) {\n clearTimeout(clickHoldAnEvent.timeoutId);\n clickHoldAnEvent.timeoutId = null;\n }\n\n // Prevent creating an event if click and hold was not long enough.\n if (clickHoldACell.timeoutId) {\n clearTimeout(clickHoldACell.timeoutId);\n clickHoldACell.timeoutId = null;\n }\n\n // On event click (mousedown + mouseup on the same event), call the onEventClick function if exists\n // and if not dragging handle or deleting event.\n const eventClickHandler = typeof this.onEventClick === 'function';\n if (eventClicked && !hasResized && !isClickHoldingEvent && !dragCreatedEvent && eventClickHandler) {\n let event = this.view.events.find(e => e._eid === focusAnEvent._eid);\n // If not found, the event may be in the outOfScope array.\n if (!event && this.isMonthView) event = this.view.outOfScopeEvents.find(e => e._eid === focusAnEvent._eid);\n return event && this.onEventClick(event, e);\n }\n },\n /**\n * Capture `escape` keypress when delete button is visible, and cancel deletion.\n *\n * @param {Object} e the native DOM event object.\n */\n onKeyUp(e) {\n if (e.keyCode === 27) this.cancelDelete(); // Escape key.\n },\n /**\n * On mousemove while resising an event.\n *\n * @param {Object} e the native DOM event object.\n */\n eventResizing(e) {\n const {\n resizeAnEvent\n } = this.domEvents;\n const event = this.view.events.find(e => e._eid === resizeAnEvent._eid) || {\n segments: {}\n };\n const {\n minutes,\n cursorCoords\n } = this.minutesAtCursor(e);\n const segment = event.segments && event.segments[resizeAnEvent.segment];\n\n // Destructuring class method loses the `this` context.\n // const { formatDateLite, countDays } = this.utils.date\n const {\n date: ud,\n event: ue\n } = this.utils;\n\n // Prevent reducing event duration to less than 1 min so it does not disappear.\n const newEndTimeMins = Math.max(minutes, this.timeFrom + 1, (segment || event).startTimeMinutes + 1);\n event.endTimeMinutes = resizeAnEvent.endTimeMinutes = newEndTimeMins;\n\n // On resize, snap to time (e.g. 0, 15, 30, 45) if the option is on.\n if (this.snapToTime) {\n const plusHalfSnapTime = event.endTimeMinutes + this.snapToTime / 2;\n event.endTimeMinutes = plusHalfSnapTime - plusHalfSnapTime % this.snapToTime;\n }\n if (segment) segment.endTimeMinutes = event.endTimeMinutes;\n\n // Remove 1 second if time is 24:00.\n event.end.setHours(0, event.endTimeMinutes, event.endTimeMinutes === minutesInADay ? -1 : 0, 0);\n\n // Resize events horizontally if resize-x is enabled (add/remove segments).\n if (this.resizeX && this.isWeekView) {\n event.daysCount = ud.countDays(event.start, event.end);\n const cells = this.cellsEl;\n const cellWidth = cells.offsetWidth / cells.childElementCount;\n const endCell = Math.floor(cursorCoords.x / cellWidth);\n if (resizeAnEvent.startCell === null) resizeAnEvent.startCell = endCell - (event.daysCount - 1);\n if (resizeAnEvent.endCell !== endCell) {\n resizeAnEvent.endCell = endCell;\n const newEnd = ud.addDays(event.start, endCell - resizeAnEvent.startCell);\n // Don't accept 0 and negative values.\n const newDaysCount = Math.max(ud.countDays(event.start, newEnd), 1);\n if (newDaysCount !== event.daysCount) {\n // Check that all segments are up to date.\n let lastSegmentFormattedDate = null;\n if (newDaysCount > event.daysCount) lastSegmentFormattedDate = ue.addEventSegment(event);else lastSegmentFormattedDate = ue.removeEventSegment(event);\n resizeAnEvent.segment = lastSegmentFormattedDate;\n event.endTimeMinutes += 0.001; // Force updating the current event.\n }\n }\n }\n\n // Emit event while resizing, so it has to be fast.\n this.$emit('event-resizing', {\n _eid: event._eid,\n end: event.end,\n endTimeMinutes: event.endTimeMinutes\n });\n },\n /**\n * On mousemove while dragging to create an event.\n *\n * @param {Object} e the native DOM event object.\n */\n eventDragCreation(e) {\n const {\n dragCreateAnEvent\n } = this.domEvents;\n const {\n start,\n startCursorY,\n split\n } = dragCreateAnEvent;\n const timeAtCursor = new Date(start);\n const {\n minutes,\n cursorCoords: {\n y\n }\n } = this.minutesAtCursor(e);\n\n // Don't show anything until the threshold is reached.\n if (!dragCreateAnEvent.event && Math.abs(startCursorY - y) < this.dragToCreateThreshold) return;\n\n // Create an event once, on the first pixel move after threshold is reached.\n if (!dragCreateAnEvent.event) {\n // Start the event with a 1 min duration, this will change as we are dragging.\n dragCreateAnEvent.event = this.utils.event.createAnEvent(start, 1, {\n split\n });\n\n // The event creation can be cancelled if user has a onEventCreate function\n // (called from createAnEvent()). If cancelled, cancel the dragCreation.\n if (!dragCreateAnEvent.event) {\n dragCreateAnEvent.start = null;\n dragCreateAnEvent.split = null;\n dragCreateAnEvent.event = null;\n return;\n }\n dragCreateAnEvent.event.resizing = true; // Trigger the CSS class.\n }\n\n // If the event already exists change its start and end.\n else {\n // Remove 1 second if time is 24:00.\n timeAtCursor.setHours(0, minutes, minutes === minutesInADay ? -1 : 0, 0);\n\n // If snapToTime, set the `timeAtCursor` to the closest intervaled number.\n if (this.snapToTime) {\n let timeMinutes = timeAtCursor.getHours() * 60 + timeAtCursor.getMinutes();\n const plusHalfSnapTime = timeMinutes + this.snapToTime / 2;\n timeMinutes = plusHalfSnapTime - plusHalfSnapTime % this.snapToTime;\n timeAtCursor.setHours(0, timeMinutes, 0, 0);\n }\n\n // If dragging the bottom of the event.\n const dragFromBottom = start < timeAtCursor;\n const {\n event\n } = dragCreateAnEvent;\n event.start = dragFromBottom ? start : timeAtCursor;\n event.end = dragFromBottom ? timeAtCursor : start;\n event.startTimeMinutes = event.start.getHours() * 60 + event.start.getMinutes();\n event.endTimeMinutes = event.end.getHours() * 60 + event.end.getMinutes();\n }\n },\n /**\n * Unfocus an event (e.g. when clicking outside of focused event).\n */\n unfocusEvent() {\n const {\n focusAnEvent,\n clickHoldAnEvent\n } = this.domEvents;\n const event = this.view.events.find(e => e._eid === (focusAnEvent._eid || clickHoldAnEvent._eid));\n focusAnEvent._eid = null; // Cancel event focus.\n clickHoldAnEvent._eid = null; // Hide delete button.\n\n if (event) {\n event.focused = false;\n event.deleting = false;\n }\n },\n /**\n * Cancel an event deletion (e.g. when clicking outside of visible delete button).\n */\n cancelDelete() {\n const {\n clickHoldAnEvent\n } = this.domEvents;\n if (clickHoldAnEvent._eid) {\n const event = this.view.events.find(e => e._eid === clickHoldAnEvent._eid);\n if (event) event.deleting = false;\n clickHoldAnEvent._eid = null;\n clickHoldAnEvent.timeoutId = null;\n }\n },\n /**\n * After editing an event title (if `this.editable`), save the new string into the event object\n * and emit event to the outside world.\n *\n * @param {Object} e the native DOM event object.\n * @param {Object} event the vue-cal event object.\n */\n onEventTitleBlur(e, event) {\n // If no change cancel action.\n if (event.title === e.target.innerHTML) return;\n const oldTitle = event.title;\n event.title = e.target.innerHTML;\n const cleanEvent = this.cleanupEvent(event);\n this.$emit('event-title-change', {\n event: cleanEvent,\n oldTitle\n });\n this.$emit('event-change', {\n event: cleanEvent,\n originalEvent: {\n ...cleanEvent,\n title: oldTitle\n }\n });\n },\n /**\n * The `mutableEvents` array of events is the source of truth.\n * It is first populated from the `events` prop and every time the `events` prop changes.\n * When the user updates an event through interractions, the event gets updated here.\n * Notes: mutableEvents couldn't be a computed variable based on this.events, because we add\n * items to the array. (Cannot mutate props)\n */\n updateMutableEvents() {\n // Destructuring class method loses the `this` context.\n // const { formatDateLite, stringToDate, dateToMinutes, countDays } = this.utils.date\n const ud = this.utils.date;\n this.mutableEvents = [];\n\n // For each event of the `events` prop, prepare the event for vue-cal:\n // Populate missing keys: start, startDate, startTimeMinutes, end, endTimeMinutes, daysCount.\n // Lots of these variables may look redundant but are here for performance as a cached result of calculation. :)\n this.events.forEach(event => {\n // `event.start` accepts a Date object, or a formatted string, but always convert to Date.\n const start = typeof event.start === 'string' ? ud.stringToDate(event.start) : event.start;\n const startDateF = ud.formatDateLite(start);\n const startTimeMinutes = ud.dateToMinutes(start);\n\n // `event.end` accepts a Date object or a formatted string, but always convert to Date.\n let end = null;\n // Safari does not convert new Date(YYYY-MM-DD 24:00) to a valid date. #340.\n if (typeof event.end === 'string' && event.end.includes('24:00')) {\n end = new Date(event.end.replace(' 24:00', ''));\n end.setHours(23, 59, 59, 0); // Sets to the same day at 23.59.59.\n } else end = typeof event.end === 'string' ? ud.stringToDate(event.end) : event.end;\n let endDateF = ud.formatDateLite(end);\n let endTimeMinutes = ud.dateToMinutes(end);\n\n // Correct the common practice to end at 00:00 or 24:00 to count a full day.\n if (!endTimeMinutes || endTimeMinutes === minutesInADay) {\n // This also applies on timeless events, all-day events & multiple-day events.\n if (!this.time || typeof event.end === 'string' && event.end.length === 10) {\n end.setHours(23, 59, 59, 0); // Sets to the same day at 23.59.59.\n } else end.setSeconds(end.getSeconds() - 1); // Sets to the previous day at 23.59.59.\n endDateF = ud.formatDateLite(end);\n endTimeMinutes = minutesInADay;\n }\n const multipleDays = startDateF !== endDateF;\n event = Object.assign({\n ...this.utils.event.eventDefaults\n }, event, {\n // Keep the event ids scoped to this calendar instance.\n _eid: `${this._.uid}_${this.eventIdIncrement++}`,\n segments: multipleDays ? {} : null,\n start,\n startTimeMinutes,\n end,\n endTimeMinutes,\n daysCount: multipleDays ? ud.countDays(start, end) : 1,\n class: event.class\n });\n this.mutableEvents.push(event);\n });\n },\n /**\n * Get the number of minutes from the top to the mouse cursor.\n *\n * @param {Object} e the native DOM event object.\n * @return {Object} containing { minutes: {Number}, cursorCoords: { x: {Number}, y: {Number} } }\n */\n minutesAtCursor(e) {\n return this.utils.cell.minutesAtCursor(e);\n },\n /**\n * Creates a new event in vue-cal memory (in the mutableEvents array) starting at the given date & time.\n * Proxy method to allow call from cell click & hold or external call (via $refs).\n * Notes: Event duration is by default 2 hours. You can override the event end through eventOptions.\n *\n * @param {String | Date} dateTime date & time at which the event will start.\n * @param {Number} duration the event duration in minutes.\n * @param {Object} eventOptions an object of options to override the event creation defaults.\n * (can be any key allowed in an event object)\n * @return {Object} the created event.\n */\n createEvent(dateTime, duration, eventOptions = {}) {\n return this.utils.event.createAnEvent(dateTime, duration, eventOptions);\n },\n /**\n * Remove all the vue-cal private vars from the event (before returning it through $emit()).\n *\n * @param {Object} event the event object to cleanup.\n */\n cleanupEvent(event) {\n event = {\n ...event\n };\n\n // Delete vue-cal specific props instead of returning a set of props so user\n // can place whatever they want inside an event and see it returned.\n const discardProps = ['segments', 'deletable', 'deleting', 'titleEditable', 'resizable', 'resizing', 'draggable', 'dragging', 'draggingStatic', 'focused'];\n discardProps.forEach(prop => {\n if (prop in event) delete event[prop];\n });\n if (!event.repeat) delete event.repeat; // If empty we don't need it.\n\n return event;\n },\n /**\n * Emits an event (custom DOM event) to the outside world.\n * This event has an event name and a clean calendar event as a parameter.\n *\n * @param {String} eventName the name of the custom emitted event (e.g. `event-focus`).\n * @param {Object} event the event to return to the outside world.\n */\n emitWithEvent(eventName, event) {\n this.$emit(eventName, this.cleanupEvent(event));\n },\n /**\n * Update the selected date:\n * - on created, from given selectedDate prop\n * - on click/dblClick of another cell\n * - from external call (via $refs)\n * - when the given selectedDate prop changes.\n * If date is not in the view, the view will change to show it.\n *\n * @param {String | Date} date The date to select.\n */\n updateSelectedDate(date) {\n if (date && typeof date === 'string') date = this.utils.date.stringToDate(date);else date = new Date(date); // Clone to keep original untouched.\n\n if (date && date instanceof Date) {\n const {\n selectedDate\n } = this.view;\n if (selectedDate) this.transitionDirection = selectedDate.getTime() > date.getTime() ? 'left' : 'right';\n // Select the day at midnight in order to allow fetching events on whole day.\n // Setting milliseconds to 0 is critical as well for timestamp comparison.\n date.setHours(0, 0, 0, 0);\n if (!selectedDate || selectedDate.getTime() !== date.getTime()) this.view.selectedDate = date;\n this.switchView(this.view.id);\n }\n this.$emit('update:selected-date', this.view.selectedDate);\n },\n /**\n * Double checks the week number is correct. Read below to understand!\n * this is a wrapper around the `getWeek()` function for performance:\n * As this is called multiple times from the template and cannot be in computed since there is\n * a parameter, this wrapper function avoids the `getWeek()` function call 5 times out of 6\n * using the computed `firstCellDateWeekNumber`.\n *\n * Reason why:\n * Getting the week number is not that straightforward as there might be a 53rd week in the year.\n * Whenever the year starts on a Thursday or any leap year starting on a Wednesday, this week will be 53.\n *\n * @param {Number} weekFromFirstCell Number from 0 to 6.\n */\n getWeekNumber(weekFromFirstCell) {\n const ud = this.utils.date;\n const firstCellWeekNumber = this.firstCellDateWeekNumber;\n const currentWeekNumber = firstCellWeekNumber + weekFromFirstCell;\n const modifier = this.startWeekOnSunday ? 1 : 0;\n if (currentWeekNumber > 52) {\n return ud.getWeek(ud.addDays(this.view.firstCellDate, 7 * weekFromFirstCell + modifier));\n } else return currentWeekNumber;\n },\n /**\n * Only if watchRealTime is true.\n * Pull the current time from user machine every minute to keep vue-cal accurate even when idle.\n * This will redraw the now line every minute and ensure that Today's date is always accurate.\n */\n timeTick() {\n // Updating `now` will re-trigger the computed `todaysTimePosition` in cell.vue.\n this.now = new Date();\n this.timeTickerIds[1] = setTimeout(this.timeTick, 60 * 1000); // Every minute.\n },\n /**\n * Updates the localized texts in use in the Date prototypes. (E.g. new Date().format())\n * Callable from outside of Vue Cal.\n */\n updateDateTexts() {\n this.utils.date.updateTexts(this.texts);\n },\n /**\n * On Windows devices, the .vuecal__bg's vertical scrollbar takes space and pushes the content.\n * This function will also push the weekdays-headings and all-day bar to have them properly aligned.\n * The calculated style will be placed in the document head in a style tag so it's only done once\n * (the scrollbar width never changes).\n * Ref. https://github.com/antoniandre/vue-cal/issues/221\n */\n alignWithScrollbar() {\n // If already done from another instance, exit.\n return;\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n\n // Only add a style tag once and if a scrollbar width is detected.\n // removed by dead control flow\n\n },\n /**\n * Tells wether there are events in the given cell or split and returns a Boolean.\n * This function simplifies the template.\n *\n * @param {Array} events The cell events.\n * @param {Object|Boolean} split The current split object if any or false.\n * @return {Boolean} true if there are events, false otherwise.\n */\n cellOrSplitHasEvents(events, split = null) {\n return events.length && (!split && events.length || split && events.some(e => e.split === split.id));\n }\n },\n created() {\n this.utils.cell = new _utils_cell__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this);\n this.utils.event = new _utils_event__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this, this.utils.date);\n this.loadLocale(this.locale);\n if (this.editEvents.drag) this.loadDragAndDrop();\n\n // Init the array of events, then keep listening for changes in watcher.\n this.updateMutableEvents(this.events);\n this.view.id = this.currentView;\n if (this.selectedDate) this.updateSelectedDate(this.selectedDate);else {\n this.view.selectedDate = new Date();\n this.switchView(this.currentView);\n }\n\n // Timers are expensive, this should only trigger on demand.\n if (this.time && this.watchRealTime) {\n // Snap the time ticker on sharp minutes (when seconds = 0), so that we can set\n // the time ticker interval to 60 seconds and spare some function calls.\n this.timeTickerIds[0] = setTimeout(this.timeTick, (60 - this.now.getSeconds()) * 1000);\n }\n },\n mounted() {\n const ud = this.utils.date;\n const hasTouch = 'ontouchstart' in window;\n const {\n resize,\n drag,\n create,\n delete: deletable,\n title\n } = this.editEvents;\n const hasEventClickHandler = this.onEventClick && typeof this.onEventClick === 'function';\n\n // If event is editable in any way add a mouseup event handler.\n if (resize || drag || create || deletable || title || hasEventClickHandler) {\n window.addEventListener(hasTouch ? 'touchend' : 'mouseup', this.onMouseUp);\n }\n if (resize || drag || create && this.dragToCreateEvent) {\n window.addEventListener(hasTouch ? 'touchmove' : 'mousemove', this.onMouseMove, {\n passive: false\n });\n }\n if (title) window.addEventListener('keyup', this.onKeyUp);\n\n // Disable context menu on touch devices on the whole vue-cal instance.\n if (hasTouch) {\n this.$refs.vuecal.oncontextmenu = function (e) {\n e.preventDefault();\n e.stopPropagation();\n };\n }\n\n // https://github.com/antoniandre/vue-cal/issues/221\n // if (!this.hideBody) this.alignWithScrollbar()\n\n // Emit the `ready` event with useful parameters.\n const startDate = this.view.startDate;\n const params = {\n view: this.view.id,\n startDate,\n endDate: this.view.endDate,\n ...(this.isMonthView ? {\n firstCellDate: this.view.firstCellDate,\n lastCellDate: this.view.lastCellDate\n } : {}),\n events: this.view.events.map(this.cleanupEvent),\n ...(this.isWeekView ? {\n week: ud.getWeek(this.startWeekOnSunday ? ud.addDays(startDate, 1) : startDate)\n } : {})\n };\n this.$refs['vuecal_scroll'].addEventListener('scroll', () => {\n // this.$refs['vuecal_splits_heading'].onTimelineScroll(this.$refs['vuecal_scroll'].scrollTop)\n this.$refs['vuecal_splits_heading'].style.top = `${this.$refs['vuecal_scroll'].scrollTop}px`;\n });\n this.viewportTimelineOffset = this.$refs['vuecal_scroll'].getBoundingClientRect().top;\n this.$refs['vuecal_scroll'].scrollTop = this.scrollToHour * this.timeCellHeight;\n this.$emit('ready', params);\n this.ready = true;\n },\n beforeUnmount() {\n const hasTouch = 'ontouchstart' in window;\n window.removeEventListener(hasTouch ? 'touchmove' : 'mousemove', this.onMouseMove, {\n passive: false\n });\n window.removeEventListener(hasTouch ? 'touchend' : 'mouseup', this.onMouseUp);\n window.removeEventListener('keyup', this.onKeyUp);\n\n // Don't keep the ticking running if unused.\n if (this.timeTickerIds[0]) clearTimeout(this.timeTickerIds[0]);\n if (this.timeTickerIds[1]) clearTimeout(this.timeTickerIds[1]);\n this.timeTickerIds = [null, null];\n },\n computed: {\n editEvents() {\n if (this.editableEvents && typeof this.editableEvents === 'object') {\n return {\n title: !!this.editableEvents.title,\n drag: !!this.editableEvents.drag,\n resize: !!this.editableEvents.resize,\n create: !!this.editableEvents.create,\n delete: !!this.editableEvents.delete\n };\n }\n return {\n title: !!this.editableEvents,\n drag: !!this.editableEvents,\n resize: !!this.editableEvents,\n create: !!this.editableEvents,\n delete: !!this.editableEvents\n };\n },\n views() {\n return {\n years: {\n label: this.texts.years,\n enabled: !this.disableViews.includes('years')\n },\n year: {\n label: this.texts.year,\n enabled: !this.disableViews.includes('year')\n },\n month: {\n label: this.texts.month,\n enabled: !this.disableViews.includes('month')\n },\n week: {\n label: this.texts.week,\n enabled: !this.disableViews.includes('week')\n },\n day: {\n label: this.texts.day,\n enabled: !this.disableViews.includes('day')\n }\n };\n },\n currentView() {\n return this.validateView(this.activeView);\n },\n enabledViews() {\n return Object.keys(this.views).filter(view => this.views[view].enabled);\n },\n hasTimeColumn() {\n return this.time && this.isWeekOrDayView;\n },\n isShortMonthView() {\n return this.isMonthView && this.eventsOnMonthView === 'short';\n },\n firstCellDateWeekNumber() {\n const ud = this.utils.date;\n const date = this.view.firstCellDate;\n return ud.getWeek(this.startWeekOnSunday ? ud.addDays(date, 1) : date);\n },\n // For week & day views.\n timeCells() {\n const timeCells = [];\n for (let i = this.timeFrom, max = this.timeTo; i < max; i += this.timeStep) {\n timeCells.push({\n hours: Math.floor(i / 60),\n minutes: i % 60,\n label: this.utils.date.formatTime(i, this.TimeFormat),\n // The texts (3rd param) are given on Vue Cal init.\n value: i\n });\n }\n return timeCells;\n },\n TimeFormat() {\n return this.timeFormat || (this.twelveHour ? 'h:mm{am}' : 'HH:mm');\n },\n // Filter out the day splits that are hidden.\n daySplits() {\n return (this.splitDays.filter(item => !item.hide) || []).map((item, i) => ({\n ...item,\n id: item.id || i + 1\n })); // Make sure there's always an id.\n },\n // Whether the current view has days splits.\n hasSplits() {\n return this.daySplits.length && this.isWeekOrDayView;\n },\n hasShortEvents() {\n return this.showAllDayEvents === 'short';\n },\n // Returns the min cell width or the min split width if any.\n cellOrSplitMinWidth() {\n let minWidth = null;\n if (this.hasSplits && this.minSplitWidth) minWidth = this.visibleDaysCount * this.minSplitWidth * this.daySplits.length;else if (this.minCellWidth && this.isWeekView) minWidth = this.visibleDaysCount * this.minCellWidth;\n return minWidth;\n },\n allDayBar() {\n let height = this.allDayBarHeight || null;\n if (height && !isNaN(height)) height += 'px';\n return {\n cells: this.viewCells,\n options: this.$props,\n label: this.texts.allDay,\n shortEvents: this.hasShortEvents,\n daySplits: this.hasSplits && this.daySplits || [],\n cellOrSplitMinWidth: this.cellOrSplitMinWidth,\n height\n };\n },\n minTimestamp() {\n let date = null;\n if (this.minDate && typeof this.minDate === 'string') date = this.utils.date.stringToDate(this.minDate);else if (this.minDate && this.minDate instanceof Date) date = this.minDate;\n return date ? date.getTime() : null;\n },\n maxTimestamp() {\n let date = null;\n if (this.maxDate && typeof this.maxDate === 'string') date = this.utils.date.stringToDate(this.maxDate);else if (this.maxDate && this.minDate instanceof Date) date = this.maxDate;\n return date ? date.getTime() : null;\n },\n weekDays() {\n let {\n weekDays,\n weekDaysShort = []\n } = this.texts;\n\n // Do not modify original for next instances.\n weekDays = weekDays.slice(0).map((day, i) => ({\n label: day,\n ...(weekDaysShort.length ? {\n short: weekDaysShort[i]\n } : {}),\n hide: this.hideWeekends && i >= 5 || this.hideWeekdays.length && this.hideWeekdays.includes(i + 1)\n }));\n if (this.startWeekOnSunday) weekDays.unshift(weekDays.pop());\n return weekDays;\n },\n weekDaysInHeader() {\n return this.isMonthView ||\n // hasSplits check is important here in case the user toggles the splits but keep minSplitWidth.\n this.isWeekView && !this.minCellWidth && !(this.hasSplits && this.minSplitWidth);\n },\n months() {\n return this.texts.months.map(month => ({\n label: month\n }));\n },\n // Validate and fill up the special hours object once for all at root level and not in cell.\n specialDayHours() {\n if (!this.specialHours || !Object.keys(this.specialHours).length) return {};\n return Array(7).fill('').map((cell, i) => {\n let day = this.specialHours[i + 1] || [];\n if (!Array.isArray(day)) day = [day];\n cell = [];\n day.forEach(({\n from,\n to,\n class: Class,\n label\n }, j) => {\n cell[j] = {\n day: i + 1,\n from: ![null, undefined].includes(from) ? from * 1 : null,\n to: ![null, undefined].includes(to) ? to * 1 : null,\n class: Class || '',\n label: label || ''\n };\n });\n return cell;\n });\n },\n viewTitle() {\n const ud = this.utils.date;\n let title = '';\n const date = this.view.startDate;\n const year = date.getFullYear();\n const month = date.getMonth();\n switch (this.view.id) {\n case 'years':\n {\n title = this.texts.years;\n break;\n }\n case 'year':\n {\n title = year;\n break;\n }\n case 'month':\n {\n title = `${this.months[month].label} ${year}`;\n break;\n }\n case 'week':\n {\n const lastDayOfWeek = this.view.endDate; // Might be another day than Sunday, if hiding days.\n const y1 = date.getFullYear();\n let m1 = this.texts.months[date.getMonth()];\n if (this.xsmall) m1 = m1.substring(0, 3);\n let formattedMonthYear = `${m1} ${y1}`;\n\n // If week is not ending in the same month it started in.\n if (lastDayOfWeek.getMonth() !== date.getMonth()) {\n const y2 = lastDayOfWeek.getFullYear();\n let m2 = this.texts.months[lastDayOfWeek.getMonth()];\n if (this.xsmall) m2 = m2.substring(0, 3);\n if (y1 === y2) formattedMonthYear = `${m1} - ${m2} ${y1}`;else {\n if (this.small) formattedMonthYear = `${m1.substring(0, 3)} ${y1} - ${m2.substring(0, 3)} ${y2}`;else formattedMonthYear = `${m1} ${y1} - ${m2} ${y2}`;\n }\n }\n title = `${this.texts.week} ${ud.getWeek(this.startWeekOnSunday ? ud.addDays(date, 1) : date)} (${formattedMonthYear})`;\n break;\n }\n case 'day':\n {\n title = this.utils.date.formatDate(date, this.texts.dateFormat, this.texts);\n break;\n }\n }\n return title;\n },\n viewCells() {\n const ud = this.utils.date;\n let cells = [];\n let fromYear = null;\n let todayFound = false;\n\n // If watchRealTime = true, a time ticker will keep updating this.now every minute.\n // If watchRealTime = false - and by default - update this.now value each time we rerender the cells\n // so we keep Today's date always accurate at a minimum cost and maximum performance.\n // eslint-disable-next-line\n if (!this.watchRealTime) this.now = new Date();\n const now = this.now;\n\n // console.log(this.view.id)\n\n switch (this.view.id) {\n case 'years':\n {\n fromYear = this.view.startDate.getFullYear();\n cells = Array.apply(null, Array(25)).map((cell, i) => {\n const startDate = new Date(fromYear + i, 0, 1);\n const endDate = new Date(fromYear + i + 1, 0, 1);\n endDate.setSeconds(-1); // End at 23:59:59.\n\n return {\n startDate,\n formattedDate: ud.formatDateLite(startDate),\n endDate,\n content: fromYear + i,\n current: fromYear + i === now.getFullYear()\n };\n });\n break;\n }\n case 'year':\n {\n fromYear = this.view.startDate.getFullYear();\n cells = Array.apply(null, Array(12)).map((cell, i) => {\n const startDate = new Date(fromYear, i, 1);\n const endDate = new Date(fromYear, i + 1, 1);\n endDate.setSeconds(-1); // End at 23:59:59.\n\n return {\n startDate,\n formattedDate: ud.formatDateLite(startDate),\n endDate,\n content: this.xsmall ? this.months[i].label.substr(0, 3) : this.months[i].label,\n current: i === now.getMonth() && fromYear === now.getFullYear()\n };\n });\n break;\n }\n case 'month':\n {\n const month = this.view.startDate.getMonth();\n const firstCellDate = new Date(this.view.firstCellDate);\n todayFound = false;\n\n // Create 42 cells (6 rows x 7 days) and populate them with days.\n cells = Array.apply(null, Array(42)).map((cell, i) => {\n const startDate = ud.addDays(firstCellDate, i);\n const endDate = new Date(startDate);\n endDate.setHours(23, 59, 59, 0); // End at 23:59:59.\n // To increase performance skip checking isToday if today already found.\n const isToday = !todayFound && ud.isToday(startDate) && !todayFound++;\n return {\n startDate,\n formattedDate: ud.formatDateLite(startDate),\n endDate,\n content: startDate.getDate(),\n today: isToday,\n outOfScope: startDate.getMonth() !== month,\n class: `vuecal__cell--day${startDate.getDay() || 7}`\n };\n });\n if (this.hideWeekends || this.hideWeekdays.length) {\n cells = cells.filter(cell => {\n const day = cell.startDate.getDay() || 7; // Put Sunday at position 7 instead of 0.\n\n return !(this.hideWeekends && day >= 6 || this.hideWeekdays.length && this.hideWeekdays.includes(day));\n });\n }\n break;\n }\n case 'week':\n {\n todayFound = false;\n let firstDayOfWeek = this.view.startDate;\n const weekDays = this.weekDays;\n // const isTodayInView \t= moment(this.view.startDate).week() == moment().week()\n // const weekDayTemplate\t= {label: '', hide: 0}\n // let firstDayOfWeek \t\t= null\n\n // if (isTodayInView) {\n // \tthis.view.startDate = new Date(moment().subtract(1, 'days'))\n\n // \tfor (let i = 0; i <= 9 - weekDays.length ; i += 1) {\n // \t\tweekDays.push(weekDayTemplate)\n // \t}\n // } else {\n // \twhile(weekDays.length > 7) {\n // \t\tweekDays.pop()\n // \t}\n // }\n\n // firstDayOfWeek = this.view.startDate\n\n cells = weekDays.map((cell, i) => {\n const startDate = ud.addDays(firstDayOfWeek, this.startWeekOnSunday ? i - 1 : i);\n const endDate = new Date(startDate);\n endDate.setHours(23, 59, 59, 0); // End at 23:59:59.\n const dayOfWeek = (startDate.getDay() || 7) - 1; // Day of the week from 0 to 6 with 6 = Sunday.\n\n return {\n startDate,\n formattedDate: ud.formatDateLite(startDate),\n endDate,\n // To increase performance skip checking isToday if today already found.\n today: !todayFound && ud.isToday(startDate) && !todayFound++,\n specialHours: this.specialDayHours[dayOfWeek] || []\n };\n }).filter((cell, i) => !weekDays[i].hide);\n break;\n }\n case 'day':\n {\n const startDate = this.view.startDate;\n const endDate = new Date(this.view.startDate);\n endDate.setHours(23, 59, 59, 0); // End at 23:59:59.\n const dayOfWeek = (startDate.getDay() || 7) - 1; // Day of the week from 0 to 6 with 6 = Sunday.\n\n cells = [{\n startDate,\n formattedDate: ud.formatDateLite(startDate),\n endDate,\n today: ud.isToday(startDate),\n specialHours: this.specialDayHours[dayOfWeek] || []\n }];\n break;\n }\n }\n return cells;\n },\n // Only when hiding weekdays on month and week views.\n visibleDaysCount() {\n if (this.isDayView) return 1;\n return 7 - this.weekDays.reduce((total, day) => total + day.hide, 0);\n },\n cellWidth() {\n return 100 / this.visibleDaysCount;\n },\n cssClasses() {\n const {\n resizeAnEvent,\n dragAnEvent,\n dragCreateAnEvent\n } = this.domEvents;\n return {\n [`vuecal--${this.view.id}-view`]: true,\n [`vuecal--${this.locale}`]: this.locale,\n 'vuecal--no-time': !this.time,\n 'vuecal--view-with-time': this.hasTimeColumn,\n 'vuecal--week-numbers': this.showWeekNumbers && this.isMonthView,\n 'vuecal--twelve-hour': this.twelveHour,\n 'vuecal--click-to-navigate': this.clickToNavigate,\n 'vuecal--hide-weekends': this.hideWeekends,\n 'vuecal--split-days': this.hasSplits,\n 'vuecal--sticky-split-labels': this.hasSplits && this.stickySplitLabels,\n 'vuecal--overflow-x': this.minCellWidth && this.isWeekView || this.hasSplits && this.minSplitWidth,\n 'vuecal--small': this.small,\n 'vuecal--xsmall': this.xsmall,\n 'vuecal--resizing-event': resizeAnEvent._eid,\n 'vuecal--drag-creating-event': dragCreateAnEvent.event,\n 'vuecal--dragging-event': dragAnEvent._eid,\n 'vuecal--events-on-month-view': this.eventsOnMonthView,\n 'vuecal--short-events': this.isMonthView && this.eventsOnMonthView === 'short',\n 'vuecal--has-touch': typeof window !== 'undefined' && 'ontouchstart' in window\n };\n },\n isYearsOrYearView() {\n return ['years', 'year'].includes(this.view.id);\n },\n isYearsView() {\n return this.view.id === 'years';\n },\n isYearView() {\n return this.view.id === 'year';\n },\n isMonthView() {\n return this.view.id === 'month';\n },\n isWeekOrDayView() {\n return ['week', 'day'].includes(this.view.id);\n },\n isWeekView() {\n return this.view.id === 'week';\n },\n isDayView() {\n return this.view.id === 'day';\n }\n },\n watch: {\n events: {\n // To be able to detect an event attribute change, it has to be first initialized with a value.\n handler(events, oldEvents) {\n this.updateMutableEvents(events);\n this.addEventsToView();\n },\n deep: true\n },\n locale(locale) {\n this.loadLocale(locale);\n },\n selectedDate(date) {\n this.updateSelectedDate(date);\n },\n activeView(newVal) {\n this.switchView(newVal);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/weekdays-headings.vue?vue&type=script&lang=js":
/*!*******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/weekdays-headings.vue?vue&type=script&lang=js ***!
\*******************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.reduce.js */ \"./node_modules/core-js/modules/esnext.iterator.reduce.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inject: ['vuecal', 'utils', 'view'],\n props: {\n transitionDirection: {\n type: String,\n default: 'right'\n },\n weekDays: {\n type: Array,\n default: () => []\n },\n switchToNarrowerView: {\n type: Function,\n default: () => {}\n },\n unscheduledTime: {\n type: Array,\n default: []\n }\n // viewPortOffset: { type: Number, default: 0 },\n },\n methods: {\n selectCell(date, DOMEvent) {\n if (date.getTime() !== this.view.selectedDate.getTime()) {\n this.view.selectedDate = date;\n }\n this.utils.cell.selectCell(false, date, DOMEvent);\n },\n cleanupHeading: heading => ({\n label: heading.full,\n date: heading.date,\n unscheduledTime: heading.unscheduledTime,\n name: heading.name,\n initials: heading.initials,\n ...(heading.today ? {\n today: heading.today\n } : {})\n }),\n onTimelineScroll(viewPortOffset) {\n this.$refs['vuecal_weekday_heading'].style.top = `${viewPortOffset}px`;\n }\n },\n computed: {\n headings() {\n if (!['month', 'week'].includes(this.view.id)) return [];\n let todayFound = false;\n const headings = this.weekDays.map((cell, i) => {\n const date = this.utils.date.addDays(this.view.startDate, this.vuecal.startWeekOnSunday ? i - 1 : i);\n let unscheduledTime = null;\n let name = null;\n let initials = null;\n if (this.unscheduledTime[i]?.time) {\n unscheduledTime = Math.floor(this.unscheduledTime[i].time / 60) + \",\" + String(this.unscheduledTime[i].time % 60)[0];\n }\n if (this.unscheduledTime[i]?.name && this.unscheduledTime[i]?.name) {\n name = this.unscheduledTime[i].name + \" \" + this.unscheduledTime[i].surname;\n initials = this.unscheduledTime[i].name.charAt(0).toUpperCase() + this.unscheduledTime[i].surname.charAt(0).toUpperCase();\n }\n return {\n hide: cell.hide,\n full: cell.label,\n // If defined in i18n file, weekDaysShort overrides default truncation of\n // week days when does not fit on screen or with small/xsmall options.\n small: cell.short || cell.label.substr(0, 3),\n xsmall: cell.short || cell.label.substr(0, 1),\n unscheduledTime: unscheduledTime,\n name: name,\n initials: initials,\n // Only for week view.\n ...(this.view.id === 'week' ? {\n dayOfMonth: date.getDate(),\n date,\n today: !todayFound && this.utils.date.isToday(date) && !todayFound++\n } : {})\n };\n });\n return headings;\n },\n cellWidth() {\n return 100 / (7 - this.weekDays.reduce((total, day) => total + day.hide, 0));\n },\n weekdayCellStyles() {\n return {\n ...(this.vuecal.hideWeekdays.length ? {\n width: `${this.cellWidth}%`\n } : {})\n };\n },\n cellHeadingsClickable() {\n return this.view.id === 'week' && (this.vuecal.clickToNavigate || this.vuecal.dblclickToNavigate);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/weekdays-headings.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@_components/z-datepicker.vue?vue&type=script&lang=js":
/*!**********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@_components/z-datepicker.vue?vue&type=script&lang=js ***!
\**********************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'ZDatepicker',\n components: {\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n },\n props: {\n modelValue: {\n type: [Date, String, null],\n default: null\n },\n label: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'open', 'closed'],\n data() {\n return {\n uniqueId: `z-datepicker-${crypto.randomUUID()}`\n };\n },\n computed: {\n hasValue() {\n return this.modelValue != null && this.modelValue !== '';\n }\n },\n methods: {\n handleUpdate(value) {\n this.$emit('update:modelValue', value);\n },\n handleOpen(event) {\n this.$emit('open', event);\n },\n handleClose(event) {\n this.$emit('closed', event);\n },\n handleClick(event) {\n // Only handle clicks on the wrapper itself, not on the datepicker's internal clear button\n if (event.target.closest('.dp__clear_icon')) {\n return; // Let the clear button work normally\n }\n\n // Open the menu programmatically\n if (this.$refs.datepickerRef?.openMenu) {\n this.$refs.datepickerRef.openMenu();\n }\n },\n openMenu() {\n if (this.$refs.datepickerRef?.openMenu) {\n this.$refs.datepickerRef.openMenu();\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@_components/z-datepicker.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@_components/z-files-upload.vue?vue&type=script&lang=js":
/*!************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@_components/z-files-upload.vue?vue&type=script&lang=js ***!
\************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n emit: ['files-uploaded'],\n props: {\n files: {\n type: Array,\n default: () => []\n },\n isSaving: {\n type: Boolean,\n required: false\n }\n },\n data() {\n return {\n uploadedFiles: []\n };\n },\n created() {\n this.uploadedFiles = this.files;\n },\n methods: {\n onChange() {\n const files = [...this.$refs.fileUpload.files];\n const maxSize = 50 * 1024 * 1024;\n const oversizedFiles = files.filter(file => file.size > maxSize);\n if (oversizedFiles.length > 0) {\n this.$toast.error('File is too large. Maximum file size is 50 MB.');\n return;\n }\n this.uploadedFiles = [...this.uploadedFiles, ...files];\n this.$emit('files-uploaded', this.uploadedFiles);\n this.$refs.fileUpload.value = '';\n },\n remove(index) {\n this.uploadedFiles.splice(index, 1);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@_components/z-files-upload.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-close-button.vue?vue&type=script&lang=js":
/*!******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-close-button.vue?vue&type=script&lang=js ***!
\******************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'ACloseButton',\n emits: ['close'],\n methods: {\n handleClose() {\n this.$emit('close');\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/a-close-button.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-reset-size-button.vue?vue&type=script&lang=js":
/*!***********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-reset-size-button.vue?vue&type=script&lang=js ***!
\***********************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'AResetSizeButton',\n emits: ['reset'],\n methods: {\n handleReset() {\n this.$emit('reset');\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/a-reset-size-button.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-resize-handle.vue?vue&type=script&lang=js":
/*!*******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-resize-handle.vue?vue&type=script&lang=js ***!
\*******************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'AResizeHandle',\n props: {\n currentWidth: {\n type: [String, Number],\n default: '100%'\n },\n currentHeight: {\n type: [String, Number],\n default: '100%'\n }\n },\n emits: ['resize', 'resize-end'],\n data() {\n return {\n isResizing: false,\n startX: 0,\n startY: 0,\n startWidth: 0,\n startHeight: 0\n };\n },\n beforeUnmount() {\n // Clean up event listeners if component is destroyed during resize\n if (this.isResizing) {\n this.stopResize();\n }\n },\n methods: {\n startResize(event) {\n // Prevent default to avoid text selection during drag\n event.preventDefault();\n this.isResizing = true;\n\n // Store initial position and size\n if (event.type === 'touchstart') {\n this.startX = event.touches[0].clientX;\n this.startY = event.touches[0].clientY;\n } else {\n this.startX = event.clientX;\n this.startY = event.clientY;\n }\n\n // Parse current dimensions to pixels\n this.startWidth = this.parseToPixels(this.currentWidth, 'width');\n this.startHeight = this.parseToPixels(this.currentHeight, 'height');\n\n // Add event listeners for move and end\n document.addEventListener('mousemove', this.handleResize);\n document.addEventListener('mouseup', this.stopResize);\n document.addEventListener('touchmove', this.handleResize);\n document.addEventListener('touchend', this.stopResize);\n\n // Add cursor style to body\n document.body.style.cursor = 'nwse-resize';\n },\n handleResize(event) {\n if (!this.isResizing) return;\n let clientX, clientY;\n if (event.type === 'touchmove') {\n clientX = event.touches[0].clientX;\n clientY = event.touches[0].clientY;\n } else {\n clientX = event.clientX;\n clientY = event.clientY;\n }\n\n // Calculate the difference\n const deltaX = clientX - this.startX;\n const deltaY = clientY - this.startY;\n\n // Calculate new dimensions\n const newWidth = this.startWidth + deltaX;\n const newHeight = this.startHeight + deltaY;\n\n // Emit resize event with new dimensions\n this.$emit('resize', {\n width: newWidth,\n height: newHeight\n });\n },\n stopResize() {\n if (!this.isResizing) return;\n this.isResizing = false;\n\n // Remove event listeners\n document.removeEventListener('mousemove', this.handleResize);\n document.removeEventListener('mouseup', this.stopResize);\n document.removeEventListener('touchmove', this.handleResize);\n document.removeEventListener('touchend', this.stopResize);\n\n // Reset cursor style\n document.body.style.cursor = '';\n\n // Emit final resize event\n this.$emit('resize-end');\n },\n parseToPixels(value, type) {\n if (typeof value === 'number') {\n return value;\n }\n\n // Remove 'px' suffix if present\n const numericValue = parseFloat(value);\n\n // If it's a percentage, calculate based on viewport\n if (typeof value === 'string' && value.includes('%')) {\n const percent = numericValue;\n return type === 'height' ? window.innerHeight * percent / 100 : window.innerWidth * percent / 100;\n }\n return numericValue || 600; // Fallback to 600px\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/a-resize-handle.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-created-by.vue?vue&type=script&lang=js":
/*!**************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-created-by.vue?vue&type=script&lang=js ***!
\**************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n employeeId: {\n type: [Number],\n required: false\n }\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapGetters)('tm', ['enrichedEmployees']),\n employee() {\n return this.enrichedEmployees.find(employee => employee.id == this.employeeId);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-created-by.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-deadline.vue?vue&type=script&lang=js":
/*!************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-deadline.vue?vue&type=script&lang=js ***!
\************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n deadline: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n };\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-deadline.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-description.vue?vue&type=script&lang=js":
/*!***************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-description.vue?vue&type=script&lang=js ***!
\***************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_utils_server_links_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@_utils/server-links.utils */ \"./src/plugins/tm@_utils/server-links.utils.ts\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n description: {\n type: String || null,\n default: () => null\n },\n inheritedDescription: {\n type: String || null,\n default: () => null\n }\n },\n data() {\n return {\n copiedIndices: [],\n preparedDescription: '',\n preparedInheritedDescription: ''\n };\n },\n mounted() {\n this.preparedDescription = (0,_plugins_tm_utils_server_links_utils__WEBPACK_IMPORTED_MODULE_0__.prepareHTMLDescription)(this.description);\n this.preparedInheritedDescription = (0,_plugins_tm_utils_server_links_utils__WEBPACK_IMPORTED_MODULE_0__.prepareHTMLDescription)(this.inheritedDescription);\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-description.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-estimated-duration.vue?vue&type=script&lang=js":
/*!**********************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-estimated-duration.vue?vue&type=script&lang=js ***!
\**********************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n hours: {\n type: [Number, undefined]\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-estimated-duration.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-files.vue?vue&type=script&lang=js":
/*!*********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-files.vue?vue&type=script&lang=js ***!
\*********************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n files: {\n type: Array,\n default: () => []\n }\n },\n data() {\n return {\n isLoading: false\n };\n },\n methods: {\n async downloadFile(file) {\n file.isLoading = true; // Show loader\n\n try {\n const response = await fetch(file.path);\n const blob = await response.blob();\n file_saver__WEBPACK_IMPORTED_MODULE_0__.saveAs(blob, file.name);\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n } finally {\n file.isLoading = false;\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-files.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-planned-time.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-planned-time.vue?vue&type=script&lang=js ***!
\****************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n hours: {\n type: Number,\n required: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-planned-time.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-remaining-time.vue?vue&type=script&lang=js":
/*!******************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-remaining-time.vue?vue&type=script&lang=js ***!
\******************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n hours: {\n type: Number,\n required: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-remaining-time.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-spent-time.vue?vue&type=script&lang=js":
/*!**************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-spent-time.vue?vue&type=script&lang=js ***!
\**************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n hours: {\n type: Number,\n required: true\n },\n isExceeded: {\n type: Boolean,\n required: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-spent-time.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-status.vue?vue&type=script&lang=js":
/*!**********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-status.vue?vue&type=script&lang=js ***!
\**********************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n status: {\n type: Number,\n required: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-status.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-team.vue?vue&type=script&lang=js":
/*!********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-team.vue?vue&type=script&lang=js ***!
\********************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n team: {\n type: Object,\n required: false\n },\n employees: {\n type: Array,\n required: true\n }\n },\n computed: {\n enrichedEmployeesInTeam() {\n if (!this.team?.employees) return [];\n return _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].enrichEmployees(this.team.employees);\n },\n enrichedEmployeesOutsideTeam() {\n if (!this.team) return _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].enrichEmployees(this.employees);\n const employeesOutsideOfTeam = this.employees.filter(employee => !this.team.employees.find(em => em.id == employee.id));\n return _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].enrichEmployees(employeesOutsideOfTeam);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-team.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/blocker/z-blocker-modal.vue?vue&type=script&lang=js":
/*!***************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/blocker/z-blocker-modal.vue?vue&type=script&lang=js ***!
\***************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _plugins_tm_components_z_datepicker_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@_components/z-datepicker.vue */ \"./src/plugins/tm@_components/z-datepicker.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ZDatepicker: _plugins_tm_components_z_datepicker_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n // ZAutocomplete\n },\n mixins: [_plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_9__[\"default\"]],\n emits: ['close'],\n data() {\n return {\n visible: false,\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n blocker: null,\n datepicker: null,\n starts_at_time: null,\n ends_at_time: null,\n employee: null\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_6__.mapGetters)('tm', ['enrichedEmployees']),\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_6__.mapGetters)('auth', ['user'])\n },\n validations() {\n return {\n blocker: {\n name: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_4__.required\n },\n start: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_4__.required\n },\n end: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_4__.required\n }\n // employee: { required }\n },\n starts_at_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_4__.required\n },\n ends_at_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_4__.required\n },\n datepicker: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_4__.required\n }\n };\n },\n watch: {\n ends_at_time() {\n this._syncDatesTimes();\n },\n starts_at_time() {\n this._syncDatesTimes();\n },\n datepicker() {\n this._syncDatesTimes();\n }\n },\n methods: {\n async showModal({\n blocker\n }) {\n this.visible = true;\n this.blocker = null;\n this.datepicker = null;\n this.starts_at_time = null;\n this.ends_at_time = null;\n this.$nextTick(() => {\n this.v$.$reset();\n });\n try {\n if (blocker?.id) {\n blocker = await this.$axios.get_auth_data(`v1/blockers/${blocker.id}`);\n this.starts_at_time = moment__WEBPACK_IMPORTED_MODULE_7___default()(blocker.start).format('HH:mm');\n this.ends_at_time = moment__WEBPACK_IMPORTED_MODULE_7___default()(blocker.end).format('HH:mm');\n this.datepicker = new Date(blocker.start);\n blocker.employee_id = blocker.employee.id;\n //fixnut validacie employee_id\n this.blocker = blocker;\n } else {\n this.blocker = {\n start: null,\n employee_id: this.user.id\n };\n if (blocker.starts_at_time && blocker.datepicker && blocker.employee_id) {\n this.datepicker = blocker.datepicker;\n this.starts_at_time = blocker.starts_at_time;\n this.blocker.employee_id = blocker.employee_id;\n }\n }\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n }\n },\n async save() {\n if (!(await this.v$.$validate())) return;\n try {\n // this.blocker.employee_id = this.blocker.employee?.id\n\n if (this.blocker.id) {\n const {\n blocker\n } = await this.$axios.put_auth(`v1/blockers/${this.blocker.id}`, this.blocker);\n this.blocker = blocker;\n } else {\n const {\n blocker\n } = await this.$axios.post_auth('v1/blockers', this.blocker);\n this.blocker = blocker;\n }\n this.$events.emit('on-blocker-edited', this.blocker);\n this.$events.emit('blocker-created');\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n }\n },\n closeModal() {\n this.visible = false;\n this.$emit('close', this.blocker);\n },\n onEmployeeSelected({\n key\n }) {\n this.blocker.employee = this.enrichedEmployees.find(employee => employee.id == key);\n },\n _syncDatesTimes() {\n if (!this.starts_at_time || !this.ends_at_time || !this.datepicker) return;\n const splittedStart = this.starts_at_time.split(':');\n const splittedEnd = this.ends_at_time.split(':');\n this.blocker.start = moment__WEBPACK_IMPORTED_MODULE_7___default()(this.datepicker).set({\n hours: parseInt(splittedStart[0]),\n minutes: parseInt(splittedStart[1])\n }).format('YYYY-MM-DD HH:mm');\n this.blocker.end = moment__WEBPACK_IMPORTED_MODULE_7___default()(this.datepicker).set({\n hours: parseInt(splittedEnd[0]),\n minutes: parseInt(splittedEnd[1])\n }).format('YYYY-MM-DD HH:mm');\n }\n }\n});\n/* istanbul ignore next */\nfunction oo_cm() {\n try {\n return (0, eval)('globalThis._console_ninja') || (0, eval)(\"/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0x3bb860=_0x1415;(function(_0x56f424,_0x281bb7){var _0x578595=_0x1415,_0x2349f8=_0x56f424();while(!![]){try{var _0x3a5c11=-parseInt(_0x578595(0x177))/0x1+parseInt(_0x578595(0xce))/0x2*(parseInt(_0x578595(0xab))/0x3)+-parseInt(_0x578595(0xe0))/0x4+-parseInt(_0x578595(0xa3))/0x5+parseInt(_0x578595(0x138))/0x6+parseInt(_0x578595(0x70))/0x7*(parseInt(_0x578595(0x123))/0x8)+parseInt(_0x578595(0x131))/0x9;if(_0x3a5c11===_0x281bb7)break;else _0x2349f8['push'](_0x2349f8['shift']());}catch(_0x1e619a){_0x2349f8['push'](_0x2349f8['shift']());}}}(_0x4e1d,0xdeb8a));function _0x1415(_0x47fe6b,_0x151885){var _0x4e1d5f=_0x4e1d();return _0x1415=function(_0x14150b,_0x79b2a3){_0x14150b=_0x14150b-0x6a;var _0x3e24b4=_0x4e1d5f[_0x14150b];return _0x3e24b4;},_0x1415(_0x47fe6b,_0x151885);}function z(_0x24a155,_0x4b4c5c,_0x5910f9,_0x1b7610,_0x103ee4,_0x1467ae){var _0x51301a=_0x1415,_0x33e993,_0x5b9a4b,_0x5d3157,_0x1fc7d9;this[_0x51301a(0x102)]=_0x24a155,this[_0x51301a(0x88)]=_0x4b4c5c,this[_0x51301a(0xe4)]=_0x5910f9,this[_0x51301a(0xfd)]=_0x1b7610,this[_0x51301a(0x10f)]=_0x103ee4,this[_0x51301a(0x76)]=_0x1467ae,this[_0x51301a(0x99)]=!0x0,this[_0x51301a(0x125)]=!0x0,this[_0x51301a(0x126)]=!0x1,this[_0x51301a(0xf5)]=!0x1,this[_0x51301a(0xc6)]=((_0x5b9a4b=(_0x33e993=_0x24a155[_0x51301a(0x167)])==null?void 0x0:_0x33e993[_0x51301a(0x11b)])==null?void 0x0:_0x5b9a4b[_0x51301a(0xe8)])===_0x51301a(0xd2),this['_inBrowser']=!((_0x1fc7d9=(_0x5d3157=this['global'][_0x51301a(0x167)])==null?void 0x0:_0x5d3157[_0x51301a(0x149)])!=null&&_0x1fc7d9['node'])&&!this[_0x51301a(0xc6)],this['_WebSocketClass']=null,this[_0x51301a(0x6a)]=0x0,this[_0x51301a(0x89)]=0x14,this['_webSocketErrorDocsLink']=_0x51301a(0x111),this[_0x51301a(0x73)]=(this[_0x51301a(0xee)]?_0x51301a(0x9e):_0x51301a(0x12e))+this[_0x51301a(0x16b)];}z[_0x3bb860(0x166)][_0x3bb860(0xba)]=async function(){var _0x4e59d7=_0x3bb860,_0x4597cb,_0xd38ba8;if(this[_0x4e59d7(0x176)])return this[_0x4e59d7(0x176)];let _0x4fce50;if(this[_0x4e59d7(0xee)]||this[_0x4e59d7(0xc6)])_0x4fce50=this['global'][_0x4e59d7(0x8b)];else{if((_0x4597cb=this['global'][_0x4e59d7(0x167)])!=null&&_0x4597cb[_0x4e59d7(0x158)])_0x4fce50=(_0xd38ba8=this[_0x4e59d7(0x102)][_0x4e59d7(0x167)])==null?void 0x0:_0xd38ba8[_0x4e59d7(0x158)];else try{_0x4fce50=(await new Function(_0x4e59d7(0xbf),_0x4e59d7(0x78),_0x4e59d7(0xfd),_0x4e59d7(0x15a))(await(0x0,eval)(_0x4e59d7(0x85)),await(0x0,eval)(_0x4e59d7(0xb5)),this[_0x4e59d7(0xfd)]))['default'];}catch{try{_0x4fce50=require(require(_0x4e59d7(0xbf))['join'](this[_0x4e59d7(0xfd)],'ws'));}catch{throw new Error('failed\\\\x20to\\\\x20find\\\\x20and\\\\x20load\\\\x20WebSocket');}}}return this[_0x4e59d7(0x176)]=_0x4fce50,_0x4fce50;},z[_0x3bb860(0x166)][_0x3bb860(0x6c)]=function(){var _0x238fd3=_0x3bb860;this[_0x238fd3(0xf5)]||this[_0x238fd3(0x126)]||this[_0x238fd3(0x6a)]>=this[_0x238fd3(0x89)]||(this[_0x238fd3(0x125)]=!0x1,this['_connecting']=!0x0,this['_connectAttemptCount']++,this[_0x238fd3(0x11d)]=new Promise((_0x13a915,_0x21b0d7)=>{var _0x525468=_0x238fd3;this[_0x525468(0xba)]()['then'](_0x5b01ba=>{var _0x22c3de=_0x525468;let _0x2d3688=new _0x5b01ba(_0x22c3de(0xc2)+(!this[_0x22c3de(0xee)]&&this[_0x22c3de(0x10f)]?_0x22c3de(0x143):this['host'])+':'+this[_0x22c3de(0xe4)]);_0x2d3688[_0x22c3de(0x8d)]=()=>{var _0x225989=_0x22c3de;this[_0x225989(0x99)]=!0x1,this[_0x225989(0xc7)](_0x2d3688),this[_0x225989(0x161)](),_0x21b0d7(new Error(_0x225989(0x137)));},_0x2d3688['onopen']=()=>{var _0x5c704f=_0x22c3de;this[_0x5c704f(0xee)]||_0x2d3688[_0x5c704f(0xdb)]&&_0x2d3688[_0x5c704f(0xdb)]['unref']&&_0x2d3688[_0x5c704f(0xdb)][_0x5c704f(0x151)](),_0x13a915(_0x2d3688);},_0x2d3688[_0x22c3de(0x121)]=()=>{var _0x4945c9=_0x22c3de;this[_0x4945c9(0x125)]=!0x0,this['_disposeWebsocket'](_0x2d3688),this['_attemptToReconnectShortly']();},_0x2d3688[_0x22c3de(0x113)]=_0x2053ed=>{var _0x47d471=_0x22c3de;try{if(!(_0x2053ed!=null&&_0x2053ed[_0x47d471(0xfc)])||!this[_0x47d471(0x76)])return;let _0x455e7c=JSON[_0x47d471(0x175)](_0x2053ed['data']);this[_0x47d471(0x76)](_0x455e7c[_0x47d471(0xd3)],_0x455e7c[_0x47d471(0x115)],this[_0x47d471(0x102)],this[_0x47d471(0xee)]);}catch{}};})['then'](_0x162101=>(this[_0x525468(0x126)]=!0x0,this[_0x525468(0xf5)]=!0x1,this[_0x525468(0x125)]=!0x1,this['_allowedToSend']=!0x0,this[_0x525468(0x6a)]=0x0,_0x162101))['catch'](_0xa697f4=>(this[_0x525468(0x126)]=!0x1,this[_0x525468(0xf5)]=!0x1,console[_0x525468(0xf7)](_0x525468(0x95)+this[_0x525468(0x16b)]),_0x21b0d7(new Error(_0x525468(0xd6)+(_0xa697f4&&_0xa697f4[_0x525468(0x146)])))));}));},z[_0x3bb860(0x166)][_0x3bb860(0xc7)]=function(_0x310b79){var _0xc4bfe7=_0x3bb860;this[_0xc4bfe7(0x126)]=!0x1,this[_0xc4bfe7(0xf5)]=!0x1;try{_0x310b79[_0xc4bfe7(0x121)]=null,_0x310b79['onerror']=null,_0x310b79['onopen']=null;}catch{}try{_0x310b79[_0xc4bfe7(0xa0)]<0x2&&_0x310b79[_0xc4bfe7(0xb9)]();}catch{}},z[_0x3bb860(0x166)][_0x3bb860(0x161)]=function(){var _0xeb4151=_0x3bb860;clearTimeout(this[_0xeb4151(0x98)]),!(this[_0xeb4151(0x6a)]>=this[_0xeb4151(0x89)])&&(this[_0xeb4151(0x98)]=setTimeout(()=>{var _0x1946d6=_0xeb4151,_0x4e1390;this[_0x1946d6(0x126)]||this[_0x1946d6(0xf5)]||(this['_connectToHostNow'](),(_0x4e1390=this['_ws'])==null||_0x4e1390['catch'](()=>this[_0x1946d6(0x161)]()));},0x1f4),this[_0xeb4151(0x98)][_0xeb4151(0x151)]&&this[_0xeb4151(0x98)][_0xeb4151(0x151)]());},z[_0x3bb860(0x166)][_0x3bb860(0x172)]=async function(_0xe28174){var _0x17b86c=_0x3bb860;try{if(!this[_0x17b86c(0x99)])return;this[_0x17b86c(0x125)]&&this[_0x17b86c(0x6c)](),(await this['_ws'])['send'](JSON[_0x17b86c(0xb6)](_0xe28174));}catch(_0x382eee){this['_extendedWarning']?console[_0x17b86c(0xf7)](this[_0x17b86c(0x73)]+':\\\\x20'+(_0x382eee&&_0x382eee['message'])):(this[_0x17b86c(0x9b)]=!0x0,console[_0x17b86c(0xf7)](this[_0x17b86c(0x73)]+':\\\\x20'+(_0x382eee&&_0x382eee[_0x17b86c(0x146)]),_0xe28174)),this[_0x17b86c(0x99)]=!0x1,this[_0x17b86c(0x161)]();}};function H(_0x4007a6,_0x7f3615,_0x44871c,_0x3fda34,_0x42d82c,_0x255a3e,_0x1ac7c5,_0x253dd4=ne){var _0x3da3a8=_0x3bb860;let _0x24dfae=_0x44871c[_0x3da3a8(0x11e)](',')[_0x3da3a8(0xd5)](_0x453732=>{var _0x41af42=_0x3da3a8,_0x253dbd,_0x1fcf43,_0x44930f,_0x299886,_0x5d734b,_0x482ba2,_0x14c56a;try{if(!_0x4007a6[_0x41af42(0x14a)]){let _0x2b832b=((_0x1fcf43=(_0x253dbd=_0x4007a6['process'])==null?void 0x0:_0x253dbd[_0x41af42(0x149)])==null?void 0x0:_0x1fcf43[_0x41af42(0x153)])||((_0x299886=(_0x44930f=_0x4007a6[_0x41af42(0x167)])==null?void 0x0:_0x44930f['env'])==null?void 0x0:_0x299886[_0x41af42(0xe8)])===_0x41af42(0xd2);(_0x42d82c==='next.js'||_0x42d82c===_0x41af42(0xa9)||_0x42d82c===_0x41af42(0xcc)||_0x42d82c==='angular')&&(_0x42d82c+=_0x2b832b?_0x41af42(0x156):_0x41af42(0x11f));let _0x4bd77b='';_0x42d82c===_0x41af42(0xaa)&&(_0x4bd77b=(((_0x14c56a=(_0x482ba2=(_0x5d734b=_0x4007a6[_0x41af42(0x74)])==null?void 0x0:_0x5d734b[_0x41af42(0x6f)])==null?void 0x0:_0x482ba2[_0x41af42(0x72)])==null?void 0x0:_0x14c56a['osName'])||'')[_0x41af42(0x130)](),_0x4bd77b&&(_0x42d82c+='\\\\x20'+_0x4bd77b,_0x4bd77b===_0x41af42(0xd0)&&(_0x7f3615='10.0.2.2'))),_0x4007a6[_0x41af42(0x14a)]={'id':+new Date(),'tool':_0x42d82c},_0x1ac7c5&&_0x42d82c&&!_0x2b832b&&(_0x4bd77b?console[_0x41af42(0x119)](_0x41af42(0xcf)+_0x4bd77b+_0x41af42(0x6e)):console[_0x41af42(0x119)](_0x41af42(0xaf)+(_0x42d82c[_0x41af42(0x162)](0x0)[_0x41af42(0xad)]()+_0x42d82c[_0x41af42(0xd4)](0x1))+',',_0x41af42(0xbc),'see\\\\x20https://tinyurl.com/2vt8jxzw\\\\x20for\\\\x20more\\\\x20info.'));}let _0x4de09c=new z(_0x4007a6,_0x7f3615,_0x453732,_0x3fda34,_0x255a3e,_0x253dd4);return _0x4de09c[_0x41af42(0x172)][_0x41af42(0xc0)](_0x4de09c);}catch(_0x17909b){return console['warn'](_0x41af42(0x84),_0x17909b&&_0x17909b[_0x41af42(0x146)]),()=>{};}});return _0x22ddfa=>_0x24dfae[_0x3da3a8(0x11a)](_0x3bc35e=>_0x3bc35e(_0x22ddfa));}function ne(_0x1fd219,_0x333fdc,_0x47d769,_0x45bbd3){var _0x6922c2=_0x3bb860;_0x45bbd3&&_0x1fd219===_0x6922c2(0x16e)&&_0x47d769[_0x6922c2(0x170)][_0x6922c2(0x16e)]();}function b(_0x1be91c){var _0x168b8c=_0x3bb860,_0x2c3d08,_0x8f1a04;let _0x2f7b8f=function(_0x19089c,_0x523e04){return _0x523e04-_0x19089c;},_0x204928;if(_0x1be91c[_0x168b8c(0x9c)])_0x204928=function(){var _0x4c8584=_0x168b8c;return _0x1be91c[_0x4c8584(0x9c)][_0x4c8584(0xe6)]();};else{if(_0x1be91c[_0x168b8c(0x167)]&&_0x1be91c['process'][_0x168b8c(0x15d)]&&((_0x8f1a04=(_0x2c3d08=_0x1be91c['process'])==null?void 0x0:_0x2c3d08['env'])==null?void 0x0:_0x8f1a04[_0x168b8c(0xe8)])!==_0x168b8c(0xd2))_0x204928=function(){var _0x10f78d=_0x168b8c;return _0x1be91c['process'][_0x10f78d(0x15d)]();},_0x2f7b8f=function(_0x1a41e2,_0x4523ee){return 0x3e8*(_0x4523ee[0x0]-_0x1a41e2[0x0])+(_0x4523ee[0x1]-_0x1a41e2[0x1])/0xf4240;};else try{let {performance:_0x5b1c98}=require('perf_hooks');_0x204928=function(){var _0x4f0b5b=_0x168b8c;return _0x5b1c98[_0x4f0b5b(0xe6)]();};}catch{_0x204928=function(){return+new Date();};}}return{'elapsed':_0x2f7b8f,'timeStamp':_0x204928,'now':()=>Date[_0x168b8c(0xe6)]()};}function _0x4e1d(){var _0x55c7b0=['_isNegativeZero','[object\\\\x20Set]','_connecting','pop','warn','_property','constructor','_console_ninja','level','data','nodeModules','_getOwnPropertyDescriptor','_setNodePermissions','parent','_getOwnPropertyNames','global','_setNodeQueryPath','_addFunctionsNode','time','POSITIVE_INFINITY','object','_isSet','[object\\\\x20Date]','negativeInfinity','elements','timeStamp','_numberRegExp','osName','dockerizedApp','_dateToString','https://tinyurl.com/37x8b79t','valueOf','onmessage','_capIfString','args','resolveGetters','resetWhenQuietMs','Number','log','forEach','env','cappedElements','_ws','split','\\\\x20browser','_undefined','onclose','_propertyName','19480KjoQTx','root_exp_id','_allowedToConnectOnSend','_connected','_quotedRegExp','nan','funcName','_getOwnPropertySymbols','_sortProps','_Symbol','_setNodeId','Console\\\\x20Ninja\\\\x20failed\\\\x20to\\\\x20send\\\\x20logs,\\\\x20restarting\\\\x20the\\\\x20process\\\\x20may\\\\x20help;\\\\x20also\\\\x20see\\\\x20','Map','toLowerCase','13103964QpnQvW','String','array','_cleanNode','push','_processTreeNodeResult','logger\\\\x20websocket\\\\x20error','1870254SUWmxz','_addProperty','_objectToString','_isPrimitiveType','strLength','serialize','_isPrimitiveWrapperType','_addObjectProperty','elapsed','boolean','trace','gateway.docker.internal','Symbol','autoExpand','message','_p_length','reduceLimits','versions','_console_ninja_session','_isUndefined','Set','sortProps','1.0.0','props','autoExpandPropertyCount','unref','getter','node','autoExpandPreviousObjects','Error','\\\\x20server','perLogpoint','_WebSocket','','return\\\\x20import(url.pathToFileURL(path.join(nodeModules,\\\\x20\\\\x27ws/index.js\\\\x27)).toString());',\\\"/Users/matejglasnak/.cursor/extensions/wallabyjs.console-ninja-1.0.496-universal/node_modules\\\",'','hrtime','toString','ninjaSuppressConsole','type','_attemptToReconnectShortly','charAt','date','value','58178','prototype','process','get','cappedProps','_hasSetOnItsPath','_webSocketErrorDocsLink','_setNodeExpandableState','NEGATIVE_INFINITY','reload','current','location','negativeZero','send','_type','_isArray','parse','_WebSocketClass','983374JpTdwS','_connectAttemptCount','noFunctions','_connectToHostNow','127.0.0.1',',\\\\x20see\\\\x20https://tinyurl.com/2vt8jxzw\\\\x20for\\\\x20more\\\\x20info.','modules','2345wsUfrF','_setNodeLabel','ExpoDevice','_sendErrorMessage','expo','length','eventReceivedCallback','stack','url','isArray','resetOnProcessingTimeAverageMs','_HTMLAllCollection','Buffer','startsWith','symbol','count','indexOf','isExpressionToEvaluate','resolve','_ninjaIgnoreNextError','logger\\\\x20failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host','import(\\\\x27path\\\\x27)','HTMLAllCollection','...','host','_maxConnectAttemptCount','_regExpToString','WebSocket','[object\\\\x20Array]','onerror','some','_p_','allStrLength','reduceOnAccumulatedProcessingTimeMs','unknown','hits','reducedLimits','logger\\\\x20failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host,\\\\x20see\\\\x20','_additionalMetadata','reduceOnCount','_reconnectTimeout','_allowedToSend','totalStrLength','_extendedWarning','performance','fromCharCode','Console\\\\x20Ninja\\\\x20failed\\\\x20to\\\\x20send\\\\x20logs,\\\\x20refreshing\\\\x20the\\\\x20page\\\\x20may\\\\x20help;\\\\x20also\\\\x20see\\\\x20','stackTraceLimit','readyState','call','hostname','4473635XDSKgJ','1','getOwnPropertyNames','index','_keyStrRegExp','positiveInfinity','remix','react-native','50079FfGbnb','_consoleNinjaAllowedToStart','toUpperCase','name','%c\\\\x20Console\\\\x20Ninja\\\\x20extension\\\\x20is\\\\x20connected\\\\x20to\\\\x20','_hasSymbolPropertyOnItsPath','getOwnPropertySymbols','origin','number','error','import(\\\\x27url\\\\x27)','stringify','RegExp','autoExpandLimit','close','getWebSocketClass','setter','background:\\\\x20rgb(30,30,30);\\\\x20color:\\\\x20rgb(255,213,92)','concat','console','path','bind','_addLoadNode','ws://','bigint','slice','expId','_inNextEdge','_disposeWebsocket','capped','iterator','_treeNodePropertiesAfterFullValue','Promise','astro','string','158otmrpx','Console\\\\x20Ninja\\\\x20extension\\\\x20is\\\\x20connected\\\\x20to\\\\x20','android',{\\\"resolveGetters\\\":false,\\\"defaultLimits\\\":{\\\"props\\\":100,\\\"elements\\\":100,\\\"strLength\\\":51200,\\\"totalStrLength\\\":51200,\\\"autoExpandLimit\\\":5000,\\\"autoExpandMaxDepth\\\":10},\\\"reducedLimits\\\":{\\\"props\\\":5,\\\"elements\\\":5,\\\"strLength\\\":256,\\\"totalStrLength\\\":768,\\\"autoExpandLimit\\\":30,\\\"autoExpandMaxDepth\\\":2},\\\"reducePolicy\\\":{\\\"perLogpoint\\\":{\\\"reduceOnCount\\\":50,\\\"reduceOnAccumulatedProcessingTimeMs\\\":100,\\\"resetWhenQuietMs\\\":500,\\\"resetOnProcessingTimeAverageMs\\\":100},\\\"global\\\":{\\\"reduceOnCount\\\":1000,\\\"reduceOnAccumulatedProcessingTimeMs\\\":300,\\\"resetWhenQuietMs\\\":50,\\\"resetOnProcessingTimeAverageMs\\\":100}}},'edge','method','substr','map','failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host:\\\\x20','_p_name','_setNodeExpressionPath','function','sort','_socket','includes','undefined','disabledLog','_blacklistedProperty','4447240xwfavk','[object\\\\x20BigInt]','defaultLimits','getOwnPropertyDescriptor','port','replace','now','[object\\\\x20Map]','NEXT_RUNTIME','autoExpandMaxDepth','expressionsToEvaluate','_treeNodePropertiesBeforeFullValue','rootExpression','depth','_inBrowser','test','reducePolicy','endsWith','_hasMapOnItsPath'];_0x4e1d=function(){return _0x55c7b0;};return _0x4e1d();}function X(_0x483c01,_0x271bd4,_0x44c4e4){var _0x104ef5=_0x3bb860,_0x11870b,_0xd0411e,_0x2b2f35,_0x37f289,_0x19767e,_0x5b1d18,_0x148937,_0x214d11,_0xcc5822;if(_0x483c01['_consoleNinjaAllowedToStart']!==void 0x0)return _0x483c01['_consoleNinjaAllowedToStart'];let _0x1a7fe6=((_0xd0411e=(_0x11870b=_0x483c01[_0x104ef5(0x167)])==null?void 0x0:_0x11870b['versions'])==null?void 0x0:_0xd0411e['node'])||((_0x37f289=(_0x2b2f35=_0x483c01[_0x104ef5(0x167)])==null?void 0x0:_0x2b2f35[_0x104ef5(0x11b)])==null?void 0x0:_0x37f289['NEXT_RUNTIME'])==='edge',_0x4eefc2=!!(_0x44c4e4===_0x104ef5(0xaa)&&((_0x148937=(_0x5b1d18=(_0x19767e=_0x483c01['expo'])==null?void 0x0:_0x19767e[_0x104ef5(0x6f)])==null?void 0x0:_0x5b1d18['ExpoDevice'])==null?void 0x0:_0x148937[_0x104ef5(0x10e)]));function _0x3dc67e(_0x1005a2){var _0x8df396=_0x104ef5;if(_0x1005a2[_0x8df396(0x7d)]('/')&&_0x1005a2[_0x8df396(0xf1)]('/')){let _0x42ca86=new RegExp(_0x1005a2[_0x8df396(0xc4)](0x1,-0x1));return _0x1424cc=>_0x42ca86['test'](_0x1424cc);}else{if(_0x1005a2[_0x8df396(0xdc)]('*')||_0x1005a2[_0x8df396(0xdc)]('?')){let _0x4ca7cb=new RegExp('^'+_0x1005a2[_0x8df396(0xe5)](/\\\\./g,String[_0x8df396(0x9d)](0x5c)+'.')[_0x8df396(0xe5)](/\\\\*/g,'.*')['replace'](/\\\\?/g,'.')+String['fromCharCode'](0x24));return _0x47b79e=>_0x4ca7cb[_0x8df396(0xef)](_0x47b79e);}else return _0x399e60=>_0x399e60===_0x1005a2;}}let _0x1b7b20=_0x271bd4[_0x104ef5(0xd5)](_0x3dc67e);return _0x483c01['_consoleNinjaAllowedToStart']=_0x1a7fe6||!_0x271bd4,!_0x483c01[_0x104ef5(0xac)]&&((_0x214d11=_0x483c01[_0x104ef5(0x170)])==null?void 0x0:_0x214d11[_0x104ef5(0xa2)])&&(_0x483c01[_0x104ef5(0xac)]=_0x1b7b20[_0x104ef5(0x8e)](_0x39e689=>_0x39e689(_0x483c01[_0x104ef5(0x170)][_0x104ef5(0xa2)]))),_0x4eefc2&&!_0x483c01[_0x104ef5(0xac)]&&!((_0xcc5822=_0x483c01[_0x104ef5(0x170)])!=null&&_0xcc5822[_0x104ef5(0xa2)])&&(_0x483c01[_0x104ef5(0xac)]=!0x0),_0x483c01[_0x104ef5(0xac)];}function J(_0x54988f,_0x4ca48c,_0x1c6321,_0x242b6d,_0x2ab5e9,_0x5c9ae8){var _0x362eb9=_0x3bb860;_0x54988f=_0x54988f,_0x4ca48c=_0x4ca48c,_0x1c6321=_0x1c6321,_0x242b6d=_0x242b6d,_0x2ab5e9=_0x2ab5e9,_0x2ab5e9=_0x2ab5e9||{},_0x2ab5e9[_0x362eb9(0xe2)]=_0x2ab5e9['defaultLimits']||{},_0x2ab5e9['reducedLimits']=_0x2ab5e9[_0x362eb9(0x94)]||{},_0x2ab5e9[_0x362eb9(0xf0)]=_0x2ab5e9[_0x362eb9(0xf0)]||{},_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x157)]=_0x2ab5e9['reducePolicy'][_0x362eb9(0x157)]||{},_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x102)]=_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x102)]||{};let _0x2575e9={'perLogpoint':{'reduceOnCount':_0x2ab5e9['reducePolicy']['perLogpoint'][_0x362eb9(0x97)]||0x32,'reduceOnAccumulatedProcessingTimeMs':_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x157)][_0x362eb9(0x91)]||0x64,'resetWhenQuietMs':_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x157)][_0x362eb9(0x117)]||0x1f4,'resetOnProcessingTimeAverageMs':_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x157)]['resetOnProcessingTimeAverageMs']||0x64},'global':{'reduceOnCount':_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x102)][_0x362eb9(0x97)]||0x3e8,'reduceOnAccumulatedProcessingTimeMs':_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x102)][_0x362eb9(0x91)]||0x12c,'resetWhenQuietMs':_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x102)][_0x362eb9(0x117)]||0x32,'resetOnProcessingTimeAverageMs':_0x2ab5e9[_0x362eb9(0xf0)][_0x362eb9(0x102)][_0x362eb9(0x7a)]||0x64}},_0x3068d4=b(_0x54988f),_0x2020f4=_0x3068d4[_0x362eb9(0x140)],_0x33c06c=_0x3068d4['timeStamp'];function _0x1553d1(){var _0x2f7fd2=_0x362eb9;this[_0x2f7fd2(0xa7)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\\\xA0-\\\\uFFFF][_$a-zA-Z0-9\\\\xA0-\\\\uFFFF]*$/,this[_0x2f7fd2(0x10d)]=/^(0|[1-9][0-9]*)$/,this[_0x2f7fd2(0x127)]=/'([^\\\\\\\\']|\\\\\\\\')*'/,this[_0x2f7fd2(0x120)]=_0x54988f[_0x2f7fd2(0xdd)],this[_0x2f7fd2(0x7b)]=_0x54988f[_0x2f7fd2(0x86)],this[_0x2f7fd2(0xfe)]=Object[_0x2f7fd2(0xe3)],this[_0x2f7fd2(0x101)]=Object[_0x2f7fd2(0xa5)],this[_0x2f7fd2(0x12c)]=_0x54988f[_0x2f7fd2(0x144)],this[_0x2f7fd2(0x8a)]=RegExp[_0x2f7fd2(0x166)][_0x2f7fd2(0x15e)],this[_0x2f7fd2(0x110)]=Date[_0x2f7fd2(0x166)]['toString'];}_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x13d)]=function(_0x4647d7,_0x2a215a,_0x22ed3f,_0x50c2de){var _0x2e0ba3=_0x362eb9,_0x5d74ca=this,_0x51c281=_0x22ed3f[_0x2e0ba3(0x145)];function _0x5cbb2c(_0x2151b5,_0x31b5a1,_0x57d6c8){var _0x303826=_0x2e0ba3;_0x31b5a1[_0x303826(0x160)]='unknown',_0x31b5a1[_0x303826(0xb4)]=_0x2151b5[_0x303826(0x146)],_0x927f28=_0x57d6c8[_0x303826(0x153)]['current'],_0x57d6c8[_0x303826(0x153)]['current']=_0x31b5a1,_0x5d74ca[_0x303826(0xeb)](_0x31b5a1,_0x57d6c8);}let _0x579911,_0xddd6e9,_0x22db18=_0x54988f[_0x2e0ba3(0x15f)];_0x54988f[_0x2e0ba3(0x15f)]=!0x0,_0x54988f[_0x2e0ba3(0xbe)]&&(_0x579911=_0x54988f[_0x2e0ba3(0xbe)]['error'],_0xddd6e9=_0x54988f[_0x2e0ba3(0xbe)][_0x2e0ba3(0xf7)],_0x579911&&(_0x54988f[_0x2e0ba3(0xbe)][_0x2e0ba3(0xb4)]=function(){}),_0xddd6e9&&(_0x54988f['console']['warn']=function(){}));try{try{_0x22ed3f['level']++,_0x22ed3f[_0x2e0ba3(0x145)]&&_0x22ed3f[_0x2e0ba3(0x154)][_0x2e0ba3(0x135)](_0x2a215a);var _0x423735,_0x575ffc,_0x56086b,_0x237f39,_0x25296e=[],_0x5e2d4e=[],_0x16b7cc,_0x70a2f6=this[_0x2e0ba3(0x173)](_0x2a215a),_0x283f38=_0x70a2f6===_0x2e0ba3(0x133),_0x5b503b=!0x1,_0x95078c=_0x70a2f6===_0x2e0ba3(0xd9),_0x36b80f=this[_0x2e0ba3(0x13b)](_0x70a2f6),_0x4f4889=this[_0x2e0ba3(0x13e)](_0x70a2f6),_0xc8b9f=_0x36b80f||_0x4f4889,_0x2720e2={},_0x40d2dc=0x0,_0x460b57=!0x1,_0x927f28,_0x2173c4=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x22ed3f[_0x2e0ba3(0xed)]){if(_0x283f38){if(_0x575ffc=_0x2a215a[_0x2e0ba3(0x75)],_0x575ffc>_0x22ed3f[_0x2e0ba3(0x10b)]){for(_0x56086b=0x0,_0x237f39=_0x22ed3f['elements'],_0x423735=_0x56086b;_0x423735<_0x237f39;_0x423735++)_0x5e2d4e[_0x2e0ba3(0x135)](_0x5d74ca[_0x2e0ba3(0x139)](_0x25296e,_0x2a215a,_0x70a2f6,_0x423735,_0x22ed3f));_0x4647d7[_0x2e0ba3(0x11c)]=!0x0;}else{for(_0x56086b=0x0,_0x237f39=_0x575ffc,_0x423735=_0x56086b;_0x423735<_0x237f39;_0x423735++)_0x5e2d4e['push'](_0x5d74ca['_addProperty'](_0x25296e,_0x2a215a,_0x70a2f6,_0x423735,_0x22ed3f));}_0x22ed3f[_0x2e0ba3(0x150)]+=_0x5e2d4e['length'];}if(!(_0x70a2f6==='null'||_0x70a2f6===_0x2e0ba3(0xdd))&&!_0x36b80f&&_0x70a2f6!==_0x2e0ba3(0x132)&&_0x70a2f6!==_0x2e0ba3(0x7c)&&_0x70a2f6!==_0x2e0ba3(0xc3)){var _0x25fc93=_0x50c2de[_0x2e0ba3(0x14f)]||_0x22ed3f[_0x2e0ba3(0x14f)];if(this['_isSet'](_0x2a215a)?(_0x423735=0x0,_0x2a215a[_0x2e0ba3(0x11a)](function(_0x2dea34){var _0x320e32=_0x2e0ba3;if(_0x40d2dc++,_0x22ed3f[_0x320e32(0x150)]++,_0x40d2dc>_0x25fc93){_0x460b57=!0x0;return;}if(!_0x22ed3f[_0x320e32(0x81)]&&_0x22ed3f['autoExpand']&&_0x22ed3f['autoExpandPropertyCount']>_0x22ed3f[_0x320e32(0xb8)]){_0x460b57=!0x0;return;}_0x5e2d4e[_0x320e32(0x135)](_0x5d74ca['_addProperty'](_0x25296e,_0x2a215a,_0x320e32(0x14c),_0x423735++,_0x22ed3f,function(_0x599ec3){return function(){return _0x599ec3;};}(_0x2dea34)));})):this['_isMap'](_0x2a215a)&&_0x2a215a[_0x2e0ba3(0x11a)](function(_0x298807,_0x2e9c94){var _0x22e685=_0x2e0ba3;if(_0x40d2dc++,_0x22ed3f[_0x22e685(0x150)]++,_0x40d2dc>_0x25fc93){_0x460b57=!0x0;return;}if(!_0x22ed3f[_0x22e685(0x81)]&&_0x22ed3f[_0x22e685(0x145)]&&_0x22ed3f[_0x22e685(0x150)]>_0x22ed3f['autoExpandLimit']){_0x460b57=!0x0;return;}var _0x4472d8=_0x2e9c94['toString']();_0x4472d8[_0x22e685(0x75)]>0x64&&(_0x4472d8=_0x4472d8['slice'](0x0,0x64)+_0x22e685(0x87)),_0x5e2d4e[_0x22e685(0x135)](_0x5d74ca[_0x22e685(0x139)](_0x25296e,_0x2a215a,'Map',_0x4472d8,_0x22ed3f,function(_0x376da9){return function(){return _0x376da9;};}(_0x298807)));}),!_0x5b503b){try{for(_0x16b7cc in _0x2a215a)if(!(_0x283f38&&_0x2173c4[_0x2e0ba3(0xef)](_0x16b7cc))&&!this[_0x2e0ba3(0xdf)](_0x2a215a,_0x16b7cc,_0x22ed3f)){if(_0x40d2dc++,_0x22ed3f[_0x2e0ba3(0x150)]++,_0x40d2dc>_0x25fc93){_0x460b57=!0x0;break;}if(!_0x22ed3f[_0x2e0ba3(0x81)]&&_0x22ed3f[_0x2e0ba3(0x145)]&&_0x22ed3f[_0x2e0ba3(0x150)]>_0x22ed3f[_0x2e0ba3(0xb8)]){_0x460b57=!0x0;break;}_0x5e2d4e[_0x2e0ba3(0x135)](_0x5d74ca[_0x2e0ba3(0x13f)](_0x25296e,_0x2720e2,_0x2a215a,_0x70a2f6,_0x16b7cc,_0x22ed3f));}}catch{}if(_0x2720e2[_0x2e0ba3(0x147)]=!0x0,_0x95078c&&(_0x2720e2[_0x2e0ba3(0xd7)]=!0x0),!_0x460b57){var _0x225309=[][_0x2e0ba3(0xbd)](this['_getOwnPropertyNames'](_0x2a215a))['concat'](this[_0x2e0ba3(0x12a)](_0x2a215a));for(_0x423735=0x0,_0x575ffc=_0x225309[_0x2e0ba3(0x75)];_0x423735<_0x575ffc;_0x423735++)if(_0x16b7cc=_0x225309[_0x423735],!(_0x283f38&&_0x2173c4[_0x2e0ba3(0xef)](_0x16b7cc[_0x2e0ba3(0x15e)]()))&&!this[_0x2e0ba3(0xdf)](_0x2a215a,_0x16b7cc,_0x22ed3f)&&!_0x2720e2[typeof _0x16b7cc!=_0x2e0ba3(0x7e)?_0x2e0ba3(0x8f)+_0x16b7cc[_0x2e0ba3(0x15e)]():_0x16b7cc]){if(_0x40d2dc++,_0x22ed3f[_0x2e0ba3(0x150)]++,_0x40d2dc>_0x25fc93){_0x460b57=!0x0;break;}if(!_0x22ed3f['isExpressionToEvaluate']&&_0x22ed3f[_0x2e0ba3(0x145)]&&_0x22ed3f['autoExpandPropertyCount']>_0x22ed3f['autoExpandLimit']){_0x460b57=!0x0;break;}_0x5e2d4e[_0x2e0ba3(0x135)](_0x5d74ca['_addObjectProperty'](_0x25296e,_0x2720e2,_0x2a215a,_0x70a2f6,_0x16b7cc,_0x22ed3f));}}}}}if(_0x4647d7[_0x2e0ba3(0x160)]=_0x70a2f6,_0xc8b9f?(_0x4647d7['value']=_0x2a215a[_0x2e0ba3(0x112)](),this['_capIfString'](_0x70a2f6,_0x4647d7,_0x22ed3f,_0x50c2de)):_0x70a2f6===_0x2e0ba3(0x163)?_0x4647d7['value']=this[_0x2e0ba3(0x110)][_0x2e0ba3(0xa1)](_0x2a215a):_0x70a2f6===_0x2e0ba3(0xc3)?_0x4647d7[_0x2e0ba3(0x164)]=_0x2a215a[_0x2e0ba3(0x15e)]():_0x70a2f6===_0x2e0ba3(0xb7)?_0x4647d7[_0x2e0ba3(0x164)]=this[_0x2e0ba3(0x8a)][_0x2e0ba3(0xa1)](_0x2a215a):_0x70a2f6==='symbol'&&this[_0x2e0ba3(0x12c)]?_0x4647d7[_0x2e0ba3(0x164)]=this[_0x2e0ba3(0x12c)][_0x2e0ba3(0x166)][_0x2e0ba3(0x15e)]['call'](_0x2a215a):!_0x22ed3f[_0x2e0ba3(0xed)]&&!(_0x70a2f6==='null'||_0x70a2f6===_0x2e0ba3(0xdd))&&(delete _0x4647d7[_0x2e0ba3(0x164)],_0x4647d7[_0x2e0ba3(0xc8)]=!0x0),_0x460b57&&(_0x4647d7[_0x2e0ba3(0x169)]=!0x0),_0x927f28=_0x22ed3f[_0x2e0ba3(0x153)][_0x2e0ba3(0x16f)],_0x22ed3f[_0x2e0ba3(0x153)][_0x2e0ba3(0x16f)]=_0x4647d7,this[_0x2e0ba3(0xeb)](_0x4647d7,_0x22ed3f),_0x5e2d4e['length']){for(_0x423735=0x0,_0x575ffc=_0x5e2d4e['length'];_0x423735<_0x575ffc;_0x423735++)_0x5e2d4e[_0x423735](_0x423735);}_0x25296e['length']&&(_0x4647d7[_0x2e0ba3(0x14f)]=_0x25296e);}catch(_0x3cea83){_0x5cbb2c(_0x3cea83,_0x4647d7,_0x22ed3f);}this[_0x2e0ba3(0x96)](_0x2a215a,_0x4647d7),this[_0x2e0ba3(0xca)](_0x4647d7,_0x22ed3f),_0x22ed3f[_0x2e0ba3(0x153)][_0x2e0ba3(0x16f)]=_0x927f28,_0x22ed3f['level']--,_0x22ed3f[_0x2e0ba3(0x145)]=_0x51c281,_0x22ed3f[_0x2e0ba3(0x145)]&&_0x22ed3f[_0x2e0ba3(0x154)][_0x2e0ba3(0xf6)]();}finally{_0x579911&&(_0x54988f[_0x2e0ba3(0xbe)][_0x2e0ba3(0xb4)]=_0x579911),_0xddd6e9&&(_0x54988f[_0x2e0ba3(0xbe)][_0x2e0ba3(0xf7)]=_0xddd6e9),_0x54988f[_0x2e0ba3(0x15f)]=_0x22db18;}return _0x4647d7;},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x12a)]=function(_0x542adf){var _0x50d3db=_0x362eb9;return Object[_0x50d3db(0xb1)]?Object[_0x50d3db(0xb1)](_0x542adf):[];},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x108)]=function(_0x40db41){var _0x2ca29a=_0x362eb9;return!!(_0x40db41&&_0x54988f[_0x2ca29a(0x14c)]&&this[_0x2ca29a(0x13a)](_0x40db41)===_0x2ca29a(0xf4)&&_0x40db41[_0x2ca29a(0x11a)]);},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0xdf)]=function(_0x2efd92,_0x209eca,_0x50cec3){var _0x34627=_0x362eb9;if(!_0x50cec3['resolveGetters']){let _0xd9569c=this[_0x34627(0xfe)](_0x2efd92,_0x209eca);if(_0xd9569c&&_0xd9569c[_0x34627(0x168)])return!0x0;}return _0x50cec3[_0x34627(0x6b)]?typeof _0x2efd92[_0x209eca]=='function':!0x1;},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x173)]=function(_0x3a6e45){var _0x3a6d86=_0x362eb9,_0x1ef452='';return _0x1ef452=typeof _0x3a6e45,_0x1ef452===_0x3a6d86(0x107)?this[_0x3a6d86(0x13a)](_0x3a6e45)===_0x3a6d86(0x8c)?_0x1ef452=_0x3a6d86(0x133):this[_0x3a6d86(0x13a)](_0x3a6e45)===_0x3a6d86(0x109)?_0x1ef452=_0x3a6d86(0x163):this[_0x3a6d86(0x13a)](_0x3a6e45)===_0x3a6d86(0xe1)?_0x1ef452=_0x3a6d86(0xc3):_0x3a6e45===null?_0x1ef452='null':_0x3a6e45[_0x3a6d86(0xf9)]&&(_0x1ef452=_0x3a6e45[_0x3a6d86(0xf9)][_0x3a6d86(0xae)]||_0x1ef452):_0x1ef452===_0x3a6d86(0xdd)&&this[_0x3a6d86(0x7b)]&&_0x3a6e45 instanceof this[_0x3a6d86(0x7b)]&&(_0x1ef452='HTMLAllCollection'),_0x1ef452;},_0x1553d1['prototype'][_0x362eb9(0x13a)]=function(_0xbe7254){var _0x3f21ad=_0x362eb9;return Object['prototype'][_0x3f21ad(0x15e)][_0x3f21ad(0xa1)](_0xbe7254);},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x13b)]=function(_0x2584e2){var _0x4947d9=_0x362eb9;return _0x2584e2===_0x4947d9(0x141)||_0x2584e2===_0x4947d9(0xcd)||_0x2584e2==='number';},_0x1553d1['prototype'][_0x362eb9(0x13e)]=function(_0xa2a455){var _0x33b765=_0x362eb9;return _0xa2a455==='Boolean'||_0xa2a455==='String'||_0xa2a455===_0x33b765(0x118);},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x139)]=function(_0xb78ea3,_0x5c4e5e,_0x37ea9c,_0x5e9c85,_0x2788cd,_0x56a4d2){var _0x4ccc58=this;return function(_0x2e1f3f){var _0x21a4ef=_0x1415,_0x47a755=_0x2788cd[_0x21a4ef(0x153)][_0x21a4ef(0x16f)],_0x348ee2=_0x2788cd[_0x21a4ef(0x153)][_0x21a4ef(0xa6)],_0x4f95fd=_0x2788cd['node'][_0x21a4ef(0x100)];_0x2788cd[_0x21a4ef(0x153)][_0x21a4ef(0x100)]=_0x47a755,_0x2788cd[_0x21a4ef(0x153)][_0x21a4ef(0xa6)]=typeof _0x5e9c85==_0x21a4ef(0xb3)?_0x5e9c85:_0x2e1f3f,_0xb78ea3[_0x21a4ef(0x135)](_0x4ccc58[_0x21a4ef(0xf8)](_0x5c4e5e,_0x37ea9c,_0x5e9c85,_0x2788cd,_0x56a4d2)),_0x2788cd['node']['parent']=_0x4f95fd,_0x2788cd[_0x21a4ef(0x153)][_0x21a4ef(0xa6)]=_0x348ee2;};},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x13f)]=function(_0x4770b7,_0x19ed8d,_0x5a01f4,_0x2f32a4,_0x2539b5,_0x35b333,_0xcf15f1){var _0x413486=_0x362eb9,_0x1b0ab1=this;return _0x19ed8d[typeof _0x2539b5!='symbol'?_0x413486(0x8f)+_0x2539b5[_0x413486(0x15e)]():_0x2539b5]=!0x0,function(_0xb8c9af){var _0x316ac0=_0x413486,_0x28cf78=_0x35b333['node'][_0x316ac0(0x16f)],_0x135252=_0x35b333['node']['index'],_0x51969c=_0x35b333[_0x316ac0(0x153)][_0x316ac0(0x100)];_0x35b333[_0x316ac0(0x153)]['parent']=_0x28cf78,_0x35b333[_0x316ac0(0x153)]['index']=_0xb8c9af,_0x4770b7['push'](_0x1b0ab1[_0x316ac0(0xf8)](_0x5a01f4,_0x2f32a4,_0x2539b5,_0x35b333,_0xcf15f1)),_0x35b333[_0x316ac0(0x153)][_0x316ac0(0x100)]=_0x51969c,_0x35b333[_0x316ac0(0x153)][_0x316ac0(0xa6)]=_0x135252;};},_0x1553d1['prototype'][_0x362eb9(0xf8)]=function(_0x56f923,_0xe02046,_0x35e01a,_0x31febe,_0x4c60e0){var _0x5dc645=_0x362eb9,_0x42f7fc=this;_0x4c60e0||(_0x4c60e0=function(_0x579f08,_0x5371a1){return _0x579f08[_0x5371a1];});var _0x29473c=_0x35e01a['toString'](),_0x2cbdf1=_0x31febe[_0x5dc645(0xea)]||{},_0x4c9159=_0x31febe['depth'],_0x120fec=_0x31febe['isExpressionToEvaluate'];try{var _0xb650b=this['_isMap'](_0x56f923),_0x2ab92b=_0x29473c;_0xb650b&&_0x2ab92b[0x0]==='\\\\x27'&&(_0x2ab92b=_0x2ab92b['substr'](0x1,_0x2ab92b[_0x5dc645(0x75)]-0x2));var _0x47228a=_0x31febe[_0x5dc645(0xea)]=_0x2cbdf1[_0x5dc645(0x8f)+_0x2ab92b];_0x47228a&&(_0x31febe[_0x5dc645(0xed)]=_0x31febe['depth']+0x1),_0x31febe[_0x5dc645(0x81)]=!!_0x47228a;var _0x23862f=typeof _0x35e01a==_0x5dc645(0x7e),_0x3cd986={'name':_0x23862f||_0xb650b?_0x29473c:this[_0x5dc645(0x122)](_0x29473c)};if(_0x23862f&&(_0x3cd986[_0x5dc645(0x7e)]=!0x0),!(_0xe02046===_0x5dc645(0x133)||_0xe02046===_0x5dc645(0x155))){var _0x53d604=this[_0x5dc645(0xfe)](_0x56f923,_0x35e01a);if(_0x53d604&&(_0x53d604['set']&&(_0x3cd986[_0x5dc645(0xbb)]=!0x0),_0x53d604[_0x5dc645(0x168)]&&!_0x47228a&&!_0x31febe['resolveGetters']))return _0x3cd986[_0x5dc645(0x152)]=!0x0,this[_0x5dc645(0x136)](_0x3cd986,_0x31febe),_0x3cd986;}var _0x299969;try{_0x299969=_0x4c60e0(_0x56f923,_0x35e01a);}catch(_0x145369){return _0x3cd986={'name':_0x29473c,'type':_0x5dc645(0x92),'error':_0x145369[_0x5dc645(0x146)]},this[_0x5dc645(0x136)](_0x3cd986,_0x31febe),_0x3cd986;}var _0x20e649=this[_0x5dc645(0x173)](_0x299969),_0x367e10=this['_isPrimitiveType'](_0x20e649);if(_0x3cd986[_0x5dc645(0x160)]=_0x20e649,_0x367e10)this[_0x5dc645(0x136)](_0x3cd986,_0x31febe,_0x299969,function(){var _0x2dc954=_0x5dc645;_0x3cd986[_0x2dc954(0x164)]=_0x299969[_0x2dc954(0x112)](),!_0x47228a&&_0x42f7fc[_0x2dc954(0x114)](_0x20e649,_0x3cd986,_0x31febe,{});});else{var _0x5dfaf4=_0x31febe[_0x5dc645(0x145)]&&_0x31febe[_0x5dc645(0xfb)]<_0x31febe[_0x5dc645(0xe9)]&&_0x31febe[_0x5dc645(0x154)][_0x5dc645(0x80)](_0x299969)<0x0&&_0x20e649!=='function'&&_0x31febe[_0x5dc645(0x150)]<_0x31febe['autoExpandLimit'];_0x5dfaf4||_0x31febe[_0x5dc645(0xfb)]<_0x4c9159||_0x47228a?this[_0x5dc645(0x13d)](_0x3cd986,_0x299969,_0x31febe,_0x47228a||{}):this[_0x5dc645(0x136)](_0x3cd986,_0x31febe,_0x299969,function(){var _0x223d28=_0x5dc645;_0x20e649==='null'||_0x20e649==='undefined'||(delete _0x3cd986[_0x223d28(0x164)],_0x3cd986[_0x223d28(0xc8)]=!0x0);});}return _0x3cd986;}finally{_0x31febe[_0x5dc645(0xea)]=_0x2cbdf1,_0x31febe[_0x5dc645(0xed)]=_0x4c9159,_0x31febe[_0x5dc645(0x81)]=_0x120fec;}},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x114)]=function(_0x268238,_0x5c408f,_0x1bbfe8,_0x14e025){var _0xb291a7=_0x362eb9,_0x378a39=_0x14e025['strLength']||_0x1bbfe8[_0xb291a7(0x13c)];if((_0x268238==='string'||_0x268238===_0xb291a7(0x132))&&_0x5c408f[_0xb291a7(0x164)]){let _0x11ccc2=_0x5c408f['value']['length'];_0x1bbfe8[_0xb291a7(0x90)]+=_0x11ccc2,_0x1bbfe8[_0xb291a7(0x90)]>_0x1bbfe8['totalStrLength']?(_0x5c408f[_0xb291a7(0xc8)]='',delete _0x5c408f[_0xb291a7(0x164)]):_0x11ccc2>_0x378a39&&(_0x5c408f['capped']=_0x5c408f['value'][_0xb291a7(0xd4)](0x0,_0x378a39),delete _0x5c408f['value']);}},_0x1553d1[_0x362eb9(0x166)]['_isMap']=function(_0x2c418a){var _0x571864=_0x362eb9;return!!(_0x2c418a&&_0x54988f[_0x571864(0x12f)]&&this['_objectToString'](_0x2c418a)===_0x571864(0xe7)&&_0x2c418a['forEach']);},_0x1553d1['prototype'][_0x362eb9(0x122)]=function(_0x259913){var _0x4fb046=_0x362eb9;if(_0x259913['match'](/^\\\\d+$/))return _0x259913;var _0x25f80b;try{_0x25f80b=JSON[_0x4fb046(0xb6)](''+_0x259913);}catch{_0x25f80b='\\\\x22'+this[_0x4fb046(0x13a)](_0x259913)+'\\\\x22';}return _0x25f80b['match'](/^\\\"([a-zA-Z_][a-zA-Z_0-9]*)\\\"$/)?_0x25f80b=_0x25f80b[_0x4fb046(0xd4)](0x1,_0x25f80b['length']-0x2):_0x25f80b=_0x25f80b[_0x4fb046(0xe5)](/'/g,'\\\\x5c\\\\x27')['replace'](/\\\\\\\\\\\"/g,'\\\\x22')[_0x4fb046(0xe5)](/(^\\\"|\\\"$)/g,'\\\\x27'),_0x25f80b;},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x136)]=function(_0x51dac5,_0x17415c,_0x5e7cf5,_0x4b1e80){var _0x394081=_0x362eb9;this[_0x394081(0xeb)](_0x51dac5,_0x17415c),_0x4b1e80&&_0x4b1e80(),this[_0x394081(0x96)](_0x5e7cf5,_0x51dac5),this[_0x394081(0xca)](_0x51dac5,_0x17415c);},_0x1553d1['prototype'][_0x362eb9(0xeb)]=function(_0x152418,_0x11633b){var _0x1e700d=_0x362eb9;this['_setNodeId'](_0x152418,_0x11633b),this['_setNodeQueryPath'](_0x152418,_0x11633b),this[_0x1e700d(0xd8)](_0x152418,_0x11633b),this[_0x1e700d(0xff)](_0x152418,_0x11633b);},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x12d)]=function(_0x2b1e43,_0x57edd2){},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x103)]=function(_0x539da7,_0x19786b){},_0x1553d1['prototype']['_setNodeLabel']=function(_0x5e0d54,_0x222367){},_0x1553d1['prototype'][_0x362eb9(0x14b)]=function(_0x5eebd0){var _0x47a672=_0x362eb9;return _0x5eebd0===this[_0x47a672(0x120)];},_0x1553d1['prototype']['_treeNodePropertiesAfterFullValue']=function(_0x488337,_0xfb8c5d){var _0x249fef=_0x362eb9;this['_setNodeLabel'](_0x488337,_0xfb8c5d),this[_0x249fef(0x16c)](_0x488337),_0xfb8c5d[_0x249fef(0x14d)]&&this[_0x249fef(0x12b)](_0x488337),this[_0x249fef(0x104)](_0x488337,_0xfb8c5d),this[_0x249fef(0xc1)](_0x488337,_0xfb8c5d),this[_0x249fef(0x134)](_0x488337);},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x96)]=function(_0x50775a,_0x3a2dc1){var _0x18e664=_0x362eb9;try{_0x50775a&&typeof _0x50775a[_0x18e664(0x75)]==_0x18e664(0xb3)&&(_0x3a2dc1[_0x18e664(0x75)]=_0x50775a['length']);}catch{}if(_0x3a2dc1[_0x18e664(0x160)]===_0x18e664(0xb3)||_0x3a2dc1[_0x18e664(0x160)]===_0x18e664(0x118)){if(isNaN(_0x3a2dc1[_0x18e664(0x164)]))_0x3a2dc1[_0x18e664(0x128)]=!0x0,delete _0x3a2dc1[_0x18e664(0x164)];else switch(_0x3a2dc1['value']){case Number[_0x18e664(0x106)]:_0x3a2dc1[_0x18e664(0xa8)]=!0x0,delete _0x3a2dc1[_0x18e664(0x164)];break;case Number[_0x18e664(0x16d)]:_0x3a2dc1[_0x18e664(0x10a)]=!0x0,delete _0x3a2dc1[_0x18e664(0x164)];break;case 0x0:this[_0x18e664(0xf3)](_0x3a2dc1[_0x18e664(0x164)])&&(_0x3a2dc1[_0x18e664(0x171)]=!0x0);break;}}else _0x3a2dc1[_0x18e664(0x160)]===_0x18e664(0xd9)&&typeof _0x50775a['name']==_0x18e664(0xcd)&&_0x50775a[_0x18e664(0xae)]&&_0x3a2dc1['name']&&_0x50775a['name']!==_0x3a2dc1[_0x18e664(0xae)]&&(_0x3a2dc1[_0x18e664(0x129)]=_0x50775a[_0x18e664(0xae)]);},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0xf3)]=function(_0x5d4a64){var _0x124dbd=_0x362eb9;return 0x1/_0x5d4a64===Number[_0x124dbd(0x16d)];},_0x1553d1['prototype'][_0x362eb9(0x12b)]=function(_0x5effc0){var _0xcb9369=_0x362eb9;!_0x5effc0[_0xcb9369(0x14f)]||!_0x5effc0[_0xcb9369(0x14f)][_0xcb9369(0x75)]||_0x5effc0[_0xcb9369(0x160)]===_0xcb9369(0x133)||_0x5effc0[_0xcb9369(0x160)]===_0xcb9369(0x12f)||_0x5effc0[_0xcb9369(0x160)]===_0xcb9369(0x14c)||_0x5effc0[_0xcb9369(0x14f)][_0xcb9369(0xda)](function(_0x348183,_0x3a9dfe){var _0x2dc7c8=_0xcb9369,_0x4182bd=_0x348183[_0x2dc7c8(0xae)]['toLowerCase'](),_0x4230c7=_0x3a9dfe[_0x2dc7c8(0xae)][_0x2dc7c8(0x130)]();return _0x4182bd<_0x4230c7?-0x1:_0x4182bd>_0x4230c7?0x1:0x0;});},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x104)]=function(_0x375221,_0x361945){var _0x131a55=_0x362eb9;if(!(_0x361945[_0x131a55(0x6b)]||!_0x375221[_0x131a55(0x14f)]||!_0x375221[_0x131a55(0x14f)][_0x131a55(0x75)])){for(var _0x57e4e3=[],_0x4d073a=[],_0x3d548c=0x0,_0x1a0472=_0x375221['props']['length'];_0x3d548c<_0x1a0472;_0x3d548c++){var _0x392721=_0x375221[_0x131a55(0x14f)][_0x3d548c];_0x392721[_0x131a55(0x160)]==='function'?_0x57e4e3[_0x131a55(0x135)](_0x392721):_0x4d073a[_0x131a55(0x135)](_0x392721);}if(!(!_0x4d073a['length']||_0x57e4e3[_0x131a55(0x75)]<=0x1)){_0x375221[_0x131a55(0x14f)]=_0x4d073a;var _0x300a86={'functionsNode':!0x0,'props':_0x57e4e3};this['_setNodeId'](_0x300a86,_0x361945),this[_0x131a55(0x71)](_0x300a86,_0x361945),this[_0x131a55(0x16c)](_0x300a86),this[_0x131a55(0xff)](_0x300a86,_0x361945),_0x300a86['id']+='\\\\x20f',_0x375221['props']['unshift'](_0x300a86);}}},_0x1553d1['prototype'][_0x362eb9(0xc1)]=function(_0xdd78d6,_0x5ea79f){},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x16c)]=function(_0x2ea115){},_0x1553d1['prototype'][_0x362eb9(0x174)]=function(_0x59d77a){var _0x5648e8=_0x362eb9;return Array[_0x5648e8(0x79)](_0x59d77a)||typeof _0x59d77a=='object'&&this['_objectToString'](_0x59d77a)==='[object\\\\x20Array]';},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0xff)]=function(_0x8d330,_0x234a4d){},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0x134)]=function(_0x5c22fa){var _0x64bada=_0x362eb9;delete _0x5c22fa[_0x64bada(0xb0)],delete _0x5c22fa[_0x64bada(0x16a)],delete _0x5c22fa[_0x64bada(0xf2)];},_0x1553d1[_0x362eb9(0x166)][_0x362eb9(0xd8)]=function(_0x564a04,_0xf08319){};let _0x14c23a=new _0x1553d1(),_0x39a863={'props':_0x2ab5e9[_0x362eb9(0xe2)]['props']||0x64,'elements':_0x2ab5e9[_0x362eb9(0xe2)][_0x362eb9(0x10b)]||0x64,'strLength':_0x2ab5e9[_0x362eb9(0xe2)][_0x362eb9(0x13c)]||0x400*0x32,'totalStrLength':_0x2ab5e9[_0x362eb9(0xe2)][_0x362eb9(0x9a)]||0x400*0x32,'autoExpandLimit':_0x2ab5e9[_0x362eb9(0xe2)][_0x362eb9(0xb8)]||0x1388,'autoExpandMaxDepth':_0x2ab5e9['defaultLimits']['autoExpandMaxDepth']||0xa},_0x5de84c={'props':_0x2ab5e9[_0x362eb9(0x94)][_0x362eb9(0x14f)]||0x5,'elements':_0x2ab5e9['reducedLimits'][_0x362eb9(0x10b)]||0x5,'strLength':_0x2ab5e9[_0x362eb9(0x94)][_0x362eb9(0x13c)]||0x100,'totalStrLength':_0x2ab5e9['reducedLimits']['totalStrLength']||0x100*0x3,'autoExpandLimit':_0x2ab5e9[_0x362eb9(0x94)][_0x362eb9(0xb8)]||0x1e,'autoExpandMaxDepth':_0x2ab5e9[_0x362eb9(0x94)]['autoExpandMaxDepth']||0x2};if(_0x5c9ae8){let _0x1b7536=_0x14c23a[_0x362eb9(0x13d)]['bind'](_0x14c23a);_0x14c23a[_0x362eb9(0x13d)]=function(_0x2cec0e,_0xbee19b,_0x5aae30,_0x1cbcb1){return _0x1b7536(_0x2cec0e,_0x5c9ae8(_0xbee19b),_0x5aae30,_0x1cbcb1);};}function _0x4c7fc5(_0x346455,_0x2b6a2f,_0x46c6e1,_0x1cd4b7,_0xafc0be,_0x11c2b6){var _0x507acf=_0x362eb9;let _0x4e3b4f,_0x40b10e;try{_0x40b10e=_0x33c06c(),_0x4e3b4f=_0x1c6321[_0x2b6a2f],!_0x4e3b4f||_0x40b10e-_0x4e3b4f['ts']>_0x2575e9[_0x507acf(0x157)]['resetWhenQuietMs']&&_0x4e3b4f[_0x507acf(0x7f)]&&_0x4e3b4f[_0x507acf(0x105)]/_0x4e3b4f[_0x507acf(0x7f)]<_0x2575e9[_0x507acf(0x157)]['resetOnProcessingTimeAverageMs']?(_0x1c6321[_0x2b6a2f]=_0x4e3b4f={'count':0x0,'time':0x0,'ts':_0x40b10e},_0x1c6321[_0x507acf(0x93)]={}):_0x40b10e-_0x1c6321[_0x507acf(0x93)]['ts']>_0x2575e9[_0x507acf(0x102)]['resetWhenQuietMs']&&_0x1c6321[_0x507acf(0x93)][_0x507acf(0x7f)]&&_0x1c6321[_0x507acf(0x93)][_0x507acf(0x105)]/_0x1c6321[_0x507acf(0x93)][_0x507acf(0x7f)]<_0x2575e9['global'][_0x507acf(0x7a)]&&(_0x1c6321[_0x507acf(0x93)]={});let _0x4786e5=[],_0x1867c7=_0x4e3b4f[_0x507acf(0x148)]||_0x1c6321['hits'][_0x507acf(0x148)]?_0x5de84c:_0x39a863,_0x42979e=_0x35724c=>{var _0x36e35e=_0x507acf;let _0x3cf0b1={};return _0x3cf0b1[_0x36e35e(0x14f)]=_0x35724c['props'],_0x3cf0b1['elements']=_0x35724c[_0x36e35e(0x10b)],_0x3cf0b1['strLength']=_0x35724c['strLength'],_0x3cf0b1[_0x36e35e(0x9a)]=_0x35724c[_0x36e35e(0x9a)],_0x3cf0b1[_0x36e35e(0xb8)]=_0x35724c[_0x36e35e(0xb8)],_0x3cf0b1[_0x36e35e(0xe9)]=_0x35724c[_0x36e35e(0xe9)],_0x3cf0b1[_0x36e35e(0x14d)]=!0x1,_0x3cf0b1[_0x36e35e(0x6b)]=!_0x4ca48c,_0x3cf0b1[_0x36e35e(0xed)]=0x1,_0x3cf0b1[_0x36e35e(0xfb)]=0x0,_0x3cf0b1[_0x36e35e(0xc5)]=_0x36e35e(0x124),_0x3cf0b1[_0x36e35e(0xec)]='root_exp',_0x3cf0b1[_0x36e35e(0x145)]=!0x0,_0x3cf0b1[_0x36e35e(0x154)]=[],_0x3cf0b1['autoExpandPropertyCount']=0x0,_0x3cf0b1[_0x36e35e(0x116)]=_0x2ab5e9[_0x36e35e(0x116)],_0x3cf0b1[_0x36e35e(0x90)]=0x0,_0x3cf0b1[_0x36e35e(0x153)]={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x3cf0b1;};for(var _0xcf31ee=0x0;_0xcf31ee<_0xafc0be[_0x507acf(0x75)];_0xcf31ee++)_0x4786e5[_0x507acf(0x135)](_0x14c23a['serialize']({'timeNode':_0x346455===_0x507acf(0x105)||void 0x0},_0xafc0be[_0xcf31ee],_0x42979e(_0x1867c7),{}));if(_0x346455===_0x507acf(0x142)||_0x346455===_0x507acf(0xb4)){let _0x29266d=Error[_0x507acf(0x9f)];try{Error[_0x507acf(0x9f)]=0x1/0x0,_0x4786e5['push'](_0x14c23a[_0x507acf(0x13d)]({'stackNode':!0x0},new Error()[_0x507acf(0x77)],_0x42979e(_0x1867c7),{'strLength':0x1/0x0}));}finally{Error[_0x507acf(0x9f)]=_0x29266d;}}return{'method':'log','version':_0x242b6d,'args':[{'ts':_0x46c6e1,'session':_0x1cd4b7,'args':_0x4786e5,'id':_0x2b6a2f,'context':_0x11c2b6}]};}catch(_0x1f5703){return{'method':_0x507acf(0x119),'version':_0x242b6d,'args':[{'ts':_0x46c6e1,'session':_0x1cd4b7,'args':[{'type':_0x507acf(0x92),'error':_0x1f5703&&_0x1f5703[_0x507acf(0x146)]}],'id':_0x2b6a2f,'context':_0x11c2b6}]};}finally{try{if(_0x4e3b4f&&_0x40b10e){let _0x21bfd9=_0x33c06c();_0x4e3b4f[_0x507acf(0x7f)]++,_0x4e3b4f[_0x507acf(0x105)]+=_0x2020f4(_0x40b10e,_0x21bfd9),_0x4e3b4f['ts']=_0x21bfd9,_0x1c6321[_0x507acf(0x93)][_0x507acf(0x7f)]++,_0x1c6321['hits'][_0x507acf(0x105)]+=_0x2020f4(_0x40b10e,_0x21bfd9),_0x1c6321[_0x507acf(0x93)]['ts']=_0x21bfd9,(_0x4e3b4f[_0x507acf(0x7f)]>_0x2575e9[_0x507acf(0x157)][_0x507acf(0x97)]||_0x4e3b4f[_0x507acf(0x105)]>_0x2575e9[_0x507acf(0x157)][_0x507acf(0x91)])&&(_0x4e3b4f[_0x507acf(0x148)]=!0x0),(_0x1c6321[_0x507acf(0x93)][_0x507acf(0x7f)]>_0x2575e9['global'][_0x507acf(0x97)]||_0x1c6321[_0x507acf(0x93)]['time']>_0x2575e9[_0x507acf(0x102)]['reduceOnAccumulatedProcessingTimeMs'])&&(_0x1c6321[_0x507acf(0x93)][_0x507acf(0x148)]=!0x0);}}catch{}}}return _0x4c7fc5;}function G(_0x3110a3){var _0x3bd871=_0x3bb860;if(_0x3110a3&&typeof _0x3110a3==_0x3bd871(0x107)&&_0x3110a3['constructor'])switch(_0x3110a3[_0x3bd871(0xf9)][_0x3bd871(0xae)]){case _0x3bd871(0xcb):return _0x3110a3['hasOwnProperty'](Symbol[_0x3bd871(0xc9)])?Promise['resolve']():_0x3110a3;case'bound\\\\x20Promise':return Promise[_0x3bd871(0x82)]();}return _0x3110a3;}((_0x89476e,_0x28b07f,_0x238868,_0x4cce03,_0x2dfef1,_0x1e02d7,_0x12a822,_0x1c8003,_0x4ba878,_0x4d841f,_0x421cd1,_0x9d4723)=>{var _0x41e2dd=_0x3bb860;if(_0x89476e[_0x41e2dd(0xfa)])return _0x89476e[_0x41e2dd(0xfa)];let _0x49128d={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}};if(!X(_0x89476e,_0x1c8003,_0x2dfef1))return _0x89476e['_console_ninja']=_0x49128d,_0x89476e[_0x41e2dd(0xfa)];let _0x3b17c2=b(_0x89476e),_0x5e45ab=_0x3b17c2['elapsed'],_0x5e3035=_0x3b17c2[_0x41e2dd(0x10c)],_0x59dd7b=_0x3b17c2['now'],_0x41cf3b={'hits':{},'ts':{}},_0x2245c0=J(_0x89476e,_0x4ba878,_0x41cf3b,_0x1e02d7,_0x9d4723,_0x2dfef1==='next.js'?G:void 0x0),_0x23a585=(_0x50e6b3,_0x4f445a,_0x17722c,_0x24a0e1,_0x5e2f8e,_0x23d340)=>{var _0x320467=_0x41e2dd;let _0x26447d=_0x89476e[_0x320467(0xfa)];try{return _0x89476e[_0x320467(0xfa)]=_0x49128d,_0x2245c0(_0x50e6b3,_0x4f445a,_0x17722c,_0x24a0e1,_0x5e2f8e,_0x23d340);}finally{_0x89476e[_0x320467(0xfa)]=_0x26447d;}},_0x42ba27=_0x7674fa=>{_0x41cf3b['ts'][_0x7674fa]=_0x5e3035();},_0x24d759=(_0x5f8923,_0x3f0a6d)=>{var _0x955907=_0x41e2dd;let _0x55a4b5=_0x41cf3b['ts'][_0x3f0a6d];if(delete _0x41cf3b['ts'][_0x3f0a6d],_0x55a4b5){let _0x42836e=_0x5e45ab(_0x55a4b5,_0x5e3035());_0x1c7723(_0x23a585(_0x955907(0x105),_0x5f8923,_0x59dd7b(),_0x1e7b66,[_0x42836e],_0x3f0a6d));}},_0x1694ef=_0x470e65=>{var _0x25a365=_0x41e2dd,_0x59f8f2;return _0x2dfef1==='next.js'&&_0x89476e['origin']&&((_0x59f8f2=_0x470e65==null?void 0x0:_0x470e65[_0x25a365(0x115)])==null?void 0x0:_0x59f8f2[_0x25a365(0x75)])&&(_0x470e65[_0x25a365(0x115)][0x0][_0x25a365(0xb2)]=_0x89476e['origin']),_0x470e65;};_0x89476e[_0x41e2dd(0xfa)]={'consoleLog':(_0x289d5e,_0x17a27d)=>{var _0x5de7e4=_0x41e2dd;_0x89476e[_0x5de7e4(0xbe)]['log'][_0x5de7e4(0xae)]!==_0x5de7e4(0xde)&&_0x1c7723(_0x23a585(_0x5de7e4(0x119),_0x289d5e,_0x59dd7b(),_0x1e7b66,_0x17a27d));},'consoleTrace':(_0x550c51,_0x217373)=>{var _0x58b605=_0x41e2dd,_0x5c42fd,_0x2eb19b;_0x89476e[_0x58b605(0xbe)][_0x58b605(0x119)][_0x58b605(0xae)]!=='disabledTrace'&&((_0x2eb19b=(_0x5c42fd=_0x89476e[_0x58b605(0x167)])==null?void 0x0:_0x5c42fd[_0x58b605(0x149)])!=null&&_0x2eb19b[_0x58b605(0x153)]&&(_0x89476e[_0x58b605(0x83)]=!0x0),_0x1c7723(_0x1694ef(_0x23a585(_0x58b605(0x142),_0x550c51,_0x59dd7b(),_0x1e7b66,_0x217373))));},'consoleError':(_0x388785,_0x1df99e)=>{var _0x3e3286=_0x41e2dd;_0x89476e[_0x3e3286(0x83)]=!0x0,_0x1c7723(_0x1694ef(_0x23a585(_0x3e3286(0xb4),_0x388785,_0x59dd7b(),_0x1e7b66,_0x1df99e)));},'consoleTime':_0x5dfd28=>{_0x42ba27(_0x5dfd28);},'consoleTimeEnd':(_0x2ea531,_0x32fcea)=>{_0x24d759(_0x32fcea,_0x2ea531);},'autoLog':(_0x3210b3,_0x41f469)=>{var _0x149cc9=_0x41e2dd;_0x1c7723(_0x23a585(_0x149cc9(0x119),_0x41f469,_0x59dd7b(),_0x1e7b66,[_0x3210b3]));},'autoLogMany':(_0x5cca3a,_0xfa047d)=>{_0x1c7723(_0x23a585('log',_0x5cca3a,_0x59dd7b(),_0x1e7b66,_0xfa047d));},'autoTrace':(_0xdc9d24,_0x1f706d)=>{_0x1c7723(_0x1694ef(_0x23a585('trace',_0x1f706d,_0x59dd7b(),_0x1e7b66,[_0xdc9d24])));},'autoTraceMany':(_0x369170,_0x2658f9)=>{var _0x21206c=_0x41e2dd;_0x1c7723(_0x1694ef(_0x23a585(_0x21206c(0x142),_0x369170,_0x59dd7b(),_0x1e7b66,_0x2658f9)));},'autoTime':(_0x216685,_0x1f9d8a,_0x5d3d6a)=>{_0x42ba27(_0x5d3d6a);},'autoTimeEnd':(_0x38e311,_0x8da60e,_0x102528)=>{_0x24d759(_0x8da60e,_0x102528);},'coverage':_0x3ee68b=>{_0x1c7723({'method':'coverage','version':_0x1e02d7,'args':[{'id':_0x3ee68b}]});}};let _0x1c7723=H(_0x89476e,_0x28b07f,_0x238868,_0x4cce03,_0x2dfef1,_0x4d841f,_0x421cd1),_0x1e7b66=_0x89476e[_0x41e2dd(0x14a)];return _0x89476e[_0x41e2dd(0xfa)];})(globalThis,_0x3bb860(0x6d),_0x3bb860(0x165),_0x3bb860(0x15b),'webpack',_0x3bb860(0x14e),'1764769008274',[\\\"localhost\\\",\\\"127.0.0.1\\\",\\\"example.cypress.io\\\",\\\"10.0.2.2\\\",\\\"Matejs-MacBook-Pro.local\\\",\\\"192.168.0.230\\\"],_0x3bb860(0x15c),_0x3bb860(0x159),_0x3bb860(0xa4),_0x3bb860(0xd1));\");\n } catch (e) {\n console.error(e);\n }\n}\n/* istanbul ignore next */\nfunction oo_oo(/**@type{any}**/i, /**@type{any}**/...v) {\n try {\n oo_cm().consoleLog(i, v);\n } catch (e) {}\n return v;\n}\n/* istanbul ignore next */\nfunction oo_tr(/**@type{any}**/i, /**@type{any}**/...v) {\n try {\n oo_cm().consoleTrace(i, v);\n } catch (e) {}\n return v;\n}\n/* istanbul ignore next */\nfunction oo_tx(/**@type{any}**/i, /**@type{any}**/...v) {\n try {\n oo_cm().consoleError(i, v);\n } catch (e) {}\n return v;\n}\n/* istanbul ignore next */\nfunction oo_ts(/**@type{any}**/v) {\n try {\n oo_cm().consoleTime(v);\n } catch (e) {}\n return v;\n}\n/* istanbul ignore next */\nfunction oo_te(/**@type{any}**/v, /**@type{any}**/i) {\n try {\n oo_cm().consoleTimeEnd(v, i);\n } catch (e) {}\n return v;\n} /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/blocker/z-blocker-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/blocker/z-delete-blocker-modal.vue?vue&type=script&lang=js":
/*!**********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/blocker/z-delete-blocker-modal.vue?vue&type=script&lang=js ***!
\**********************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['on-blocker-deleted'],\n data() {\n return {\n visible: false,\n blocker: null,\n isDeleting: false,\n modalName: 'z-delete-blocker-modal'\n };\n },\n methods: {\n async showModal({\n blocker\n }) {\n this.blocker = blocker;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n async deleteBlocker() {\n if (this.isDeleting) return;\n this.isDeleting = true;\n try {\n await this.$axios.delete_auth(`v1/blockers/${this.blocker.id}`);\n this.$emit('on-blocker-deleted', this.blocker);\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n } finally {\n this.isDeleting = false;\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/blocker/z-delete-blocker-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/_components/a-mastertask-description.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/_components/a-mastertask-description.vue?vue&type=script&lang=js ***!
\****************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_read_only_z_created_by_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../_components/read-only/z-created-by.vue */ \"./src/plugins/tm@modal/_components/read-only/z-created-by.vue\");\n/* harmony import */ var _components_read_only_z_deadline_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../_components/read-only/z-deadline.vue */ \"./src/plugins/tm@modal/_components/read-only/z-deadline.vue\");\n/* harmony import */ var _components_read_only_z_description_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_components/read-only/z-description.vue */ \"./src/plugins/tm@modal/_components/read-only/z-description.vue\");\n/* harmony import */ var _components_read_only_z_files_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../_components/read-only/z-files.vue */ \"./src/plugins/tm@modal/_components/read-only/z-files.vue\");\n/* harmony import */ var _components_read_only_z_planned_time_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../_components/read-only/z-planned-time.vue */ \"./src/plugins/tm@modal/_components/read-only/z-planned-time.vue\");\n/* harmony import */ var _components_read_only_z_remaining_time_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../_components/read-only/z-remaining-time.vue */ \"./src/plugins/tm@modal/_components/read-only/z-remaining-time.vue\");\n/* harmony import */ var _components_read_only_z_spent_time_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../_components/read-only/z-spent-time.vue */ \"./src/plugins/tm@modal/_components/read-only/z-spent-time.vue\");\n/* harmony import */ var _components_read_only_z_status_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../_components/read-only/z-status.vue */ \"./src/plugins/tm@modal/_components/read-only/z-status.vue\");\n/* harmony import */ var _components_read_only_z_team_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../_components/read-only/z-team.vue */ \"./src/plugins/tm@modal/_components/read-only/z-team.vue\");\n/* harmony import */ var _components_read_only_z_estimated_duration_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../_components/read-only/z-estimated-duration.vue */ \"./src/plugins/tm@modal/_components/read-only/z-estimated-duration.vue\");\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ZCreatedBy: _components_read_only_z_created_by_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n ZDeadline: _components_read_only_z_deadline_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ZDescription: _components_read_only_z_description_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ZFiles: _components_read_only_z_files_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n ZPlannedTime: _components_read_only_z_planned_time_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ZRemainingTime: _components_read_only_z_remaining_time_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n ZSpentTime: _components_read_only_z_spent_time_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n ZStatus: _components_read_only_z_status_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n ZTeam: _components_read_only_z_team_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n ZEstimatedDuration: _components_read_only_z_estimated_duration_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n },\n props: {\n mastertask: {\n type: Object,\n required: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/_components/a-mastertask-description.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue?vue&type=script&lang=js":
/*!*****************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue?vue&type=script&lang=js ***!
\*****************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_app_img__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/app/_img */ \"./src/plugins/app/_img/index.ts\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n subtasks: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n checkmark: _plugins_app_img__WEBPACK_IMPORTED_MODULE_4__.checkmark,\n bin: _plugins_app_img__WEBPACK_IMPORTED_MODULE_4__.bin,\n eye: _plugins_app_img__WEBPACK_IMPORTED_MODULE_4__.eye,\n office365: _plugins_app_img__WEBPACK_IMPORTED_MODULE_4__.office365\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_3__.mapGetters)('tm', ['enrichedEmployees']),\n enrichedtasks() {\n return this.subtasks.map(subtask => {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n return {\n ...subtask,\n _employeeInitials: employee ? employee._initials : '?',\n _employeeFullName: employee ? employee._fullName : ''\n };\n });\n }\n },\n methods: {\n openDeleteTaskModal(subtask) {\n this.$events.emit('show-delete-task-modal', {\n subtask\n });\n },\n openTaskModal(subtask) {\n this.$events.emit('show-subtask-modal', {\n subtask,\n editMode: false\n });\n },\n async clickCompleteTask(subtask) {\n this.$events.emit('show-complete-task-modal', {\n subtask\n });\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-complete-master-task-modal.vue?vue&type=script&lang=js":
/*!********************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-complete-master-task-modal.vue?vue&type=script&lang=js ***!
\********************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['close', 'master-task-edited'],\n data() {\n return {\n visible: false,\n mastertask: null,\n modalName: 'z-complete-master-task-modal'\n };\n },\n methods: {\n async showModal({\n mastertask\n }) {\n this.mastertask = mastertask;\n this.visible = true;\n },\n async complete() {\n try {\n const tempMastertask = {\n ...this.mastertask,\n is_finished: this.mastertask.is_finished ? 0 : 1\n };\n const {\n mastertask\n } = await this.$axios.put_auth(`v1/mastertasks/${tempMastertask.id}`, tempMastertask);\n this.visible = false;\n this.$emit('master-task-edited', mastertask);\n this.$events.emit('close-both-modals');\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-complete-master-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-delete-master-task-modal.vue?vue&type=script&lang=js":
/*!******************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-delete-master-task-modal.vue?vue&type=script&lang=js ***!
\******************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['on-mastertask-deleted'],\n data() {\n return {\n visible: false,\n mastertask: null,\n isDeleting: false,\n modalName: 'z-delete-master-task-modal'\n };\n },\n methods: {\n async showModal({\n mastertask\n }) {\n this.mastertask = mastertask;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n async deleteMasterTask() {\n if (this.isDeleting) return;\n this.isDeleting = true;\n try {\n await this.$axios.delete_auth(`v1/mastertasks/${this.mastertask.id}`);\n this.$emit('on-mastertask-deleted', this.mastertask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n } finally {\n this.isDeleting = false;\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-delete-master-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-delete-team-member-modal.vue?vue&type=script&lang=js":
/*!******************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-delete-team-member-modal.vue?vue&type=script&lang=js ***!
\******************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_1__[\"default\"]],\n data() {\n return {\n visible: false,\n member: null,\n team: null,\n modalName: 'z-delete-team-member-modal'\n };\n },\n methods: {\n async showModal({\n member,\n team\n }) {\n this.member = member;\n this.team = team;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n async deleteMember() {\n this.team.employees = [...this.team.employees].filter(employee => employee.id !== this.member.id);\n try {\n if (this.team.id) {\n const {\n team\n } = await this.$axios.put_auth(`v1/teams/${this.team.id}`, this.team);\n this.$store.commit('tm/update_team', team);\n } else {\n const {\n team\n } = await this.$axios.post_auth(`v1/teams`, this.team);\n this.$store.commit('tm/save_team', team);\n }\n this.$events.emit('master-task:team-member-deleted', {\n teamId: this.team.id,\n memberId: this.member.id\n });\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n }\n },\n _enrichTeam(team) {\n team.employees = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].enrichEmployees(team.employees);\n return team;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-delete-team-member-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-master-task-modal.vue?vue&type=script&lang=js":
/*!***********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-master-task-modal.vue?vue&type=script&lang=js ***!
\***********************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _plugins_tm_components_z_datepicker_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/tm@_components/z-datepicker.vue */ \"./src/plugins/tm@_components/z-datepicker.vue\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./_components/a-tasks-table.vue */ \"./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue\");\n/* harmony import */ var _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./_components/a-mastertask-description.vue */ \"./src/plugins/tm@modal/master-task/_components/a-mastertask-description.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n\n\n\n\n\n\n\n// import ZAutocomplete from '@/plugins/tm@_components/z-autocomplete.vue'\n\n\n// import tmUtils from '@/plugins/tm@_utils/tm.utils'\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // MIXINS\n // computed: employeesOptions, projectsOptions\n // methods: onProjectSelected, onEmployeeSelected, onEmployeeDurationChanged\n // watch: mastertask.team_id\n\n components: {\n AMastertaskDescription: _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n ATasksTable: _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n ZDatepicker: _plugins_tm_components_z_datepicker_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n // ZAutocomplete,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_12__.QuillEditor,\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_22__[\"default\"]\n },\n mixins: [_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_15__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_19__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_13__[\"default\"]],\n // MIXINS\n // computed: employeesOptions, projectsOptions\n // methods: onProjectSelected, onEmployeeSelected, onEmployeeDurationChanged\n // watch: mastertask.team_id\n\n emits: ['master-task-edited', 'close'],\n data() {\n return {\n deadline: null,\n editMode: false,\n visible: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(),\n mastertask: null,\n isSaving: false,\n showAddEmployeeInput: false,\n date: null,\n projectCodeSearch: null,\n modalName: 'z-master-task-modal'\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_18__.mapGetters)('tm', ['teams', 'projects', 'enrichedEmployees']),\n enrichedSubtasks() {\n if (!this.mastertask?.subtasks) return null;\n return this.mastertask.subtasks.map(subtask => {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n return {\n ...subtask,\n _initials: employee ? employee.name.charAt(0) + employee.surname.charAt(0) : '?',\n _fullName: employee ? `${employee.name} ${employee.surname}` : ''\n };\n }).filter(subtask => subtask !== null);\n }\n },\n validations() {\n const quillEditorRequired = value => {\n if (!value || !value.length || !value.replace(/<[^>]*>/g, '').length) return false;\n return true;\n };\n return {\n mastertask: {\n employees: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_9__.required,\n minLength: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_9__.minLength)(1),\n $each: {\n duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_9__.required\n }\n }\n },\n project_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_9__.required\n },\n name: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_9__.required\n },\n description: {\n quillEditorRequired\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_9__.required\n },\n estimated_duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_9__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_9__.required\n }\n }\n };\n },\n watch: {\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n if (!this.mastertask?.id) return;\n const date = new Date(this.mastertask.deadline);\n const hours = date.getHours();\n const minutes = date.getMinutes();\n this.mastertask._deadline_time = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n });\n },\n mastertask: {\n handler(val) {\n if (this.editMode && !this.mastertask?.id) {\n localStorage.setItem('mastertaskData', JSON.stringify(val));\n }\n },\n deep: true\n },\n 'mastertask.team_id': {\n handler(value, oldValue) {\n if (this.editMode && !value && oldValue) {\n // Removes only employees from the old team when team_id is removed\n const oldTeamEmployeesIds = this.teams.find(team => team.id == oldValue)?.employees.map(employee => employee?.id) || [];\n const employeesNotInOldTeam = this.mastertask.employees.filter(employee => !oldTeamEmployeesIds.includes(employee?.id));\n this.mastertask.employees = employeesNotInOldTeam;\n }\n },\n deep: true\n },\n '$route.query': {\n handler(_, oldValue) {\n if (oldValue?.subtask?.length && this.mastertask?.id) {\n this.loadMastertask(this.mastertask.id);\n }\n },\n deep: true\n }\n },\n mounted() {\n this.$events.on('close-both-modals', this.closeBothModals);\n this.$events.on('master-task:team-member-deleted', ({\n teamId,\n memberId\n }) => {\n if (this.mastertask.team_id != teamId) return;\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != memberId);\n }), this.$events.on('on-mastertask-deleted', mastertask => {\n if (mastertask?.id == this.mastertask?.id) this.closeModal();\n });\n this.$events.on('on-subtask-deleted', task => {\n if (!this.mastertask) return;\n this.mastertask.subtasks = this.mastertask.subtasks.filter(subtask => subtask.id != task.id);\n });\n this.$events.on('on-subtask-edited', task => {\n if (!this.mastertask?.subtasks) return;\n if (this.mastertask.subtasks.find(subtask => subtask.id == task.id)) {\n this.mastertask.subtasks = this.mastertask.subtasks.map(t => t.id == task.id ? task : t);\n } else {\n this.mastertask.subtasks.push(task);\n }\n });\n },\n beforeUnmount() {\n this.$events.off('on-mastertask-deleted');\n this.$events.off('on-subtask-deleted');\n this.$events.off('on-subtask-edited');\n this.$events.off('master-task:team-member-deleted');\n this.$events.off('close-both-modals', this.closeBothModals);\n },\n methods: {\n closeBothModals() {\n this.$emit('close');\n this.visible = false;\n },\n removeEmployee({\n id\n }) {\n // const isEmployeeInTeam = this.mastertask.team?.employees.find(employee => employee.id == id)\n\n // if (isEmployeeInTeam) {\n // \tthis.mastertask.team_id = null\n // \tthis.mastertask.team = null\n // }\n\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != id);\n },\n removeMemberAlert(member) {\n const team = this.mastertask.team;\n this.$events.emit('show-delete-team-member-modal', {\n member,\n team\n });\n },\n async loadMastertask(id) {\n try {\n this.mastertask = await this.$axios.get_auth_data(`v1/mastertasks/${id}`);\n\n // TODO zmazat ked zacne prichadzat project_id a team_id\n const project = this.projects.find(project => project.code == this.mastertask.project_code);\n this.mastertask.project_id = project?.id || null;\n this.mastertask.team_id = this.mastertask.team?.id || null;\n this.mastertask._allEmployees = this.mastertask.subtasks.map(({\n employee_id,\n duration\n }) => {\n const employee = this.enrichedEmployees.find(({\n id\n }) => id == employee_id);\n if (!employee) {\n return null;\n }\n employee.duration = duration;\n return employee;\n }).filter(employee => employee !== null);\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n },\n async showModal({\n mastertask,\n editMode = false\n }) {\n this.isSaving = false;\n this.editMode = null;\n\n // CRITICAL: Prevent v-dialog autofocus BEFORE modal opens\n this.preventInputFocus = true;\n this.visible = true;\n this.mastertask = null;\n this.$nextTick(() => {\n this.v$.$reset();\n\n // Reset after modal is fully rendered and v-dialog autofocus has been blocked\n setTimeout(() => {\n this.preventInputFocus = false;\n }, 300);\n });\n try {\n if (mastertask?.id) {\n await this.loadMastertask(mastertask.id);\n\n // this.mastertask.project_code \t= project.code\n } else {\n const savedMastertask = localStorage.getItem('mastertaskData');\n try {\n if (savedMastertask) {\n const parsedMastertask = JSON.parse(savedMastertask);\n this.mastertask = parsedMastertask;\n // If the parsed result is not an object, reset to default\n if (typeof this.mastertask !== 'object' || this.mastertask === null) {\n throw new Error('Parsed mastertask is not an object');\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n });\n } else {\n throw new Error('mastertaskData is null or undefined');\n }\n } catch (error) {\n this.mastertask = {\n employees: [],\n duration: 0,\n _deadline_time: '17:00'\n };\n }\n }\n this.editMode = editMode || !this.mastertask.id;\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n },\n toggleIsFinished() {\n this.$events.emit('show-complete-master-task-modal', {\n mastertask: this.mastertask\n });\n },\n async save() {\n if (this.mastertask.id) {\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n const {\n duration\n } = this.mastertask.subtasks.find(({\n employee_id\n }) => employee_id == employee.id) || {};\n employee.duration = duration || 0;\n return employee;\n });\n }\n const vuelidateValid = await this.v$.$validate();\n const employeesValid = await this._validateEmployees();\n if (!vuelidateValid || !employeesValid) return;\n if (this.$refs['description']) this.mastertask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n this.mastertask.deadline = moment__WEBPACK_IMPORTED_MODULE_11___default()(this.mastertask.deadline).format('YYYY-MM-DD HH:MM:SS');\n if (this.mastertask.id) await this.$axios.patch_auth_form(`v1/mastertasks/${this.mastertask.id}`, this.mastertask);else await this.$axios.post_auth_data('v1/mastertasks', this.mastertask);\n localStorage.removeItem('mastertaskData');\n this.$emit('master-task-edited', this.mastertask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n } finally {\n this.isSaving = false;\n }\n },\n filesUploaded(files) {\n this.mastertask.files = files;\n },\n closeModal() {\n this.visible = false;\n },\n openDeleteMasterTaskModal(mastertask) {\n this.$events.emit('show-delete-master-task-modal', {\n mastertask\n });\n },\n addTask() {\n this.$events.emit('show-subtask-modal', {\n subtask: {\n master_task_id: this.mastertask.id,\n project_code: this.mastertask.project_code\n }\n });\n },\n onQuillEditorInput() {\n this.mastertask.description = this.$refs['description'].getHTML();\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.mastertask.deadline);\n const timeParts = this.mastertask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.mastertask.deadline = date;\n },\n _validateEmployees() {\n let isValid = true;\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n if (employee.duration === null || employee.duration === undefined) {\n employee.invalid = true;\n isValid = false;\n }\n return employee;\n });\n return isValid;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task-cell/z-show-menu-modal.vue?vue&type=script&lang=js":
/*!*******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task-cell/z-show-menu-modal.vue?vue&type=script&lang=js ***!
\*******************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n props: {\n data: {\n type: Object,\n default: () => ({})\n }\n },\n emits: ['update', 'data'],\n data() {\n return {\n visible: false,\n localData: null,\n modalName: 'z-show-menu-modal'\n };\n },\n mounted() {\n this.$events.on('blocker-created', () => {\n this.closeModal();\n });\n this.$events.on('task-created', () => {\n this.closeModal();\n });\n },\n methods: {\n async showModal(data) {\n this.localData = data;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n createTask() {\n this.$events.emit('show-subtask-modal', {\n subtask: {\n deadline: this.localData.date,\n _deadline_time: this.localData.time,\n employee_id: this.localData.employee\n },\n onTaskCreated: () => {\n this.closeModal();\n }\n });\n },\n createBlocker() {\n this.$events.emit('show-blocker-modal', {\n blocker: {\n starts_at_time: this.localData.time,\n datepicker: this.localData.date,\n employee_id: this.localData.employee\n },\n onBlockerCreated: () => {\n this.closeModal();\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task-cell/z-show-menu-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-mastertask-name.vue?vue&type=script&lang=js":
/*!**************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-mastertask-name.vue?vue&type=script&lang=js ***!
\**************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n name: {\n type: String,\n required: true\n },\n id: {\n type: Number,\n required: true\n },\n color: {\n type: String,\n required: true\n }\n },\n emits: ['close-modal'],\n methods: {\n openMastertask() {\n this.$emit('close-modal');\n this.$events.emit('show-mastertask-modal', {\n mastertask: {\n id: this.id\n },\n editMode: false\n });\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-mastertask-name.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-mastertask-status.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-mastertask-status.vue?vue&type=script&lang=js ***!
\****************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n isFinished: {\n type: Number,\n default: () => 0\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-mastertask-status.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-assigned-employee.vue?vue&type=script&lang=js":
/*!*********************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-assigned-employee.vue?vue&type=script&lang=js ***!
\*********************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n employee: {\n type: Object,\n required: true\n }\n }\n\n // methods: {\n // \tasync deleteEmployee() {\n // \t\ttry {\n // \t\t\tconst tempSubtask \t= {...this.subtask, employee_id: null, deadline: moment(this.subtask.deadline).format('YYYY-MM-DD HH:mm:ss') }\n // \t\t\tconst { subtask } \t= await this.$axios.put_auth(`v1/subtasks/${tempSubtask.id}`, tempSubtask)\n // \t\t\t// employee_id\n // \t\t\tthis.$emit('on-subtask-edited', subtask)\n // \t\t} catch (error) {\n // \t\t\tthis.$toast.error(error)\n // \t\t}\n // \t},\n // }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-assigned-employee.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-deadline.vue?vue&type=script&lang=js":
/*!************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-deadline.vue?vue&type=script&lang=js ***!
\************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n subtask: {\n type: [String, Object, null],\n required: true\n }\n },\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapGetters)('tm', ['mastertasks']),\n deadlineTime() {\n const time = this.subtask?._deadline_time;\n if (time) return moment__WEBPACK_IMPORTED_MODULE_1___default()(time, 'HH:mm:ss').format('HH:mm');\n return '';\n }\n },\n methods: {\n getMasterTaskDeadline(subtask) {\n if (subtask?.deadline) return subtask.deadline;\n return subtask.master_task_deadline;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-deadline.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-description.vue?vue&type=script&lang=js":
/*!***************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-description.vue?vue&type=script&lang=js ***!
\***************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_utils_server_links_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@_utils/server-links.utils */ \"./src/plugins/tm@_utils/server-links.utils.ts\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n description: {\n type: String || null,\n default: () => null\n },\n mastertaskDescription: {\n type: String || null,\n default: () => null\n }\n },\n data() {\n return {\n copiedIndices: [],\n preparedDescription: '',\n preparedMastertaskDescription: ''\n };\n },\n mounted() {\n this.preparedDescription = (0,_plugins_tm_utils_server_links_utils__WEBPACK_IMPORTED_MODULE_0__.prepareHTMLDescription)(this.description);\n this.preparedMastertaskDescription = (0,_plugins_tm_utils_server_links_utils__WEBPACK_IMPORTED_MODULE_0__.prepareHTMLDescription)(this.mastertaskDescription);\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-description.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-planned-time.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-planned-time.vue?vue&type=script&lang=js ***!
\****************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n hours: {\n type: Number,\n required: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-planned-time.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-remaining-time.vue?vue&type=script&lang=js":
/*!******************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-remaining-time.vue?vue&type=script&lang=js ***!
\******************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n hours: {\n type: Number,\n required: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-remaining-time.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?vue&type=script&lang=js":
/*!**************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?vue&type=script&lang=js ***!
\**************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_11__[\"default\"]],\n props: {\n hours: {\n type: Number,\n required: true\n },\n subtask: {\n type: Object,\n required: true\n }\n },\n data() {\n return {\n moment: (moment__WEBPACK_IMPORTED_MODULE_5___default()),\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n showModal: false,\n form: {\n hours: null\n }\n };\n },\n validations() {\n return {\n form: {\n hours: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_8__.required,\n numeric: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_8__.numeric,\n minValue: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_8__.minValue)(0.1)\n }\n }\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_10__.mapGetters)('auth', ['user'])\n },\n methods: {\n async submit() {\n if (!(await this.v$.$validate())) return;\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timesheets.push({\n id: null,\n employee_id: this.user.id,\n time: typeof this.form.hours == 'string' ? parseFloat(this.form.hours) : this.form.hours\n });\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n this._update(subtask);\n },\n async deleteTimesheet({\n id\n }) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timesheets = subtask.timesheets.filter(timesheet => timesheet.id != id);\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n this._update(subtask);\n },\n closeModal() {\n this.form = {\n hours: null\n };\n this.showModal = false;\n this.$nextTick(() => this.v$.$reset());\n },\n async _update(data) {\n try {\n const timesheets = data.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (data.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_5___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${data.id}`, {\n ...data,\n timesheets,\n timeblocks\n });\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n return date;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?vue&type=script&lang=js":
/*!**************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?vue&type=script&lang=js ***!
\**************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_tm_components_z_datepicker_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/plugins/tm@_components/z-datepicker.vue */ \"./src/plugins/tm@_components/z-datepicker.vue\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ZDatepicker: _plugins_tm_components_z_datepicker_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_11__[\"default\"]],\n props: {\n timeblocks: {\n type: Array,\n required: true\n },\n subtask: {\n type: Object,\n required: true\n }\n },\n emits: ['update-subtask'],\n data() {\n return {\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n showModal: false,\n visible: false,\n form: {\n date: null,\n starts_at_time: '09:00',\n ends_at_time: '16:00'\n }\n };\n },\n validations() {\n return {\n form: {\n date: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_8__.required\n },\n starts_at_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_8__.required\n },\n ends_at_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_8__.required\n }\n }\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_12__.mapGetters)('tm', ['mastertasks']),\n isOffice365Task() {\n return this.subtask.type == 'office365';\n }\n },\n methods: {\n formatTimeblockStart(timeblock) {\n // Handle internal format with date and time fields\n if (timeblock.date && timeblock.starts_at_time) {\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.date).format('DD.MM.yyyy');\n return `${dateStr}, ${timeblock.starts_at_time}`;\n }\n // Fallback to backend format\n if (timeblock.start) {\n return _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"].formatDateTime(timeblock.start);\n }\n return '';\n },\n formatTimeblockEnd(timeblock) {\n // Handle internal format with date and time fields\n if (timeblock.date && timeblock.ends_at_time) {\n return timeblock.ends_at_time;\n }\n // Fallback to backend format\n if (timeblock.end) {\n return _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"].formatDateTime(timeblock.end);\n }\n return '';\n },\n async submit() {\n if (!(await this.v$.$validate())) return;\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n if (!subtask?.timeblocks) {\n subtask.timeblocks = [];\n }\n if (!subtask?.timesheets) {\n subtask.timesheets = [];\n }\n if (!subtask?.is_finished) {\n subtask.is_finished = 0;\n }\n\n // Add timeblock in internal format\n subtask.timeblocks.push({\n id: null,\n date: this.form.date,\n starts_at_time: this.form.starts_at_time,\n ends_at_time: this.form.ends_at_time,\n is_finished: 0\n });\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n const isAfterDeadline = this.isAfterDeadline();\n if (isAfterDeadline) {\n this.visible = true;\n } else {\n if (!subtask.id) {\n this.$emit('update-unfinished-subtask', subtask);\n this.closeModal();\n } else {\n this._update(subtask);\n }\n }\n },\n async confirmSubmit() {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n if (!subtask?.timeblocks) {\n subtask.timeblocks = [];\n }\n if (!subtask?.timesheets) {\n subtask.timesheets = [];\n }\n if (!subtask?.is_finished) {\n subtask.is_finished = 0;\n }\n\n // Add timeblock in internal format\n subtask.timeblocks.push({\n id: null,\n date: this.form.date,\n starts_at_time: this.form.starts_at_time,\n ends_at_time: this.form.ends_at_time,\n is_finished: 0\n });\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n if (!subtask.id) {\n this.$emit('update-unfinished-subtask', subtask);\n this.closeModal();\n return;\n }\n this.visible = false;\n this._update(subtask);\n },\n async toggleTimeblockIsFinished(originalTimeblock) {\n // TODO: Pridat odpracovany cas modal?\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n const timeblock = JSON.parse(JSON.stringify(originalTimeblock));\n timeblock.is_finished = timeblock.is_finished == 1 ? 0 : 1;\n try {\n // Convert timeblock to backend format before sending\n const timeblockForBackend = {\n id: timeblock.id,\n is_finished: timeblock.is_finished\n };\n\n // If timeblock is in internal format, convert it\n if (timeblock.date) {\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.date).format('YYYY-MM-DD');\n timeblockForBackend.start = `${dateStr} ${timeblock.starts_at_time}:00`;\n timeblockForBackend.end = `${dateStr} ${timeblock.ends_at_time}:00`;\n } else {\n // Already in backend format\n timeblockForBackend.start = timeblock.start;\n timeblockForBackend.end = timeblock.end;\n }\n const {\n data: newTimeblock\n } = await this.$axios.put_auth(`v1/timeblocks/${timeblock.id}`, timeblockForBackend);\n\n // Convert returned timeblock from backend format to internal format\n const startMoment = moment__WEBPACK_IMPORTED_MODULE_10___default()(newTimeblock.start, 'YYYY-MM-DD HH:mm:ss');\n const endMoment = moment__WEBPACK_IMPORTED_MODULE_10___default()(newTimeblock.end, 'YYYY-MM-DD HH:mm:ss');\n const convertedTimeblock = {\n id: newTimeblock.id,\n date: startMoment.toDate(),\n starts_at_time: startMoment.format('HH:mm'),\n ends_at_time: endMoment.format('HH:mm'),\n is_finished: newTimeblock.is_finished\n };\n subtask.timeblocks = subtask.timeblocks.map(originalTimeblock => {\n if (originalTimeblock.id == convertedTimeblock.id) return convertedTimeblock;\n return originalTimeblock;\n });\n this.$events.emit('on-subtask-edited', subtask);\n this.$emit('update-subtask', subtask);\n if (timeblock.is_finished) this.$events.emit('show-task-add-time-modal', {\n subtask\n });\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n },\n async deleteTimeblock({\n id\n }) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timeblocks = subtask.timeblocks.filter(timeblock => timeblock.id != id);\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n this._update(subtask);\n },\n deleteTimeblockWithoutId(index) {\n console.log(index);\n this.$emit('delete-timeblock');\n },\n async _update(data) {\n try {\n const timesheets = data.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (data.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${data.id}`, {\n ...data,\n timesheets,\n timeblocks\n });\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n },\n isAfterDeadline() {\n const deadline = this.getDeadline(this.subtask);\n if (!deadline) return;\n const mDate = moment__WEBPACK_IMPORTED_MODULE_10___default()(this.form.date);\n const mDeadline = moment__WEBPACK_IMPORTED_MODULE_10___default()(deadline);\n const [hours, minutes] = this.form.ends_at_time.split(':').map(Number);\n mDate.hours(hours);\n mDate.minutes(minutes);\n return mDate.isAfter(mDeadline);\n },\n getDeadline(subtask) {\n if (subtask?.deadline) return subtask.deadline;\n return subtask.master_task_deadline;\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n return date;\n },\n closeModal() {\n this.form = {\n date: null,\n starts_at_time: '09:00',\n ends_at_time: '16:00'\n };\n this.showModal = false;\n this.$nextTick(() => this.v$.$reset());\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/z-task-readonly-info.vue?vue&type=script&lang=js":
/*!*****************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/z-task-readonly-info.vue?vue&type=script&lang=js ***!
\*****************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_a_mastertask_name_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_components/a-mastertask-name.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-mastertask-name.vue\");\n/* harmony import */ var _components_a_mastertask_status_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_components/a-mastertask-status.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-mastertask-status.vue\");\n/* harmony import */ var _components_a_task_timeblocks_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_components/a-task-timeblocks.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue\");\n/* harmony import */ var _components_read_only_z_created_by_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../_components/read-only/z-created-by.vue */ \"./src/plugins/tm@modal/_components/read-only/z-created-by.vue\");\n/* harmony import */ var _components_a_task_assigned_employee_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_components/a-task-assigned-employee.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-assigned-employee.vue\");\n/* harmony import */ var _components_a_task_planned_time_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_components/a-task-planned-time.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-planned-time.vue\");\n/* harmony import */ var _components_a_task_spent_time_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_components/a-task-spent-time.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue\");\n/* harmony import */ var _components_a_task_remaining_time_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./_components/a-task-remaining-time.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-remaining-time.vue\");\n/* harmony import */ var _components_a_task_deadline_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./_components/a-task-deadline.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-deadline.vue\");\n/* harmony import */ var _components_a_task_description_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./_components/a-task-description.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-description.vue\");\n/* harmony import */ var _plugins_tm_modal_components_read_only_z_files_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/plugins/tm@modal/_components/read-only/z-files.vue */ \"./src/plugins/tm@modal/_components/read-only/z-files.vue\");\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ZFiles: _plugins_tm_modal_components_read_only_z_files_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n AMastertaskName: _components_a_mastertask_name_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n AMastertaskStatus: _components_a_mastertask_status_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ATaskTimeblocks: _components_a_task_timeblocks_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ZCreatedBy: _components_read_only_z_created_by_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n ATaskAssignedEmployee: _components_a_task_assigned_employee_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ATaskPlannedTime: _components_a_task_planned_time_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n ATaskSpentTime: _components_a_task_spent_time_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n ATaskRemainingTime: _components_a_task_remaining_time_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n ATaskDescription: _components_a_task_description_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n ATaskDeadline: _components_a_task_deadline_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n },\n props: {\n subtask: {\n type: Object,\n required: true\n }\n },\n emits: ['close-modal', 'update-subtask']\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/z-task-readonly-info.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-complete-task-modal.vue?vue&type=script&lang=js":
/*!******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-complete-task-modal.vue?vue&type=script&lang=js ***!
\******************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_3__[\"default\"]],\n emits: ['close', 'on-subtask-edited'],\n data() {\n return {\n visible: false,\n subtask: null,\n modalName: 'z-complete-task-modal'\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n async complete() {\n try {\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (this.subtask.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_4___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const tempSubtask = {\n ...this.subtask,\n is_finished: this.subtask.is_finished ? 0 : 1,\n timesheets,\n timeblocks\n };\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${tempSubtask.id}`, tempSubtask);\n this.visible = false;\n this.$emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n }\n },\n closeModal() {\n this.visible = false;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-complete-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-delete-task-modal.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-delete-task-modal.vue?vue&type=script&lang=js ***!
\****************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['on-subtask-deleted'],\n data() {\n return {\n visible: false,\n subtask: null,\n isDeleting: false,\n modalName: 'z-delete-task-modal'\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n async deleteTask() {\n if (this.isDeleting) return;\n this.isDeleting = true;\n try {\n await this.$axios.delete_auth(`v1/subtasks/${this.subtask.id}`);\n this.$store.commit('tm/delete_subtask', this.subtask);\n this.closeModal();\n this.$emit('on-subtask-deleted', this.subtask);\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n } finally {\n this.isDeleting = false;\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-delete-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-delete-timeblock-modal.vue?vue&type=script&lang=js":
/*!*********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-delete-timeblock-modal.vue?vue&type=script&lang=js ***!
\*********************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_4__[\"default\"]],\n emits: ['on-subtask-edited'],\n data() {\n return {\n visible: false,\n subtask: null,\n isDeleting: false,\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n modalName: 'z-delete-timeblock-modal'\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n async deleteTimeblock({\n id\n }) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timeblocks = subtask.timeblocks.filter(timeblock => timeblock.id != id);\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"].formatDateTimeForBackend(subtask.deadline);\n this._update(subtask);\n },\n deleteTimeblockWithoutId(index) {\n this.subtask.timeblocks.splice(index, 1);\n this._update(this.subtask);\n },\n async _update(data) {\n try {\n const timesheets = data.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (data.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_6___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${data.id}`, {\n ...data,\n timesheets,\n timeblocks\n });\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-delete-timeblock-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-remove-employee-modal.vue?vue&type=script&lang=js":
/*!********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-remove-employee-modal.vue?vue&type=script&lang=js ***!
\********************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['confirm'],\n data() {\n return {\n visible: false,\n modalName: 'z-remove-employee-modal'\n };\n },\n methods: {\n showModal() {\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n confirm() {\n this.$emit('confirm');\n this.closeModal();\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-remove-employee-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-remove-timeblock-modal.vue?vue&type=script&lang=js":
/*!*********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-remove-timeblock-modal.vue?vue&type=script&lang=js ***!
\*********************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n data() {\n return {\n visible: false,\n modalName: 'z-remove-timeblock-modal',\n onConfirmCallback: null\n };\n },\n methods: {\n showModal({\n onConfirm\n }) {\n this.onConfirmCallback = onConfirm;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n this.onConfirmCallback = null;\n },\n confirm() {\n if (this.onConfirmCallback) {\n this.onConfirmCallback();\n }\n this.closeModal();\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-remove-timeblock-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-task-add-time-modal.vue?vue&type=script&lang=js":
/*!******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-task-add-time-modal.vue?vue&type=script&lang=js ***!
\******************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_7__[\"default\"]],\n emits: ['close', 'on-subtask-edited'],\n data() {\n return {\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n visible: false,\n subtask: null,\n form: {\n hours: null\n },\n modalName: 'z-task-add-time-modal'\n };\n },\n validations() {\n return {\n form: {\n hours: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.required,\n numeric: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.numeric,\n minValue: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.minValue)(0.1)\n }\n }\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n this.form.hours = null;\n this.$nextTick(() => this.v$.$reset());\n },\n async submit() {\n if (!(await this.v$.$validate())) return;\n if (this.subtask.deadline) this.subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_8__[\"default\"].formatDateTimeForBackend(this.subtask.deadline);\n this.subtask.timesheets.push({\n id: null,\n employee_id: this.subtask.employee_id,\n time: typeof this.form.hours == 'string' ? parseFloat(this.form.hours) : this.form.hours\n });\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (this.subtask.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_9___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const payload = {\n ...this.subtask,\n timesheets,\n timeblocks\n };\n try {\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${this.subtask.id}`, payload);\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n },\n closeModal() {\n this.visible = false;\n this.v$.$reset();\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-add-time-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-task-modal.vue?vue&type=script&lang=js":
/*!*********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-task-modal.vue?vue&type=script&lang=js ***!
\*********************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _plugins_tm_components_z_datepicker_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@_components/z-datepicker.vue */ \"./src/plugins/tm@_components/z-datepicker.vue\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../master-task/_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* harmony import */ var _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./_components/z-task-readonly-info.vue */ \"./src/plugins/tm@modal/task/_components/z-task-readonly-info.vue\");\n/* harmony import */ var _components_employees_a_employee_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./_components/employees/a-employee.vue */ \"./src/plugins/tm@modal/task/_components/employees/a-employee.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n/* harmony import */ var _z_remove_employee_modal_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./z-remove-employee-modal.vue */ \"./src/plugins/tm@modal/task/z-remove-employee-modal.vue\");\n/* harmony import */ var _z_remove_timeblock_modal_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./z-remove-timeblock-modal.vue */ \"./src/plugins/tm@modal/task/z-remove-timeblock-modal.vue\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ZTaskReadonlyInfo: _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n AEmployee: _components_employees_a_employee_vue__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n ZDatepicker: _plugins_tm_components_z_datepicker_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n // ATaskTimeblocks,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_12__.QuillEditor,\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n ZRemoveEmployeeModal: _z_remove_employee_modal_vue__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n ZRemoveTimeblockModal: _z_remove_timeblock_modal_vue__WEBPACK_IMPORTED_MODULE_26__[\"default\"]\n },\n mixins: [_master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_17__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_21__[\"default\"]],\n emits: ['close', 'refresh'],\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n editMode: false,\n visible: false,\n subtask: null,\n isSaving: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(),\n showDatePicker: false,\n selectedNewDate: [],\n timeblocks: [],\n wasFormValidationTriggered: false,\n modalName: 'z-task-modal',\n employeeRefs: [],\n pendingRemoveEmployeeId: undefined,\n pendingRemoveEmployeeIndex: undefined\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_20__.mapGetters)('tm', ['mastertasks', 'enrichedEmployees']),\n enrichedMastertasks() {\n return this.mastertasks.map(mastertask => ({\n ...mastertask,\n _fullName: `${mastertask.name} [${mastertask.project_code}]`\n }));\n },\n editModeEmployee: {\n get() {\n return {\n id: this.subtask?.employee_id || null,\n duration: this.subtask?.duration || null\n };\n },\n set(value) {\n if (this.subtask) {\n this.subtask.employee_id = value.id;\n this.subtask.duration = value.duration;\n }\n }\n }\n },\n validations() {\n return {\n subtask: {\n master_task_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_10__.required\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_10__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_10__.required\n }\n }\n };\n },\n watch: {\n 'subtask.employee_id'(value, oldValue) {\n if (!value || !oldValue) return;\n this.subtask.timeblocks = [];\n this.subtask._employee = this.enrichedEmployees.find(employee => employee.id == this.subtask.employee_id);\n },\n 'subtask.employees': {\n handler() {\n if (!this.subtask?.employees) return;\n const lastEmployee = this.subtask.employees[this.subtask.employees.length - 1];\n if (lastEmployee?.id || lastEmployee?.duration) this.subtask.employees.push({});\n },\n deep: true\n },\n 'subtask.master_task_id'(value) {\n if (!value) return;\n this.subtask._master_task = this.mastertasks.find(mastertask => mastertask.id == this.subtask.master_task_id);\n this.subtask.project_code = this.subtask._master_task?.project_code || null;\n },\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n },\n subtask: {\n handler(val) {\n if (this.editMode && !this.subtask?.id) {\n const employees = val?.employees?.filter(employee => employee?.id || employee?.duration) || [{}];\n const subtaskData = {\n ...val,\n employees: employees && employees.length > 0 ? employees : [{}]\n };\n localStorage.setItem('subtaskData', JSON.stringify(subtaskData));\n }\n },\n deep: true\n },\n timeblocks: {\n handler(val) {\n if (this.editMode && !this.subtask?.id) {\n // Save timeblocks to localStorage for new tasks\n localStorage.setItem('subtaskTimeblocks', JSON.stringify(val));\n }\n },\n deep: true\n }\n },\n mounted() {\n // Handle remove timeblock modal\n this.$events.on('show-remove-timeblock-modal', ({\n onConfirm\n }) => {\n this.$refs.removeTimeblockModal.showModal({\n onConfirm\n });\n });\n this.$events.on('add-timeblock', timeblock => {\n if (!this.subtask?.timeblocks) {\n this.subtask.timeblocks = [];\n }\n if (!this.subtask?.timesheets) {\n this.subtask.timesheets = [];\n }\n if (!this.subtask?.is_finished) {\n this.subtask.is_finished = 0;\n }\n this.subtask.timeblocks.push(timeblock);\n });\n this.$events.on('on-subtask-edited', subtask => {\n if (subtask?.id !== this.subtask?.id) return;\n const data = JSON.parse(JSON.stringify(subtask));\n const splittedDeadline = data.deadline?.split(' ') || [];\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n\n // Convert BE format timeblocks to internal format\n const convertedTimeblocks = [];\n if (data.timeblocks && data.timeblocks.length > 0) {\n data.timeblocks.forEach(timeblock => {\n // If already in internal format, keep as is\n if (timeblock.date) {\n convertedTimeblocks.push({\n ...timeblock,\n employee_id: data.employee_id // Add employee_id\n });\n return;\n }\n\n // Convert from BE format to internal format\n if (timeblock.start && timeblock.end) {\n const startMoment = moment__WEBPACK_IMPORTED_MODULE_15___default()(timeblock.start, 'YYYY-MM-DD HH:mm:ss');\n const endMoment = moment__WEBPACK_IMPORTED_MODULE_15___default()(timeblock.end, 'YYYY-MM-DD HH:mm:ss');\n convertedTimeblocks.push({\n id: timeblock.id || null,\n date: startMoment.toDate(),\n starts_at_time: startMoment.format('HH:mm'),\n ends_at_time: endMoment.format('HH:mm'),\n is_finished: timeblock.is_finished || 0,\n employee_id: data.employee_id // Add employee_id\n });\n }\n });\n }\n // Store in component's timeblocks array\n this.timeblocks = convertedTimeblocks;\n this.subtask = this._enrichTask(data);\n\n // TODO: Remove? riesil som neodstranovanie jedineho zanamu v trvani a odpracovanom case\n this.$forceUpdate();\n });\n this.$events.on('on-subtask-deleted', subtask => {\n if (subtask?.id == this.subtask?.id) this.closeModal();\n });\n },\n methods: {\n toggleEditMode() {\n if (this.subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'edit'\n });\n this.editMode = !this.editMode;\n },\n // Set refs for employee components in create mode\n setEmployeeRef(el, index) {\n if (el) {\n this.employeeRefs[index] = el;\n }\n },\n openDatepicker(ref) {\n this.$refs[ref].openMenu();\n },\n // Helper: Get employee by ID\n getEmployeeById(employeeId) {\n return this.enrichedEmployees.find(emp => emp.id === employeeId);\n },\n // Helper: Get employee full name\n getEmployeeFullName(employeeId) {\n const employee = this.getEmployeeById(employeeId);\n return employee ? `${employee.name} ${employee.surname}` : '';\n },\n // Helper: Get valid employees (with id and duration) in create mode\n getValidEmployees() {\n if (!this.subtask?.employees) return [];\n return this.subtask.employees.filter(emp => emp.id && emp.duration);\n },\n // Helper: Get timeblocks for specific employee\n getEmployeeTimeblocks(employeeId) {\n if (!this.timeblocks) return [];\n return this.timeblocks.filter(tb => tb.employee_id === employeeId);\n },\n updateEmployeeTimeblocks(updatedTimeblocks, employeeId) {\n // Remove old timeblocks for this employee\n const otherTimeblocks = this.timeblocks.filter(tb => tb.employee_id !== employeeId);\n // Add updated timeblocks with employee_id\n const timeblocksWithEmployeeId = updatedTimeblocks.map(tb => ({\n ...tb,\n employee_id: employeeId\n }));\n this.timeblocks = [...otherTimeblocks, ...timeblocksWithEmployeeId];\n },\n updateTimeblock(val, index, employeeId) {\n const employeeTimeblocks = this.getEmployeeTimeblocks(employeeId);\n const timeblock = employeeTimeblocks[index];\n if (!timeblock) return;\n\n // Find the actual index in the full timeblocks array\n const actualIndex = this.timeblocks.indexOf(timeblock);\n if (actualIndex !== -1) {\n this.timeblocks[actualIndex] = {\n ...val,\n employee_id: employeeId\n };\n }\n },\n addTimeblock(employeeId, afterIndex = -1) {\n const newTimeblock = {\n date: new Date(),\n // Preset to current day\n starts_at_time: null,\n ends_at_time: null,\n employee_id: employeeId\n };\n\n // Get timeblocks for this employee\n const employeeTimeblocks = this.timeblocks.filter(tb => tb.employee_id === employeeId);\n if (afterIndex === -1 || afterIndex >= employeeTimeblocks.length - 1) {\n // Add at the end\n this.timeblocks.push(newTimeblock);\n } else {\n // Find the position in the full timeblocks array\n const timeblockToInsertAfter = employeeTimeblocks[afterIndex];\n const insertPosition = this.timeblocks.indexOf(timeblockToInsertAfter) + 1;\n this.timeblocks.splice(insertPosition, 0, newTimeblock);\n }\n },\n removeTimeblock(index, employeeId) {\n const employeeTimeblocks = this.getEmployeeTimeblocks(employeeId);\n const timeblock = employeeTimeblocks[index];\n if (!timeblock) return;\n\n // Find the actual index in the full timeblocks array\n const actualIndex = this.timeblocks.indexOf(timeblock);\n if (actualIndex !== -1) {\n this.timeblocks.splice(actualIndex, 1);\n }\n },\n // Handle remove employee - also removes their timeblocks\n handleRemoveEmployee() {\n this.pendingRemoveEmployeeId = this.subtask.employee_id;\n this.$refs.removeEmployeeModal.showModal();\n },\n removeEmployeeAtIndex(index) {\n this.pendingRemoveEmployeeIndex = index;\n this.$refs.removeEmployeeModal.showModal();\n },\n confirmRemoveEmployee() {\n // Handle edit mode (single employee removal)\n if (this.pendingRemoveEmployeeId !== undefined) {\n if (this.subtask.employee_id) {\n // Remove all timeblocks for this employee\n this.timeblocks = this.timeblocks.filter(tb => tb.employee_id !== this.subtask.employee_id);\n }\n\n // Clear employee data in edit mode\n this.subtask.employee_id = null;\n this.subtask.duration = null;\n this.pendingRemoveEmployeeId = undefined;\n }\n // Handle create mode (multiple employees removal)\n else if (this.pendingRemoveEmployeeIndex !== undefined) {\n const employee = this.subtask.employees[this.pendingRemoveEmployeeIndex];\n if (employee?.id) {\n // Remove all timeblocks for this employee\n this.timeblocks = this.timeblocks.filter(tb => tb.employee_id !== employee.id);\n }\n\n // Remove employee from array\n this.subtask.employees.splice(this.pendingRemoveEmployeeIndex, 1);\n this.pendingRemoveEmployeeIndex = undefined;\n }\n },\n async showModal({\n subtask,\n editMode = false,\n mastertask = {}\n }) {\n this.isSaving = false;\n this.subtask = null;\n this.wasFormValidationTriggered = false; // Reset validation trigger\n\n // CRITICAL: Prevent v-dialog autofocus BEFORE modal opens\n this.preventInputFocus = true;\n this.visible = true;\n this.timeblocks = [];\n this.employeeRefs = [];\n this.$nextTick(() => {\n this.v$.$reset();\n\n // Reset after modal is fully rendered and v-dialog autofocus has been blocked\n setTimeout(() => {\n this.preventInputFocus = false;\n }, 300);\n });\n try {\n if (subtask?.id) {\n const data = await this.$axios.get_auth_data(`v1/subtasks/${subtask.id}`);\n\n // Convert BE format timeblocks to internal format\n const convertedTimeblocks = [];\n if (data.timeblocks && data.timeblocks.length > 0) {\n data.timeblocks.forEach(timeblock => {\n // If already in internal format, keep as is\n if (timeblock.date) {\n convertedTimeblocks.push({\n ...timeblock,\n employee_id: data.employee_id // Add employee_id for edit mode\n });\n return;\n }\n\n // Convert from BE format to internal format\n if (timeblock.start && timeblock.end) {\n const startMoment = moment__WEBPACK_IMPORTED_MODULE_15___default()(timeblock.start, 'YYYY-MM-DD HH:mm:ss');\n const endMoment = moment__WEBPACK_IMPORTED_MODULE_15___default()(timeblock.end, 'YYYY-MM-DD HH:mm:ss');\n convertedTimeblocks.push({\n id: timeblock.id || null,\n date: startMoment.toDate(),\n starts_at_time: startMoment.format('HH:mm'),\n ends_at_time: endMoment.format('HH:mm'),\n is_finished: timeblock.is_finished || 0,\n employee_id: data.employee_id // Add employee_id for edit mode\n });\n }\n });\n }\n // Store timeblocks in the component's timeblocks array\n this.timeblocks = convertedTimeblocks;\n\n // Ensure at least one timeblock exists for edit mode\n if (data.employee_id && this.timeblocks.length === 0) {\n this.addTimeblock(data.employee_id);\n }\n if (!data.deadline) {\n this.editMode = editMode || !data.id;\n return this.subtask = this._enrichTask(data);\n }\n const splittedDeadline = data.deadline.split(' ');\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n this.subtask = this._enrichTask(data);\n } else {\n const savedSubtask = localStorage.getItem('subtaskData');\n const savedTimeblocks = localStorage.getItem('subtaskTimeblocks');\n try {\n if (savedSubtask) {\n const parsedSubtask = JSON.parse(savedSubtask);\n this.subtask = parsedSubtask;\n // If the parsed result is not an object, reset to default\n if (typeof this.subtask !== 'object' || this.subtask === null) {\n throw new Error('Parsed subtask is not an object');\n }\n\n // Load timeblocks from localStorage if they exist\n if (savedTimeblocks) {\n try {\n const parsedTimeblocks = JSON.parse(savedTimeblocks);\n if (Array.isArray(parsedTimeblocks)) {\n this.timeblocks = parsedTimeblocks.map(tb => ({\n ...tb,\n date: tb.date ? new Date(tb.date) : null\n }));\n }\n } catch (e) {\n console.error('Error parsing saved timeblocks:', e);\n this.timeblocks = [];\n }\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n } else {\n throw new Error('subtaskData is null or undefined');\n }\n } catch (error) {\n this.subtask = {\n master_task: mastertask,\n employees: [{}],\n _deadline_time: '17:00'\n };\n }\n if (subtask?.deadline && subtask._deadline_time && subtask.employee_id) {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n this.subtask.employees = [employee];\n this.subtask.deadline = subtask.deadline;\n this.subtask._deadline_time = subtask._deadline_time;\n }\n if (subtask?.master_task_id && subtask?.project_code) {\n this.subtask.master_task_id = subtask.master_task_id;\n this.subtask.project_code = subtask.project_code;\n }\n }\n this.editMode = editMode || !this.subtask.id;\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n }\n },\n deleteTimeblock(i) {\n this.subtask.timeblocks.splice(i, 1);\n },\n closeModal() {\n this.visible = false;\n this.$router.replace({\n name: this.$route.name\n });\n },\n async validate(concept = false) {\n if (concept === false) {\n const employeesValid = await this._validateEmployees();\n const timeblocksValid = await this._validateTimeblocks();\n if (!(await this.v$.$validate())) return;\n if (!employeesValid || !timeblocksValid) return;\n return true;\n } else {\n this.v$.subtask.master_task_id.$touch();\n return this.v$.subtask.master_task_id.$errors.length === 0;\n }\n },\n async save(concept = false) {\n this.v$.$reset();\n this.wasFormValidationTriggered = true;\n if (!(await this.validate(concept))) return;\n this.subtask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n\n // Concept tasks may not have a deadline time set\n this.subtask.deadline = this.subtask.deadline ? moment__WEBPACK_IMPORTED_MODULE_15___default()(this.subtask.deadline).format('YYYY-MM-DD HH:mm:SS') : null;\n if (this.subtask?.id) {\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format for update\n // Filter out completely empty timeblocks AND timeblocks without all required fields\n const timeblocks = this.timeblocks.filter(timeblock => timeblock.date && timeblock.starts_at_time && timeblock.ends_at_time && timeblock.employee_id === this.subtask.employee_id) // Only send complete timeblocks for this employee\n .map(timeblock => {\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_15___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const payload = {\n ...this.subtask,\n timesheets,\n timeblocks\n };\n if (concept) {\n payload.is_draft = 1;\n } else {\n payload.is_draft = 0;\n }\n const {\n subtask\n } = await this.$axios.patch_auth_form(`v1/subtasks/${this.subtask.id}`, payload);\n localStorage.removeItem('subtaskData');\n localStorage.removeItem('subtaskTimeblocks');\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n } else {\n // Filter out employees that don't have both id and duration\n const validEmployees = this.subtask.employees.filter(employee => employee.id && employee.duration);\n\n // Assign timeblocks to each employee based on employee_id\n // Filter out empty/incomplete timeblocks - only send fully filled timeblocks\n validEmployees.forEach(employee => {\n employee.timeblocks = this.timeblocks.filter(timeblock => timeblock.date && timeblock.starts_at_time && timeblock.ends_at_time && timeblock.employee_id === employee.id).map(timeblock => {\n return {\n start: `${moment__WEBPACK_IMPORTED_MODULE_15___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.starts_at_time}:00`,\n end: `${moment__WEBPACK_IMPORTED_MODULE_15___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.ends_at_time}:00`,\n id: null\n };\n });\n });\n const subtaskCopy = {\n ...this.subtask,\n employees: validEmployees\n };\n if (concept) {\n subtaskCopy.is_draft = true;\n subtaskCopy.employees = subtaskCopy.employees?.length > 0 ? subtaskCopy.employees : [{\n id: this.$store.getters['auth/user']?.id,\n duration: 0\n }];\n }\n delete subtaskCopy._master_task;\n const {\n subtasks\n } = await this.$axios.post_auth(`v1/mastertasks/${this.subtask.master_task_id}/subtasks`, subtaskCopy);\n localStorage.removeItem('subtaskData');\n localStorage.removeItem('subtaskTimeblocks');\n this.subtask.id = subtasks[0].id;\n subtasks.forEach(subtask => {\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n });\n this.$events.emit('task-created');\n this.$events.emit('close-both-modals');\n }\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n } finally {\n this.isSaving = false;\n }\n },\n openDeleteTaskModal(subtask) {\n if (subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'delete'\n });\n this.$events.emit('show-delete-task-modal', {\n subtask\n });\n },\n showCompleteTaskModal() {\n this.$events.emit('show-complete-task-modal', {\n subtask: this.subtask\n });\n if (this.subtask.deadline) this.subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formatDateTimeForBackend(this.subtask.deadline);\n },\n filesUploaded(files) {\n this.subtask.files = files;\n },\n updateSubtask(subtask) {\n this.subtask = subtask;\n },\n _mergeDeadlineTimeDate() {\n // Override for concept tasks which may not have a deadline time set (check for invalid date)\n if (isNaN(new Date(this.subtask.deadline).getTime())) {\n this.subtask.deadline = null;\n } else {\n const date = new Date(this.subtask.deadline);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.subtask.deadline = date;\n }\n },\n async _validateEmployees() {\n if (this.subtask.id) {\n // For existing subtasks, at least one employee is required\n const hasEmployee = !!(this.subtask.employee_id && this.subtask.duration);\n return hasEmployee;\n } else {\n let valid = true;\n\n // Validate ALL employee component refs (this will show errors on inputs)\n for (let i = 0; i < this.employeeRefs.length; i++) {\n const employeeRef = this.employeeRefs[i];\n\n // Validate employees that have any data (partial or complete)\n if (employeeRef && typeof employeeRef.validate === 'function') {\n if (!(await employeeRef.validate())) {\n valid = false;\n }\n }\n }\n return valid;\n }\n },\n async _validateTimeblocks() {\n // Date alone is valid. Validation only applies if start OR end time is filled.\n // If start OR end is filled, then ALL fields (date, start, end) are required.\n let valid = true;\n for (const timeblock of this.timeblocks) {\n const hasStart = !!timeblock.starts_at_time;\n const hasEnd = !!timeblock.ends_at_time;\n const hasAnyTime = hasStart || hasEnd;\n\n // If no time data (start/end), timeblock is valid (date alone is OK)\n if (!hasAnyTime) {\n continue;\n }\n\n // If start OR end is filled, ALL fields are required\n const hasDate = !!timeblock.date;\n if (!hasDate || !hasStart || !hasEnd) {\n valid = false;\n break;\n }\n\n // Validate that end time is after start time\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_15___default()(timeblock.date).format('YYYY-MM-DD');\n const start = moment__WEBPACK_IMPORTED_MODULE_15___default()(`${dateStr} ${timeblock.starts_at_time}`, 'YYYY-MM-DD HH:mm');\n const end = moment__WEBPACK_IMPORTED_MODULE_15___default()(`${dateStr} ${timeblock.ends_at_time}`, 'YYYY-MM-DD HH:mm');\n if (end.isSameOrBefore(start)) {\n valid = false;\n break;\n }\n }\n return valid;\n },\n _enrichTask(subtask) {\n return {\n ...subtask,\n _created_by: this.enrichedEmployees.find(employee => employee.id == subtask.created_by),\n _employee: this.enrichedEmployees.find(employee => employee.id == subtask.employee_id),\n _master_task: this.mastertasks.find(mastertask => mastertask.id == subtask.master_task_id)\n };\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?vue&type=script&lang=js ***!
\****************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_every_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.every.js */ \"./node_modules/core-js/modules/esnext.iterator.every.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_every_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_every_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_5__[\"default\"]],\n props: {\n mode: {\n type: String,\n default: 'edit' // edit or delete\n }\n },\n emits: ['close', 'on-subtask-edited'],\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n visible: false,\n subtask: null,\n loadingTimeblocks: {},\n loadingCloseAll: false,\n modalName: 'z-unable-to-complete-task-modal'\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n async complete() {},\n closeModal() {\n this.visible = false;\n },\n async handleFinishTimeblock(timeblock) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n try {\n this.loadingTimeblocks[timeblock.id] = true;\n await this.$axios.put_auth(`v1/timeblocks/${timeblock.id}`, {\n ...timeblock,\n is_finished: 1\n });\n timeblock.is_finished = 1;\n const areAllTimeblocksFinished = subtask.timeblocks.every(timeblock => timeblock.is_finished);\n if (areAllTimeblocksFinished) {\n await this._finishSubtask();\n this.$store.dispatch('tm/removeOngoingSubtask', this.subtask.id);\n }\n this.$events.emit('on-subtask-edited', subtask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(error.message || error);\n } finally {\n this.loadingTimeblocks[timeblock.id] = false;\n }\n },\n async handleFinishAllTimeblocks() {\n this.loadingCloseAll = true;\n try {\n const promises = this.subtask.timeblocks.map(timeblock => {\n return this.$axios.put_auth(`v1/timeblocks/${timeblock.id}`, {\n ...timeblock,\n is_finished: 1\n });\n });\n await Promise.all(promises);\n this.subtask.timeblocks = this.subtask.timeblocks.map(timeblock => {\n timeblock.is_finished = 1;\n return timeblock;\n });\n await this._finishSubtask();\n this.$store.dispatch('tm/removeOngoingSubtask', this.subtask.id);\n this.$events.emit('on-subtask-edited', this.subtask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(error.message || error);\n } finally {\n this.loadingCloseAll = false;\n }\n },\n async _finishSubtask() {\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (this.subtask.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_7___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const tempSubtask = {\n ...this.subtask,\n is_finished: 1,\n timesheets,\n timeblocks\n };\n return this.$axios.put_auth(`v1/subtasks/${tempSubtask.id}`, tempSubtask);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-unable-to-edit-office-task-modal.vue?vue&type=script&lang=js":
/*!*******************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-unable-to-edit-office-task-modal.vue?vue&type=script&lang=js ***!
\*******************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n props: {\n mode: {\n type: String,\n default: 'edit' // edit or delete\n }\n },\n emits: ['close', 'on-subtask-edited'],\n data() {\n return {\n visible: false,\n subtask: null,\n modalName: 'z-unable-to-edit-office-task-modal'\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n async complete() {},\n closeModal() {\n this.visible = false;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-unable-to-edit-office-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/team/z-delete-team-modal.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/team/z-delete-team-modal.vue?vue&type=script&lang=js ***!
\****************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['update'],\n data() {\n return {\n visible: false,\n team: null,\n isDeleting: false,\n modalName: 'z-delete-team-modal'\n };\n },\n methods: {\n async showModal({\n team\n }) {\n this.team = team;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n async deleteTeam() {\n if (this.isDeleting) return;\n this.isDeleting = true;\n try {\n await this.$axios.delete_auth(`v1/teams/${this.team.id}`);\n this.visible = false;\n this.$emit('update', this.team);\n this.$store.commit('tm/delete_team', this.team);\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n } finally {\n this.isDeleting = false;\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/team/z-delete-team-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/team/z-team-modal.vue?vue&type=script&lang=js":
/*!*********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/team/z-team-modal.vue?vue&type=script&lang=js ***!
\*********************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-resize-handle.vue */ \"./src/plugins/tm@modal/_components/a-resize-handle.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-reset-size-button.vue */ \"./src/plugins/tm@modal/_components/a-reset-size-button.vue\");\n/* harmony import */ var _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/plugins/tm@modal/_components/a-close-button.vue */ \"./src/plugins/tm@modal/_components/a-close-button.vue\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst atLeastOne = value => value.length;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n AResizeHandle: _plugins_tm_modal_components_a_resize_handle_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n AResetSizeButton: _plugins_tm_modal_components_a_reset_size_button_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n ACloseButton: _plugins_tm_modal_components_a_close_button_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"]\n },\n mixins: [_plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_10__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_11__[\"default\"]],\n emits: ['close', 'update'],\n data() {\n return {\n visible: false,\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n employeeSelect: null,\n team: null,\n modalName: 'z-team-modal'\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_9__.mapGetters)('tm', ['enrichedEmployees']),\n employeesOptions() {\n const selectedEmployeesIds = this.team.employees.map(employee => employee.id);\n return this.enrichedEmployees.filter(employee => !selectedEmployeesIds.includes(employee.id));\n }\n },\n validations() {\n return {\n team: {\n name: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.required\n },\n employees: {\n atLeastOne\n }\n }\n };\n },\n watch: {\n employeeSelect(employeeId) {\n if (!employeeId) return;\n const employee = this.enrichedEmployees.find(employee => employee.id == employeeId);\n this.team.employees.push(employee);\n this.employeeSelect = null;\n this.$refs.autocomplete.search = '';\n }\n },\n methods: {\n async showModal({\n team = null\n }) {\n this.visible = true;\n this.team = null;\n this.$nextTick(() => this.v$.$reset());\n try {\n if (team?.id) {\n const t = await this.$axios.get_auth_data(`v1/teams/${team.id}`);\n this.team = this._enrichTeam(t);\n } else {\n this.team = {\n employees: []\n };\n }\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n }\n },\n closeModal() {\n this.visible = false;\n this.$emit('close', this.team);\n },\n async save() {\n if (!(await this.v$.$validate())) return;\n try {\n if (this.team.id) {\n const {\n team\n } = await this.$axios.put_auth(`v1/teams/${this.team.id}`, this.team);\n const fullTeamResource = await this.$axios.get_auth_data(`v1/teams/${team.id}`);\n this.$store.commit('tm/update_team', fullTeamResource);\n } else {\n const {\n team\n } = await this.$axios.post_auth(`v1/teams`, this.team);\n const fullTeamResource = await this.$axios.get_auth_data(`v1/teams/${team.id}`);\n this.$store.commit('tm/save_team', fullTeamResource);\n }\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n }\n },\n _enrichTeam(team) {\n team.employees = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_8__[\"default\"].enrichEmployees(team.employees);\n return team;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/team/z-team-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/w/loadable/_components/w-loadable.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/w/loadable/_components/w-loadable.vue?vue&type=script&lang=js ***!
\****************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n content: {\n type: [Object, Array, Boolean],\n default: () => null\n },\n emptyMessage: {\n type: String,\n default: 'No items'\n }\n },\n data() {\n return {\n loader: null\n };\n },\n watch: {\n // content(value) {\n // \tif (value) {\n // \t\tthis._stopLoading()\n // \t}\n // \telse\n // \t\tthis._startLoading()\n // }\n },\n async mounted() {\n if (this.content) return;\n await this._startLoading();\n },\n methods: {\n async _startLoading() {\n // this.loader = await this.$loading.show()\n },\n _stopLoading() {\n // this.loader?.hide()\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/w/loadable/_components/w-loadable.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/cell.vue?vue&type=style&index=0&id=1dabbf0c&lang=scss":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/cell.vue?vue&type=style&index=0&id=1dabbf0c&lang=scss ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vuecal__cell {\\n position: relative;\\n width: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n text-align: center;\\n transition: 0.15s ease-in-out background-color;\\n}\\n.vuecal__cells.month-view .vuecal__cell, .vuecal__cells.week-view .vuecal__cell {\\n width: 14.2857%;\\n}\\n.vuecal--hide-weekends .vuecal__cells.month-view .vuecal__cell, .vuecal--hide-weekends .vuecal__cells.week-view .vuecal__cell {\\n width: 20%;\\n}\\n.vuecal__cells.years-view .vuecal__cell {\\n width: 20%;\\n}\\n.vuecal__cells.year-view .vuecal__cell {\\n width: 33.33%;\\n}\\n.vuecal__cells.day-view .vuecal__cell {\\n flex: 1;\\n}\\n.vuecal--overflow-x.vuecal--day-view .vuecal__cell {\\n width: auto;\\n}\\n.vuecal--click-to-navigate .vuecal__cell:not(.vuecal__cell--disabled) {\\n cursor: pointer;\\n}\\n.vuecal--view-with-time .vuecal__cell, .vuecal--week-view.vuecal--no-time .vuecal__cell:not(.vuecal__cell--has-splits), .vuecal--day-view.vuecal--no-time .vuecal__cell:not(.vuecal__cell--has-splits) {\\n display: block;\\n}\\n.vuecal__cell.vuecal__cell--has-splits {\\n flex-direction: row;\\n display: flex;\\n}\\n.vuecal__cell:before {\\n content: \\\"\\\";\\n position: absolute;\\n z-index: 0;\\n top: 0;\\n left: 0;\\n right: -1px;\\n bottom: -1px;\\n border: 1px solid rgba(196, 196, 196, 0.25);\\n}\\n.vuecal--overflow-x.vuecal--day-view .vuecal__cell:before {\\n bottom: 0;\\n}\\n.vuecal__cell--today, .vuecal__cell--current {\\n background-color: rgba(240, 240, 255, 0.4);\\n z-index: 1;\\n}\\n.vuecal__cell--selected {\\n background-color: rgba(235, 255, 245, 0.4);\\n z-index: 2;\\n}\\n.vuecal--day-view .vuecal__cell--selected {\\n background: none;\\n}\\n.vuecal__cell--out-of-scope {\\n color: rgba(0, 0, 0, 0.25);\\n}\\n.vuecal__cell--disabled {\\n color: rgba(0, 0, 0, 0.25);\\n cursor: not-allowed;\\n}\\n.vuecal__cell--highlighted:not(.vuecal__cell--has-splits), .vuecal__cell-split.vuecal__cell-split--highlighted {\\n background-color: rgba(0, 0, 0, 0.04);\\n transition-duration: 5ms;\\n}\\n.vuecal__cell-content {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n outline: none;\\n}\\n.vuecal--years-view .vuecal__cell-content, .vuecal--year-view .vuecal__cell-content, .vuecal--month-view .vuecal__cell-content {\\n justify-content: center;\\n}\\n.vuecal__cell .cell-time-labels {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n flex-direction: column;\\n}\\n.vuecal__cell .cell-time-label {\\n flex-grow: 1;\\n font-size: 0.8em;\\n opacity: 0.3;\\n line-height: 1.7;\\n}\\n.vuecal__cell-split {\\n display: flex;\\n flex-grow: 1;\\n flex-direction: column;\\n height: 100%;\\n position: relative;\\n transition: 0.15s ease-in-out background-color;\\n}\\n.vuecal__cell-events {\\n width: 100%;\\n}\\n.vuecal__cell-events-count {\\n position: absolute;\\n left: 50%;\\n top: 65%;\\n transform: translateX(-50%);\\n min-width: 12px;\\n height: 12px;\\n line-height: 12px;\\n padding: 0 3px;\\n background: #999;\\n color: #fff;\\n border-radius: 12px;\\n font-size: 10px;\\n box-sizing: border-box;\\n}\\n.vuecal__cell .vuecal__special-hours {\\n position: absolute;\\n left: 0;\\n right: 0;\\n box-sizing: border-box;\\n}\\n.vuecal--overflow-x.vuecal--week-view .vuecal__cell,\\n.vuecal__cell-split {\\n overflow: hidden;\\n}\\n.vuecal__no-event {\\n padding-top: 1em;\\n color: #aaa;\\n justify-self: flex-start;\\n margin-bottom: auto;\\n}\\n.vuecal__all-day .vuecal__no-event {\\n display: none;\\n}\\n.vuecal__now-line {\\n position: absolute;\\n left: 0;\\n width: 100%;\\n height: 0;\\n color: red;\\n border-top: 1px solid currentColor;\\n opacity: 0.6;\\n z-index: 1;\\n}\\n.vuecal__now-line:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: -6px;\\n left: 0;\\n border: 5px solid transparent;\\n border-left-color: currentColor;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/cell.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/event.vue?vue&type=style&index=0&id=5122da9c&lang=scss":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/event.vue?vue&type=style&index=0&id=5122da9c&lang=scss ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml;utf8, */ \"data:image/svg+xml;utf8,\"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml;utf8, */ \"data:image/svg+xml;utf8,\"), __webpack_require__.b);\nvar ___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()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vuecal__event {\\n color: #666;\\n background-color: rgba(248, 248, 248, 0.8);\\n position: relative;\\n box-sizing: border-box;\\n left: 0;\\n width: 100%;\\n z-index: 1;\\n transition: box-shadow 0.3s, left 0.3s, width 0.3s;\\n overflow: hidden;\\n}\\n.vuecal--no-time .vuecal__event {\\n min-height: 8px;\\n}\\n.vuecal:not(.vuecal--dragging-event) .vuecal__event:hover {\\n z-index: 2;\\n}\\n.vuecal__cell .vuecal__event * {\\n -webkit-user-select: text;\\n -moz-user-select: text;\\n user-select: text;\\n}\\n.vuecal--view-with-time .vuecal__event:not(.vuecal__event--all-day) {\\n position: absolute;\\n}\\n.vuecal--view-with-time .vuecal__bg .vuecal__event--all-day {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n z-index: 0;\\n opacity: 0.6;\\n width: auto;\\n right: 0;\\n}\\n.vuecal--view-with-time .vuecal__all-day .vuecal__event--all-day {\\n position: relative;\\n left: 0;\\n}\\n.vuecal__event--background {\\n z-index: 0;\\n}\\n.vuecal__event--focus, .vuecal__event:focus {\\n box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.2);\\n z-index: 3;\\n outline: none;\\n}\\n.vuecal__event.vuecal__event--dragging {\\n opacity: 0.7;\\n}\\n.vuecal__event.vuecal__event--static {\\n opacity: 0;\\n transition: opacity 0.1s;\\n}\\n@-moz-document url-prefix() {\\n.vuecal__event.vuecal__event--dragging {\\n opacity: 1;\\n}\\n}\\n.vuecal__event-resize-handle {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n height: 1em;\\n background-color: rgba(255, 255, 255, 0.3);\\n opacity: 0;\\n transform: translateY(110%);\\n transition: 0.3s;\\n cursor: ns-resize;\\n}\\n.vuecal__event:hover .vuecal__event-resize-handle, .vuecal__event:focus .vuecal__event-resize-handle, .vuecal__event--focus .vuecal__event-resize-handle, .vuecal__event--resizing .vuecal__event-resize-handle {\\n opacity: 1;\\n transform: translateY(0);\\n}\\n.vuecal__event--dragging .vuecal__event-resize-handle {\\n display: none;\\n}\\n.vuecal__event-delete {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n height: 1.4em;\\n line-height: 1.4em;\\n background-color: rgba(221, 51, 51, 0.85);\\n color: #fff;\\n z-index: 0;\\n cursor: pointer;\\n transform: translateY(-110%);\\n transition: 0.3s;\\n}\\n.vuecal__event .vuecal__event-delete {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n.vuecal--full-height-delete .vuecal__event-delete {\\n height: auto;\\n bottom: 0;\\n}\\n.vuecal--full-height-delete .vuecal__event-delete:before {\\n content: \\\"\\\";\\n width: 1.7em;\\n height: 1.8em;\\n display: block;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n}\\n.vuecal__event--deletable .vuecal__event-delete {\\n transform: translateY(0);\\n z-index: 1;\\n}\\n.vuecal__event--deletable.vuecal__event--dragging .vuecal__event-delete {\\n opacity: 0;\\n transition: none;\\n}\\n.vuecal--month-view .vuecal__event-title {\\n font-size: 0.85em;\\n}\\n.vuecal--short-events .vuecal__event-title {\\n text-align: left;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n padding: 0 3px;\\n}\\n.vuecal__event-title,\\n.vuecal__event-content {\\n hyphens: auto;\\n}\\n.vuecal__event-title--edit {\\n border-bottom: 1px solid transparent;\\n text-align: center;\\n transition: 0.3s;\\n color: inherit;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");\\n background-repeat: no-repeat;\\n background-position: 120% 0.15em;\\n background-size: 0.4em;\\n outline: none;\\n width: 100%;\\n}\\n.vuecal__event-title--edit:hover, .vuecal__event-title--edit:focus {\\n border-color: rgba(0, 0, 0, 0.4);\\n background-position: 99% 0.15em;\\n background-size: 1.2em;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/event.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/header.vue?vue&type=style&index=0&id=54368c25&lang=scss":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/header.vue?vue&type=style&index=0&id=54368c25&lang=scss ***!
\***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vuecal__header button {\\n outline: none;\\n font-family: inherit;\\n}\\n.vuecal__menu {\\n padding: 0;\\n margin: 0;\\n list-style-type: none;\\n justify-content: center;\\n background-color: rgba(0, 0, 0, 0.02);\\n}\\n.vuecal__view-btn {\\n background: none;\\n border: none;\\n padding: 0.3em 1em;\\n height: 2.2em;\\n font-size: 1.3em;\\n border-bottom: 0 solid currentColor;\\n cursor: pointer;\\n color: inherit;\\n box-sizing: border-box;\\n transition: 0.2s;\\n}\\n.vuecal__view-btn--active {\\n border-bottom-width: 2px;\\n background: rgba(255, 255, 255, 0.15);\\n}\\n.vuecal__title-bar {\\n background-color: rgba(0, 0, 0, 0.1);\\n display: flex;\\n align-items: center;\\n text-align: center;\\n justify-content: space-between;\\n font-size: 1.4em;\\n line-height: 1.3;\\n min-height: 2em;\\n}\\n.vuecal--xsmall .vuecal__title-bar {\\n font-size: 1.3em;\\n}\\n.vuecal__title {\\n position: relative;\\n justify-content: center;\\n}\\n.vuecal__title button {\\n cursor: pointer;\\n background: none;\\n border: none;\\n}\\n.vuecal__title button.slide-fade--left-leave-active,\\n.vuecal__title button.slide-fade--right-leave-active {\\n width: 100%;\\n}\\n.vuecal__today-btn {\\n position: relative;\\n align-items: center;\\n display: flex;\\n font-size: 0.8em;\\n background: none;\\n border: none;\\n}\\n.vuecal__today-btn span.default {\\n font-size: 0.8em;\\n padding: 3px 6px;\\n text-transform: uppercase;\\n cursor: pointer;\\n}\\n.vuecal__arrow {\\n cursor: pointer;\\n position: relative;\\n z-index: 1;\\n background: none;\\n border: none;\\n white-space: nowrap;\\n}\\n.vuecal__arrow--prev {\\n margin-left: 0.6em;\\n}\\n.vuecal__arrow--next {\\n margin-right: 0.6em;\\n}\\n.vuecal__arrow i.angle {\\n display: inline-block;\\n border: solid currentColor;\\n border-width: 0 2px 2px 0;\\n padding: 0.25em;\\n transform: rotate(-45deg);\\n}\\n.vuecal__arrow--prev i.angle {\\n border-width: 2px 0 0 2px;\\n}\\n.vuecal__arrow--highlighted, .vuecal__today-btn--highlighted, .vuecal__view-btn--highlighted {\\n position: relative;\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n.vuecal__arrow--highlighted *, .vuecal__today-btn--highlighted *, .vuecal__view-btn--highlighted * {\\n pointer-events: none;\\n}\\n.vuecal__arrow--highlighted:before, .vuecal__arrow--highlighted:after, .vuecal__today-btn--highlighted:before, .vuecal__today-btn--highlighted:after, .vuecal__view-btn--highlighted:before, .vuecal__view-btn--highlighted:after {\\n content: \\\"\\\";\\n background-color: inherit;\\n animation: sonar 0.8s infinite ease-out;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n pointer-events: none;\\n}\\n.vuecal__arrow--highlighted:before, .vuecal__today-btn--highlighted:before, .vuecal__view-btn--highlighted:before {\\n width: 3em;\\n height: 3em;\\n border-radius: 3em;\\n margin-top: -1.5em;\\n margin-left: -1.5em;\\n}\\n.vuecal__arrow--highlighted:after, .vuecal__today-btn--highlighted:after, .vuecal__view-btn--highlighted:after {\\n animation-duration: 1.5s;\\n animation-delay: 0.1s;\\n width: 2.6em;\\n height: 2.6em;\\n border-radius: 2.6em;\\n margin-top: -1.3em;\\n margin-left: -1.3em;\\n}\\n@keyframes sonar {\\n0%, 20% {\\n opacity: 1;\\n}\\n100% {\\n transform: scale(2.5);\\n opacity: 0;\\n}\\n}\\n@media screen and (max-width: 450px) {\\n.vuecal__title {\\n font-size: 0.9em;\\n}\\n.vuecal__view-btn {\\n padding-left: 0.6em;\\n padding-right: 0.6em;\\n}\\n}\\n@media screen and (max-width: 350px) {\\n.vuecal__view-btn {\\n font-size: 1.1em;\\n}\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/header.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/weekdays-headings.vue?vue&type=style&index=0&id=4e953f8b&lang=scss":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/weekdays-headings.vue?vue&type=style&index=0&id=4e953f8b&lang=scss ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vuecal__weekdays-headings {\\n border-bottom: 1px solid #ddd;\\n margin-bottom: -1px;\\n}\\n.vuecal--week-numbers .vuecal__weekdays-headings {\\n padding-left: 3em;\\n}\\n.vuecal--view-with-time .vuecal__weekdays-headings {\\n padding-left: 3em;\\n}\\n.vuecal--view-with-time.vuecal--twelve-hour .vuecal__weekdays-headings {\\n font-size: 0.9em;\\n padding-left: 4em;\\n}\\n.vuecal--overflow-x.vuecal--view-with-time .vuecal__weekdays-headings {\\n padding-left: 0;\\n}\\n.vuecal__heading {\\n width: 100%;\\n height: 2.8em;\\n font-weight: 400;\\n justify-content: center;\\n text-align: center;\\n align-items: center;\\n position: relative;\\n overflow: hidden;\\n}\\n.vuecal__heading > .vuecal__flex {\\n width: 100%;\\n height: 100%;\\n align-items: initial !important;\\n}\\n.vuecal--sticky-split-labels .vuecal__heading {\\n height: 3.4em;\\n}\\n.vuecal--month-view .vuecal__heading, .vuecal--week-view .vuecal__heading, .vuecal--day-view .vuecal__heading {\\n width: 14.2857%;\\n}\\n.vuecal--hide-weekends.vuecal--month-view .vuecal__heading, .vuecal--hide-weekends.vuecal--week-view .vuecal__heading, .vuecal--hide-weekends.vuecal--day-view .vuecal__heading {\\n width: 20%;\\n}\\n.vuecal--years-view .vuecal__heading {\\n width: 20%;\\n}\\n.vuecal--year-view .vuecal__heading {\\n width: 33.33%;\\n}\\n.vuecal__heading .weekday-label {\\n flex-shrink: 0;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n.vuecal--small .vuecal__heading .small, .vuecal--xsmall .vuecal__heading .xsmall {\\n display: block;\\n}\\n.vuecal__heading .small, .vuecal__heading .xsmall, .vuecal--small .vuecal__heading .full, .vuecal--small .vuecal__heading .xsmall, .vuecal--xsmall .vuecal__heading .full, .vuecal--xsmall .vuecal__heading .small {\\n display: none;\\n}\\n.vuecal .vuecal__split-days-headers {\\n align-items: center;\\n}\\n@media screen and (max-width: 550px) {\\n.vuecal__heading {\\n line-height: 1.2;\\n}\\n.vuecal__heading .small, .vuecal--small .vuecal__heading .small, .vuecal--xsmall .vuecal__heading .xsmall {\\n display: block;\\n}\\n.vuecal__heading .full, .vuecal__heading .xsmall, .vuecal--small .vuecal__heading .full, .vuecal--small .vuecal__heading .xsmall, .vuecal--xsmall .vuecal__heading .full, .vuecal--xsmall .vuecal__heading .small {\\n display: none;\\n}\\n.vuecal--overflow-x .vuecal__heading .full, .vuecal--small.vuecal--overflow-x .vuecal__heading .small, .vuecal--xsmall.vuecal--overflow-x .vuecal__heading .xsmall {\\n display: block;\\n}\\n.vuecal--overflow-x .vuecal__heading .small, .vuecal--overflow-x .vuecal__heading .xsmall, .vuecal--small.vuecal--overflow-x .vuecal__heading .full, .vuecal--small.vuecal--overflow-x .vuecal__heading .xsmall, .vuecal--xsmall.vuecal--overflow-x .vuecal__heading .full, .vuecal--xsmall.vuecal--overflow-x .vuecal__heading .small {\\n display: none;\\n}\\n}\\n@media screen and (max-width: 450px) {\\n.vuecal__heading .xsmall, .vuecal--small .vuecal__heading .xsmall, .vuecal--xsmall .vuecal__heading .xsmall {\\n display: block;\\n}\\n.vuecal__heading .full, .vuecal__heading .small, .vuecal--small .vuecal__heading .full, .vuecal--small .vuecal__heading .small, .vuecal--xsmall .vuecal__heading .full, .vuecal--xsmall .vuecal__heading .small {\\n display: none;\\n}\\n.vuecal--small.vuecal--overflow-x .vuecal__heading .small, .vuecal--xsmall.vuecal--overflow-x .vuecal__heading .xsmall {\\n display: block;\\n}\\n.vuecal--small.vuecal--overflow-x .vuecal__heading .full, .vuecal--small.vuecal--overflow-x .vuecal__heading .xsmall, .vuecal--xsmall.vuecal--overflow-x .vuecal__heading .full, .vuecal--xsmall.vuecal--overflow-x .vuecal__heading .small {\\n display: none;\\n}\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/weekdays-headings.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?vue&type=style&index=0&id=24e90535&lang=scss&scoped=true":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?vue&type=style&index=0&id=24e90535&lang=scss&scoped=true ***!
\***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".card-content[data-v-24e90535] {\\n margin-top: 20px;\\n padding: 20px;\\n}\\n.card-actions[data-v-24e90535] {\\n width: 100%;\\n display: grid;\\n grid-template-columns: 1fr 1fr;\\n gap: 10px;\\n}\\n.finish-icon[data-v-24e90535] {\\n cursor: pointer;\\n}\\n.finish-icon.disabled[data-v-24e90535] {\\n opacity: 0.5;\\n pointer-events: none;\\n}\\n.finish-icon.finished[data-v-24e90535] {\\n background: #06dece;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-24.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-24.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-24.use[3]!./src/plugins/app@vendor/vue-cal/scss/index.scss":
/*!**********************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-24.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-24.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-24.use[3]!./src/plugins/app@vendor/vue-cal/scss/index.scss ***!
\**********************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"* {\\n margin: 0;\\n padding: 0;\\n}\\n\\nhtml {\\n scroll-behavior: smooth;\\n}\\n\\n#app {\\n overflow-x: hidden;\\n}\\n\\n.w-app {\\n font: 15px \\\"Avenir\\\", Helvetica, Arial, sans-serif;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n background-color: #fff !important;\\n color: #2c3e50;\\n margin-top: 8em;\\n padding-top: 12em;\\n}\\n\\n.page-container {\\n width: 100%;\\n max-width: 1200px;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n\\na {\\n text-decoration: none;\\n color: #42b983;\\n}\\na[name] {\\n position: relative;\\n top: -4em;\\n display: block;\\n}\\n\\n.scrollable {\\n height: 250px;\\n overflow-y: scroll;\\n padding-right: 1.8em;\\n}\\n\\n.footer {\\n font-size: 0.9em;\\n font-style: italic;\\n margin: 3em 0 3.5em;\\n}\\n.footer .w-icon {\\n font-size: 1.2em;\\n}\\n.footer .w-icon.heart {\\n transition: 1s ease-out;\\n cursor: pointer;\\n}\\n.footer .w-icon.heart:hover {\\n animation: pulse 1.8s ease-out infinite;\\n}\\n\\n@keyframes pulse {\\n 0%, 20%, 30%, 35%, 45%, 100% {\\n transform: scale(1);\\n }\\n 25%, 40% {\\n transform: scale(1.3);\\n }\\n}\\n@media screen and (max-width: 1240px) {\\n :root {\\n --container-padding: 20px;\\n }\\n .page-container {\\n padding-left: var(--container-padding);\\n padding-right: var(--container-padding);\\n }\\n}\\n@media screen and (max-width: 524px) {\\n :root {\\n --container-padding: 12px;\\n }\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/scss/index.scss?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-24.use%5B1%5D!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-24.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-24.use%5B3%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-24.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-24.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-24.use[3]!./src/plugins/app@vendor/vue-cal/styles.scss":
/*!******************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-24.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-24.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-24.use[3]!./src/plugins/app@vendor/vue-cal/styles.scss ***!
\******************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vuecal {\\n height: 100%;\\n box-shadow: 0 0 0 1px inset rgba(0, 0, 0, 0.08);\\n}\\n.vuecal * {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n.vuecal--has-touch *:not(.vuecal__event-title--edit) {\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n.vuecal .clickable {\\n cursor: pointer;\\n}\\n.vuecal--resizing-event, .vuecal--drag-creating-event {\\n cursor: ns-resize;\\n}\\n.vuecal--dragging-event {\\n cursor: move;\\n cursor: grabbing;\\n}\\n.vuecal .dragging-helper {\\n position: absolute;\\n width: 60px;\\n height: 40px;\\n background: rgba(138, 190, 230, 0.8);\\n border: 1px solid #61a9e0;\\n z-index: 10;\\n}\\n.vuecal--xsmall {\\n font-size: 0.9em;\\n}\\n.vuecal__flex {\\n display: flex;\\n flex-direction: row;\\n}\\n.vuecal__flex[column] {\\n flex-direction: column;\\n flex: 1 1 auto;\\n}\\n.vuecal__flex[grow] {\\n flex: 1 1 auto;\\n width: 100%;\\n}\\n.vuecal__flex[wrap] {\\n flex-wrap: wrap;\\n}\\n.vuecal__split-days-headers.slide-fade--right-leave-active {\\n display: none;\\n}\\n.vuecal--week-numbers.vuecal--month-view .vuecal__split-days-headers {\\n margin-left: 3em;\\n}\\n.vuecal--day-view:not(.vuecal--overflow-x) .vuecal__split-days-headers {\\n margin-left: 3em;\\n height: 2.2em;\\n}\\n.vuecal--day-view.vuecal--twelve-hour:not(.vuecal--overflow-x) .vuecal__split-days-headers {\\n margin-left: 4em;\\n}\\n.vuecal__split-days-headers .day-split-header {\\n display: flex;\\n flex-grow: 1;\\n flex-basis: 0;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n}\\n.vuecal__split-days-headers .vuecal--day-view.vuecal--overflow-x.vuecal--sticky-split-labels .day-split-header {\\n height: 1.5em;\\n}\\n.vuecal__body {\\n position: relative;\\n overflow: hidden;\\n}\\n.vuecal__all-day {\\n min-height: 1.7em;\\n margin-bottom: -1px;\\n flex-shrink: 0;\\n}\\n.vuecal__all-day-text {\\n width: 3em;\\n box-sizing: border-box;\\n color: #999;\\n padding-right: 2px;\\n display: flex;\\n flex-shrink: 0;\\n align-items: center;\\n justify-content: flex-end;\\n border-bottom: 1px solid #ddd;\\n hyphens: auto;\\n}\\n.vuecal__all-day-text span {\\n font-size: 0.85em;\\n text-align: right;\\n line-height: 1.1;\\n}\\n.vuecal--twelve-hour .vuecal__all-day > span {\\n width: 4em;\\n}\\n.vuecal__bg {\\n overflow: auto;\\n overflow-x: hidden;\\n -webkit-overflow-scrolling: touch;\\n min-height: 60px;\\n position: relative;\\n width: 100%;\\n}\\n.vuecal--no-time .vuecal__bg {\\n display: flex;\\n flex: 1 1 auto;\\n overflow: auto;\\n}\\n.vuecal__week-numbers {\\n width: 3em;\\n flex-shrink: 0 !important;\\n}\\n.vuecal__week-numbers .vuecal__week-number-cell {\\n opacity: 0.4;\\n font-size: 0.9em;\\n align-items: center;\\n justify-items: center;\\n justify-content: center;\\n}\\n.vuecal__scrollbar-check {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n overflow: scroll;\\n visibility: hidden;\\n z-index: -1;\\n}\\n.vuecal__scrollbar-check div {\\n height: 120%;\\n}\\n.vuecal__time-column {\\n width: 3em;\\n height: 100%;\\n flex-shrink: 0;\\n}\\n.vuecal--twelve-hour .vuecal__time-column {\\n width: 4em;\\n font-size: 0.9em;\\n}\\n.vuecal--overflow-x.vuecal--week-view .vuecal__time-column {\\n margin-top: 4em;\\n box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.3);\\n}\\n.vuecal--overflow-x.vuecal--week-view.vuecal--sticky-split-labels .vuecal__time-column {\\n margin-top: 3.4em;\\n}\\n.vuecal--overflow-x.vuecal--day-view.vuecal--sticky-split-labels .vuecal__time-column {\\n margin-top: 1.5em;\\n}\\n.vuecal__time-column .vuecal__time-cell {\\n color: #999;\\n text-align: right;\\n font-size: 0.9em;\\n background: white;\\n}\\n.vuecal__time-column .vuecal__time-cell-line:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n border-top: 1px solid #F5F5F5;\\n z-index: -1;\\n}\\n.vuecal__time-column .vuecal__time-cell-line.hour:before {\\n border-top: 1px solid #e0e0e0;\\n}\\n.vuecal__cells {\\n margin: 0 1px 1px 0;\\n}\\n.vuecal--overflow-x.vuecal--day-view .vuecal__cells {\\n margin: 0;\\n}\\n.vuecal--events-on-month-view.vuecal--short-events .vuecal__cells {\\n width: 99.9%;\\n}\\n.vuecal--overflow-x.vuecal--day-view .vuecal__cells, .vuecal--overflow-x.vuecal--week-view .vuecal__cells {\\n flex-wrap: nowrap;\\n overflow: auto;\\n}\\n\\n.slide-fade--left-enter-active, .slide-fade--left-leave-active,\\n.slide-fade--right-enter-active, .slide-fade--right-leave-active {\\n transition: 0.25s ease-out;\\n}\\n\\n.slide-fade--left-enter-from,\\n.slide-fade--right-leave-to {\\n transform: translateX(-15px);\\n opacity: 0;\\n}\\n\\n.slide-fade--left-leave-to,\\n.slide-fade--right-enter-from {\\n transform: translateX(15px);\\n opacity: 0;\\n}\\n\\n.slide-fade--left-leave-active,\\n.slide-fade--right-leave-active {\\n position: absolute !important;\\n height: 100%;\\n}\\n\\n.vuecal__title-bar .slide-fade--left-leave-active,\\n.vuecal__title-bar .slide-fade--right-leave-active {\\n left: 0;\\n right: 0;\\n height: auto;\\n}\\n\\n.vuecal__heading .slide-fade--left-leave-active,\\n.vuecal__heading .slide-fade--right-leave-active {\\n display: flex;\\n align-items: center;\\n}\\n\\n.vuecal--green-theme .vuecal__menu, .vuecal--green-theme .vuecal__cell-events-count {\\n background-color: #42b983;\\n color: #fff;\\n}\\n.vuecal--green-theme .vuecal__title-bar {\\n background-color: #e4f5ef;\\n}\\n.vuecal--green-theme .vuecal__cell--today, .vuecal--green-theme .vuecal__cell--current {\\n background-color: rgba(240, 240, 255, 0.4);\\n}\\n.vuecal--green-theme:not(.vuecal--day-view) .vuecal__cell--selected {\\n background-color: rgba(235, 255, 245, 0.4);\\n}\\n.vuecal--green-theme .vuecal__cell--selected:before {\\n border-color: rgba(66, 185, 131, 0.5);\\n}\\n.vuecal--green-theme .vuecal__cell--highlighted:not(.vuecal__cell--has-splits),\\n.vuecal--green-theme .vuecal__cell-split--highlighted {\\n background-color: rgba(195, 255, 225, 0.5);\\n}\\n.vuecal--green-theme .vuecal__arrow--highlighted,\\n.vuecal--green-theme .vuecal__today-btn--highlighted,\\n.vuecal--green-theme .vuecal__view-btn--highlighted {\\n background-color: rgba(136, 236, 191, 0.25);\\n}\\n\\n.vuecal--blue-theme .vuecal__menu, .vuecal--blue-theme .vuecal__cell-events-count {\\n background-color: rgba(66, 163, 185, 0.8);\\n color: #fff;\\n}\\n.vuecal--blue-theme .vuecal__title-bar {\\n background-color: rgba(0, 165, 188, 0.3);\\n}\\n.vuecal--blue-theme .vuecal__cell--today, .vuecal--blue-theme .vuecal__cell--current {\\n background-color: rgba(240, 240, 255, 0.4);\\n}\\n.vuecal--blue-theme:not(.vuecal--day-view) .vuecal__cell--selected {\\n background-color: rgba(235, 253, 255, 0.4);\\n}\\n.vuecal--blue-theme .vuecal__cell--selected:before {\\n border-color: rgba(115, 191, 204, 0.5);\\n}\\n.vuecal--blue-theme .vuecal__cell--highlighted:not(.vuecal__cell--has-splits),\\n.vuecal--blue-theme .vuecal__cell-split--highlighted {\\n background-color: rgba(0, 165, 188, 0.06);\\n}\\n.vuecal--blue-theme .vuecal__arrow--highlighted,\\n.vuecal--blue-theme .vuecal__today-btn--highlighted,\\n.vuecal--blue-theme .vuecal__view-btn--highlighted {\\n background-color: rgba(66, 163, 185, 0.2);\\n}\\n\\n.vuecal--rounded-theme .vuecal__weekdays-headings {\\n border: none;\\n}\\n.vuecal--rounded-theme .vuecal__cell, .vuecal--rounded-theme .vuecal__cell:before {\\n background: none;\\n border: none;\\n}\\n.vuecal--rounded-theme .vuecal__cell--out-of-scope {\\n opacity: 0.4;\\n}\\n.vuecal--rounded-theme .vuecal__cell-content {\\n width: 30px;\\n height: 30px;\\n flex-grow: 0;\\n border: 1px solid transparent;\\n border-radius: 30px;\\n color: #333;\\n}\\n.vuecal--rounded-theme.vuecal--day-view .vuecal__cell-content {\\n width: auto;\\n background: none;\\n}\\n.vuecal--rounded-theme.vuecal--year-view .vuecal__cell {\\n width: 33.33%;\\n}\\n.vuecal--rounded-theme.vuecal--year-view .vuecal__cell-content {\\n width: 85px;\\n}\\n.vuecal--rounded-theme.vuecal--years-view .vuecal__cell-content {\\n width: 52px;\\n}\\n.vuecal--rounded-theme .vuecal__cell {\\n background-color: transparent !important;\\n}\\n.vuecal--rounded-theme.vuecal--green-theme:not(.vuecal--day-view) .vuecal__cell-content {\\n background-color: #f1faf7;\\n}\\n.vuecal--rounded-theme.vuecal--green-theme:not(.vuecal--day-view) .vuecal__cell--today .vuecal__cell-content {\\n background-color: #42b983;\\n color: #fff;\\n}\\n.vuecal--rounded-theme.vuecal--green-theme .vuecal--day-view .vuecal__cell--today:before {\\n background-color: rgba(66, 185, 131, 0.05);\\n}\\n.vuecal--rounded-theme.vuecal--green-theme:not(.vuecal--day-view) .vuecal__cell--selected .vuecal__cell-content {\\n border-color: #42b983;\\n}\\n.vuecal--rounded-theme.vuecal--green-theme .vuecal__cell--highlighted:not(.vuecal__cell--has-splits),\\n.vuecal--rounded-theme.vuecal--green-theme .vuecal__cell-split--highlighted {\\n background-color: rgba(195, 255, 225, 0.5);\\n}\\n.vuecal--rounded-theme.vuecal--blue-theme:not(.vuecal--day-view) .vuecal__cell-content {\\n background-color: rgba(100, 182, 255, 0.2);\\n}\\n.vuecal--rounded-theme.vuecal--blue-theme:not(.vuecal--day-view) .vuecal__cell--today .vuecal__cell-content {\\n background-color: #8fb7e4;\\n color: #fff;\\n}\\n.vuecal--rounded-theme.vuecal--blue-theme .vuecal--day-view .vuecal__cell--today:before {\\n background-color: rgba(143, 183, 228, 0.1);\\n}\\n.vuecal--rounded-theme.vuecal--blue-theme:not(.vuecal--day-view) .vuecal__cell--selected .vuecal__cell-content {\\n border-color: #61a9e0;\\n}\\n.vuecal--rounded-theme.vuecal--blue-theme .vuecal__cell--highlighted:not(.vuecal__cell--has-splits),\\n.vuecal--rounded-theme.vuecal--blue-theme .vuecal__cell-split--highlighted {\\n background-color: rgba(0, 165, 188, 0.06);\\n}\\n\\n.vuecal--date-picker .vuecal__title-bar {\\n font-size: 1.2em;\\n}\\n.vuecal--date-picker .vuecal__heading {\\n height: 2.2em;\\n font-weight: 500;\\n opacity: 0.4;\\n}\\n.vuecal--date-picker .vuecal__weekdays-headings {\\n border: none;\\n}\\n.vuecal--date-picker .vuecal__body {\\n margin-left: 1px;\\n}\\n.vuecal--date-picker .vuecal__cell, .vuecal--date-picker .vuecal__cell:before {\\n background: none;\\n border: none;\\n}\\n.vuecal--date-picker .vuecal__cell-content {\\n height: 26px;\\n flex-grow: 0;\\n border: 1px solid transparent;\\n border-radius: 25px;\\n transition: background-color 0.2s cubic-bezier(0.39, 0.58, 0.57, 1);\\n}\\n.vuecal--date-picker.vuecal--years-view .vuecal__cell-content {\\n flex: 0;\\n padding: 0 4px;\\n height: 24px;\\n}\\n.vuecal--date-picker.vuecal--year-view .vuecal__cell-content {\\n flex: 0;\\n padding: 0 15px;\\n}\\n.vuecal--date-picker.vuecal--month-view .vuecal__cell-content {\\n width: 26px;\\n}\\n.vuecal--date-picker:not(.vuecal--day-view) .vuecal__cell-content:hover {\\n background-color: rgba(0, 0, 0, 0.1);\\n}\\n.vuecal--date-picker:not(.vuecal--day-view) .vuecal__cell--selected .vuecal__cell-content {\\n background-color: #42b982;\\n color: #fff;\\n}\\n.vuecal--date-picker:not(.vuecal--day-view) .vuecal__cell--current .vuecal__cell-content, .vuecal--date-picker:not(.vuecal--day-view) .vuecal__cell--today .vuecal__cell-content {\\n border-color: #42b982;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/styles.scss?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-24.use%5B1%5D!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-24.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-24.use%5B3%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@_components/z-datepicker.vue?vue&type=style&index=0&id=50156138&scoped=true&lang=sass":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@_components/z-datepicker.vue?vue&type=style&index=0&id=50156138&scoped=true&lang=sass ***!
\*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".z-datepicker-wrapper[data-v-50156138] {\\n position: relative;\\n width: 100%;\\n cursor: pointer;\\n}\\n.z-datepicker-wrapper .z-datepicker-label[data-v-50156138] {\\n position: absolute;\\n left: 16px;\\n top: 50%;\\n transform: translateY(-50%);\\n font-size: 16px;\\n color: rgba(0, 0, 0, 0.38);\\n background: transparent;\\n padding: 0;\\n z-index: 1;\\n pointer-events: none;\\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\\n opacity: 0;\\n visibility: hidden;\\n}\\n.z-datepicker-wrapper.has-value .z-datepicker-label[data-v-50156138] {\\n opacity: 1;\\n visibility: visible;\\n top: 8px;\\n transform: translateY(0);\\n font-size: 12px;\\n background: white;\\n padding: 0 4px;\\n left: 13px;\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.z-datepicker-wrapper.has-value[data-v-50156138] .dp__input_icon {\\n top: 33px !important;\\n}\\n.z-datepicker-wrapper.has-value[data-v-50156138] .dp__input {\\n padding-top: 20px !important;\\n padding-bottom: 8px !important;\\n}\\n.z-datepicker-wrapper[data-v-50156138] .dp__input {\\n padding-top: 14px !important;\\n padding-bottom: 14px !important;\\n}\\n.z-datepicker-wrapper[data-v-50156138] .dp__input_wrap {\\n cursor: pointer;\\n}\\n.z-datepicker-wrapper[data-v-50156138] .dp__input {\\n cursor: pointer;\\n pointer-events: none !important;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n.z-datepicker-wrapper[data-v-50156138] .dp__clear_icon {\\n pointer-events: auto !important;\\n cursor: pointer !important;\\n top: 28px !important;\\n z-index: 10;\\n}\\n.z-datepicker-wrapper[data-v-50156138] .dp__input_icon {\\n top: 27px !important;\\n left: 3px !important;\\n pointer-events: none !important;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@_components/z-datepicker.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@_components/z-files-upload.vue?vue&type=style&index=0&id=14a621da&lang=sass&scoped=true":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@_components/z-files-upload.vue?vue&type=style&index=0&id=14a621da&lang=sass&scoped=true ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".upload-btn[data-v-14a621da] {\\n color: #6200EE;\\n border-radius: 4px;\\n border: 1px solid #E5E5E5;\\n}\\n.hidden-input[data-v-14a621da] {\\n opacity: 0;\\n overflow: hidden;\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n}\\n.gif-loader[data-v-14a621da] {\\n height: 30px;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@_components/z-files-upload.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-close-button.vue?vue&type=style&index=0&id=40d55afe&scoped=true&lang=sass":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-close-button.vue?vue&type=style&index=0&id=40d55afe&scoped=true&lang=sass ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".close-button[data-v-40d55afe] {\\n opacity: 0.7;\\n transition: opacity 0.2s ease;\\n}\\n.close-button[data-v-40d55afe]:hover {\\n opacity: 1;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/a-close-button.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-reset-size-button.vue?vue&type=style&index=0&id=8bf6ac8e&scoped=true&lang=sass":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-reset-size-button.vue?vue&type=style&index=0&id=8bf6ac8e&scoped=true&lang=sass ***!
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".reset-size-button[data-v-8bf6ac8e] {\\n margin-right: 8px;\\n opacity: 0.7;\\n transition: opacity 0.2s ease;\\n}\\n.reset-size-button[data-v-8bf6ac8e]:hover {\\n opacity: 1;\\n}\\n@media (max-width: 768px) {\\n.reset-size-button[data-v-8bf6ac8e] {\\n display: none !important;\\n}\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/a-reset-size-button.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-resize-handle.vue?vue&type=style&index=0&id=4b55841a&scoped=true&lang=sass":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/a-resize-handle.vue?vue&type=style&index=0&id=4b55841a&scoped=true&lang=sass ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".modal-resize-handle[data-v-4b55841a] {\\n position: absolute;\\n bottom: 0;\\n right: 0;\\n width: 32px;\\n height: 32px;\\n cursor: nwse-resize;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n z-index: 1000;\\n background: rgba(0, 0, 0, 0.05);\\n border-radius: 4px 0 0 0;\\n transition: background 0.2s ease;\\n}\\n.modal-resize-handle[data-v-4b55841a]:hover {\\n background: rgba(0, 0, 0, 0.1);\\n}\\n.modal-resize-handle .v-icon[data-v-4b55841a] {\\n opacity: 0.5;\\n transition: opacity 0.2s ease;\\n}\\n.modal-resize-handle:hover .v-icon[data-v-4b55841a] {\\n opacity: 0.8;\\n}\\n@media (max-width: 768px) {\\n.modal-resize-handle[data-v-4b55841a] {\\n display: none !important;\\n}\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/a-resize-handle.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-files.vue?vue&type=style&index=0&id=6f3ad93d&lang=sass&scoped=true":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/_components/read-only/z-files.vue?vue&type=style&index=0&id=6f3ad93d&lang=sass&scoped=true ***!
\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".gif-loader[data-v-6f3ad93d] {\\n height: 30px;\\n margin-left: 30px;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_components/read-only/z-files.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue?vue&type=style&index=0&id=5fad4e89&lang=sass&scoped=true":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue?vue&type=style&index=0&id=5fad4e89&lang=sass&scoped=true ***!
\************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"v-table[data-v-5fad4e89], tbody[data-v-5fad4e89] {\\n border-top: thin solid rgba(var(--v-border-color), var(--v-border-opacity));\\n border-bottom: thin solid rgba(var(--v-border-color), var(--v-border-opacity));\\n}\\ntd[data-v-5fad4e89]:not(:last-child) {\\n border-right: thin solid rgba(var(--v-border-color), var(--v-border-opacity));\\n}\\n.office-icon[data-v-5fad4e89] {\\n height: 20px;\\n margin-left: 12px;\\n}\\n.line-clamp[data-v-5fad4e89] {\\n display: -webkit-box;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-master-task-modal.vue?vue&type=style&index=0&id=327591c6&lang=sass&scoped=true":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/master-task/z-master-task-modal.vue?vue&type=style&index=0&id=327591c6&lang=sass&scoped=true ***!
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".date-wrap[data-v-327591c6] {\\n display: flex;\\n flex-flow: row;\\n width: 100%;\\n gap: 20px;\\n}\\n.date-wrap .dp__main[data-v-327591c6] {\\n width: calc(50% - 10px) !important;\\n}\\n.employee-select-avatar[data-v-327591c6] {\\n background: #6200EE;\\n color: #fff;\\n border-radius: 50%;\\n font-size: 11.5px;\\n height: 22px;\\n width: 22px;\\n position: absolute;\\n top: 50%;\\n right: 12px;\\n transform: translate(0, -50%);\\n}\\n.remove-input[data-v-327591c6] {\\n position: absolute;\\n top: 50%;\\n right: 0px;\\n transform: translate(-15px, -50%);\\n color: rgb(102, 102, 102) !important;\\n z-index: 10;\\n cursor: pointer;\\n}\\n.scrolling[data-v-327591c6] {\\n overflow: hidden !important;\\n}\\n.border-bottom[data-v-327591c6] {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\\n}\\n.subtask-btn[data-v-327591c6] {\\n border: thin solid rgba(var(--v-border-color), var(--v-border-opacity)) !important;\\n color: #7f39fb !important;\\n height: 53px;\\n text-align: center;\\n}\\n[data-v-327591c6] .v-field__clearable {\\n opacity: 1 !important;\\n}\\n.datepicker-wrapper[data-v-327591c6] {\\n width: 100%;\\n}\\n.datepicker-wrapper .datepicker-input[data-v-327591c6] {\\n width: 100% !important;\\n height: 100%;\\n pointer-events: none;\\n}\\n.quill-editor-wrapper[data-v-327591c6] .ql-container {\\n min-height: 200px;\\n max-height: 500px;\\n overflow-y: auto;\\n}\\n.quill-editor-wrapper[data-v-327591c6] .ql-editor {\\n min-height: 200px;\\n max-height: 500px;\\n}\\n@media (max-width: 768px) {\\n[data-v-327591c6] .v-overlay__content {\\n max-height: 100% !important;\\n width: 100% !important;\\n max-width: 100% !important;\\n margin: 0 !important;\\n}\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?vue&type=style&index=0&id=f40d208a&lang=sass&scoped=true":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?vue&type=style&index=0&id=f40d208a&lang=sass&scoped=true ***!
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".width-100[data-v-f40d208a] {\\n width: 100%;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?vue&type=style&index=0&id=27fac1fc&lang=sass":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?vue&type=style&index=0&id=27fac1fc&lang=sass ***!
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".completed {\\n background: #06dece;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-select.vue?vue&type=style&index=0&id=69af6032&lang=sass&scoped=true":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-select.vue?vue&type=style&index=0&id=69af6032&lang=sass&scoped=true ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".employee-select[data-v-69af6032] {\\n display: flex;\\n justify-content: space-between;\\n align-items: start;\\n gap: 10px;\\n}\\n@media (max-width: 768px) {\\n.employee-select[data-v-69af6032] {\\n flex-direction: column;\\n gap: 5px;\\n}\\n}\\n.employee-select__duration-container[data-v-69af6032] {\\n display: flex;\\n justify-content: space-between;\\n align-items: start;\\n gap: 10px;\\n}\\n.employee-select__select-field[data-v-69af6032] {\\n width: 100%;\\n}\\n.employee-select__duration-field[data-v-69af6032] {\\n width: 230px;\\n}\\n.employee-select__delete-button[data-v-69af6032] {\\n background: #ff5252;\\n color: white;\\n border: none;\\n border-radius: 4px;\\n width: 56px;\\n height: 56px;\\n font-size: 16px;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n transition: all 0.2s;\\n line-height: 1;\\n flex-shrink: 0;\\n}\\n.employee-select__delete-button[data-v-69af6032]:disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n.employee-select__delete-button[data-v-69af6032]:hover {\\n background: #ff1744;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/employees/a-employee-select.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-header.vue?vue&type=style&index=0&id=bd01f460&lang=sass&scoped=true":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-header.vue?vue&type=style&index=0&id=bd01f460&lang=sass&scoped=true ***!
\*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".timeblock__header[data-v-bd01f460] {\\n display: flex;\\n align-items: center;\\n gap: 15px;\\n flex-wrap: wrap;\\n border-bottom: 1px solid #e5e5e5;\\n padding: 8px 16px;\\n}\\n@media (max-width: 768px) {\\n.timeblock__header[data-v-bd01f460] {\\n flex-direction: column;\\n align-items: stretch;\\n}\\n}\\n.timeblock__date[data-v-bd01f460] {\\n display: flex;\\n align-items: center;\\n flex: 1;\\n max-width: 220px;\\n}\\n.timeblock__date-button[data-v-bd01f460] {\\n background: #f5f5f5;\\n border: 1px solid #e0e0e0;\\n border-radius: 4px;\\n width: 44px;\\n height: 44px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n cursor: pointer;\\n transition: all 0.2s;\\n}\\n.timeblock__date-button[data-v-bd01f460]:hover:not(:disabled) {\\n background: #e0e0e0;\\n}\\n.timeblock__date-button[data-v-bd01f460]:active:not(:disabled) {\\n background: #d0d0d0;\\n}\\n.timeblock__date-button[data-v-bd01f460]:disabled {\\n opacity: 0.4;\\n cursor: not-allowed;\\n}\\n.timeblock__date-button[data-v-bd01f460]:first-child {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n border-right: none;\\n}\\n.timeblock__date-button[data-v-bd01f460]:last-child {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n border-left: none;\\n}\\n.timeblock__date-picker[data-v-bd01f460] {\\n flex: 1;\\n border-radius: 0;\\n}\\n.timeblock__date-picker[data-v-bd01f460] .dp__input {\\n border-radius: 0;\\n height: 44px;\\n}\\n.timeblock__date-picker[data-v-bd01f460] .dp__clear_icon {\\n display: none;\\n}\\n.timeblock__date-picker.has-value[data-v-bd01f460] .dp__input {\\n padding-top: 13px !important;\\n padding-bottom: 11px !important;\\n}\\n.timeblock__date-picker.has-value[data-v-bd01f460] .dp__icon {\\n top: 23px !important;\\n}\\n.timeblock__date-picker--disabled[data-v-bd01f460] {\\n opacity: 0.5;\\n cursor: not-allowed !important;\\n}\\n.timeblock__date-picker--disabled[data-v-bd01f460] .dp__input_wrap {\\n cursor: not-allowed !important;\\n}\\n.timeblock__date-picker--disabled[data-v-bd01f460] .dp__input {\\n cursor: not-allowed !important;\\n}\\n.timeblock__controls[data-v-bd01f460] {\\n display: flex;\\n gap: 10px;\\n flex: 1;\\n}\\n@media (max-width: 768px) {\\n.timeblock__controls[data-v-bd01f460] {\\n width: 100%;\\n}\\n}\\n.timeblock__controls[data-v-bd01f460] .v-input {\\n width: 140px !important;\\n flex-grow: 0;\\n}\\n.timeblock__time-overview[data-v-bd01f460] {\\n height: 44px;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n}\\n.timeblock__time-overview p[data-v-bd01f460] {\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.timeblock__time-overview p span[data-v-bd01f460] {\\n font-weight: 500;\\n color: #7f39fb;\\n}\\n.error-input[data-v-bd01f460] input {\\n border-bottom: 2px solid #ff5252 !important;\\n}\\n.validation-error[data-v-bd01f460] {\\n color: #ff5252;\\n font-size: 12px;\\n margin-top: 5px;\\n padding-left: 10px;\\n}\\n.actions[data-v-bd01f460] {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n}\\n.actions .add-btn[data-v-bd01f460] {\\n background: #7f39fb;\\n color: white;\\n border: none;\\n border-radius: 4px;\\n width: 44px;\\n height: 44px;\\n font-size: 28px;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n transition: all 0.2s;\\n line-height: 1;\\n}\\n.actions .add-btn[data-v-bd01f460]:hover {\\n background: #6825e0;\\n}\\n.actions .delete-btn[data-v-bd01f460] {\\n background: #ff5252;\\n color: white;\\n border: none;\\n border-radius: 4px;\\n width: 44px;\\n height: 44px;\\n font-size: 28px;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n transition: all 0.2s;\\n line-height: 1;\\n}\\n.actions .delete-btn[data-v-bd01f460]:disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n.actions .delete-btn[data-v-bd01f460]:hover {\\n background: #ff1744;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-header.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-timeline-header.vue?vue&type=style&index=0&id=828c0634&lang=sass&scoped=true":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-timeline-header.vue?vue&type=style&index=0&id=828c0634&lang=sass&scoped=true ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".timeline-hours[data-v-828c0634] {\\n position: relative;\\n height: 30px;\\n width: 1440px;\\n}\\n@media (max-width: 768px) {\\n.timeline-hours[data-v-828c0634] {\\n width: 1200px;\\n}\\n}\\n.hour-marker[data-v-828c0634] {\\n position: absolute;\\n top: 0;\\n height: 30px;\\n border-left: 1px solid #e0e0e0;\\n}\\n.hour-marker .hour-label[data-v-828c0634] {\\n position: absolute;\\n top: 7px;\\n left: 5px;\\n font-size: 11px;\\n color: #666;\\n white-space: nowrap;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-timeline-header.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-timeline.vue?vue&type=style&index=0&id=5ca7dec4&lang=sass&scoped=true":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-timeline.vue?vue&type=style&index=0&id=5ca7dec4&lang=sass&scoped=true ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".timeline[data-v-5ca7dec4] {\\n height: 98px;\\n}\\n.timeline__content[data-v-5ca7dec4] {\\n position: relative;\\n width: 100%;\\n margin-bottom: 10px;\\n}\\n.timeline-loading[data-v-5ca7dec4] {\\n height: 100%;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n color: #666;\\n}\\n.timeline-scroll[data-v-5ca7dec4] {\\n overflow-x: auto;\\n overflow-y: hidden;\\n position: relative;\\n width: 100%;\\n scrollbar-width: none;\\n}\\n.timeline-scroll[data-v-5ca7dec4]::-webkit-scrollbar {\\n display: none;\\n}\\n.timeline-bar[data-v-5ca7dec4] {\\n position: relative;\\n height: 60px;\\n width: 1440px;\\n background: #fafafa;\\n border: 1px solid #e0e0e0;\\n border-radius: 4px;\\n}\\n@media (max-width: 768px) {\\n.timeline-bar[data-v-5ca7dec4] {\\n width: 1200px;\\n}\\n}\\n.non-working-hours[data-v-5ca7dec4] {\\n position: absolute;\\n top: 0;\\n height: 100%;\\n background: repeating-linear-gradient(45deg, transparent, transparent 10px, rgba(224, 224, 224, 0.3) 10px, rgba(224, 224, 224, 0.3) 20px);\\n z-index: 1;\\n}\\n.work-hours-bar[data-v-5ca7dec4] {\\n position: absolute;\\n top: 0;\\n height: 100%;\\n background: transparent;\\n z-index: 1;\\n}\\n.scheduled-block[data-v-5ca7dec4] {\\n position: absolute;\\n top: 5px;\\n height: 50px;\\n background: #7f39fb;\\n border: 1px solid #6a1bf7;\\n opacity: 0.6;\\n border-radius: 2px;\\n z-index: 2;\\n}\\n.unsaved-timeblock[data-v-5ca7dec4] {\\n position: absolute;\\n top: 5px;\\n height: 50px;\\n background: #FFA726;\\n opacity: 0.5;\\n border: 2px dashed #FF9800;\\n border-radius: 2px;\\n z-index: 2;\\n}\\n.current-timeblock[data-v-5ca7dec4] {\\n position: absolute;\\n top: 5px;\\n height: 50px;\\n background: #2196F3;\\n opacity: 0.7;\\n border: 2px solid #1976D2;\\n border-radius: 2px;\\n z-index: 3;\\n}\\n.current-timeblock.has-collision[data-v-5ca7dec4] {\\n border-color: #ff5252;\\n}\\n.collision-segment[data-v-5ca7dec4] {\\n position: absolute;\\n top: 5px;\\n height: 50px;\\n background: #ff5252;\\n opacity: 0.6;\\n border-radius: 2px;\\n z-index: 4;\\n}\\n.timeblock-duration[data-v-5ca7dec4] {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n font-size: 14px;\\n font-weight: bold;\\n color: white;\\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n pointer-events: none;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-timeline.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock.vue?vue&type=style&index=0&id=681eadcc&lang=sass&scoped=true":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock.vue?vue&type=style&index=0&id=681eadcc&lang=sass&scoped=true ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".timeblock[data-v-681eadcc] {\\n width: 100%;\\n border: 1px solid #e5e5e5;\\n border-radius: 8px;\\n margin-bottom: 8px;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee.vue?vue&type=style&index=0&id=1030fd07&lang=sass&scoped=true":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/_components/employees/a-employee.vue?vue&type=style&index=0&id=1030fd07&lang=sass&scoped=true ***!
\************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".employee[data-v-1030fd07] {\\n width: 100%;\\n margin-bottom: 16px;\\n}\\n.employee--has-background[data-v-1030fd07] {\\n border: 1px solid #e5e5e5;\\n padding: 16px;\\n border-radius: 8px;\\n}\\n.employee__timeblocks[data-v-1030fd07] {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/employees/a-employee.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-delete-timeblock-modal.vue?vue&type=style&index=0&id=41ce431a&lang=sass&scoped=true":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-delete-timeblock-modal.vue?vue&type=style&index=0&id=41ce431a&lang=sass&scoped=true ***!
\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".close-icon[data-v-41ce431a]:hover {\\n background: red;\\n color: #fff !important;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-delete-timeblock-modal.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-task-modal.vue?vue&type=style&index=0&id=1c35a9a1&lang=sass&scoped=true":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/tm@modal/task/z-task-modal.vue?vue&type=style&index=0&id=1c35a9a1&lang=sass&scoped=true ***!
\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".w-full[data-v-1c35a9a1] {\\n width: 100%;\\n}\\n.date-wrap[data-v-1c35a9a1] {\\n display: flex;\\n flex-flow: row;\\n width: 100%;\\n gap: 20px;\\n margin-bottom: 20px;\\n}\\n.date-wrap .dp__main[data-v-1c35a9a1] {\\n width: calc(50% - 10px) !important;\\n}\\n.scrolling[data-v-1c35a9a1] {\\n overflow: hidden !important;\\n}\\n.border-bottom[data-v-1c35a9a1] {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\\n}\\n.splitted-inputs[data-v-1c35a9a1] {\\n display: flex;\\n justify-content: space-between;\\n gap: 16px;\\n}\\n.splitted-inputs .left[data-v-1c35a9a1] {\\n flex: 1;\\n}\\n.splitted-inputs .right[data-v-1c35a9a1] .v-field__field {\\n height: 56px !important;\\n}\\n.done-btn[data-v-1c35a9a1] {\\n background: #7f39fb !important;\\n border-radius: 4px !important;\\n color: #fff !important;\\n height: 50px;\\n width: 203px;\\n}\\n@media screen and (max-width: 522px) {\\n.files[data-v-1c35a9a1] {\\n margin-top: 104px !important;\\n}\\n}\\n.quill-editor-wrapper[data-v-1c35a9a1] .ql-container {\\n min-height: 200px;\\n max-height: 500px;\\n overflow-y: auto;\\n}\\n.quill-editor-wrapper[data-v-1c35a9a1] .ql-editor {\\n min-height: 200px;\\n max-height: 500px;\\n}\\n@media (max-width: 768px) {\\n[data-v-1c35a9a1] .v-overlay__content {\\n max-height: 100% !important;\\n width: 100% !important;\\n max-width: 100% !important;\\n margin: 0 !important;\\n}\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/w/loadable/_components/w-loadable.vue?vue&type=style&index=0&id=0f8fb54f&lang=sass&scoped=true":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/w/loadable/_components/w-loadable.vue?vue&type=style&index=0&id=0f8fb54f&lang=sass&scoped=true ***!
\***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/w/loadable/_components/w-loadable.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D\n}");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-29.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-29.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-29.use[3]!./src/plugins/app/_theme/index.sass":
/*!*********************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-29.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-29.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-29.use[3]!./src/plugins/app/_theme/index.sass ***!
\*********************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* 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\");\n/* 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__);\n/* 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\");\n/* 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__);\n// Imports\n\n\nvar ___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()));\n___CSS_LOADER_EXPORT___.push([module.id, \"@import url(https://fonts.googleapis.com/css2?family=Roboto:wght@100&display=swap);\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-dialog h1 {\\n font-size: 26px;\\n font-weight: 500;\\n}\\n\\n.dp__input {\\n height: 56px;\\n border: 1px solid #E5E5E5 !important;\\n}\\n\\n.dp__range_end, .dp__range_start, .dp__active_date {\\n background: #7F39FB !important;\\n}\\n\\n.dp__select {\\n color: #7F39FB !important;\\n}\\n\\n.dp__today {\\n border: 1px solid #7F39FB !important;\\n}\\n\\n.dp__range_between {\\n background: #F4E8FF !important;\\n}\\n\\n.dp__action {\\n font-weight: 500 !important;\\n}\\n\\n.task-action .trash-icon {\\n padding: 10px;\\n background: rgba(0, 0, 0, 0.04);\\n margin-left: 12px;\\n border-radius: 50%;\\n cursor: pointer;\\n max-height: 32px;\\n max-width: 32px;\\n}\\n.task-action .pencil-icon {\\n padding: 10px;\\n background: rgba(0, 0, 0, 0.04);\\n border-radius: 50%;\\n cursor: pointer;\\n max-height: 32px;\\n max-width: 32px;\\n}\\n\\n.status-badge {\\n background: #F2E7FE;\\n color: #7F39FB;\\n width: -moz-fit-content;\\n width: fit-content;\\n}\\n\\n.hover {\\n cursor: pointer !important;\\n}\\n\\n.task-badge {\\n background: rgba(0, 0, 0, 0.04);\\n width: -moz-fit-content;\\n width: fit-content;\\n padding: 5px 20px;\\n min-width: 50px;\\n}\\n\\n.employee-selected-avatar {\\n background: #6200EE;\\n color: #fff;\\n border-radius: 50%;\\n padding: 13px;\\n font-size: 11.5px;\\n height: 24px;\\n width: 24px;\\n}\\n\\n.circle-border {\\n border: 1px solid rgba(0, 0, 0, 0.2);\\n border-radius: 50%;\\n padding: 13px;\\n height: 24px;\\n width: 24px;\\n}\\n\\n.is-finished {\\n background: #06dece !important;\\n}\\n\\n.strike-through {\\n text-decoration: line-through;\\n}\\n\\n.add-date {\\n color: white;\\n border-radius: 50%;\\n background: #6200EE;\\n padding: 13px;\\n height: 24px;\\n width: 24px;\\n}\\n\\nth {\\n font-size: 16px !important;\\n}\\n\\n.task-action {\\n width: 50%;\\n}\\n\\n.v-card {\\n padding: 35px !important;\\n}\\n@media (max-width: 768px) {\\n .v-card {\\n padding: 16px !important;\\n }\\n}\\n\\n.cursor-pointer:hover {\\n cursor: pointer;\\n}\\n\\n.hover-background:hover {\\n background-color: rgba(0, 0, 0, var(--v-hover-opacity));\\n}\\n\\n.v-input__control {\\n border-radius: 4px;\\n}\\n\\n.border-select .v-input__control {\\n border: 1px solid #E5E5E5 !important;\\n}\\n\\ninput[type=time]::-webkit-calendar-picker-indicator {\\n display: none;\\n border: 1px solid #E5E5E5 !important;\\n}\\n\\n.rich-text-editor .ql-tooltip {\\n left: 0 !important;\\n}\\n\\n.v-toast,\\n.v-toast__item {\\n z-index: 10000 !important;\\n}\\n\\n.vld-overlay .vld-background {\\n opacity: 1;\\n}\\n\\n.v-row.subheader .v-input {\\n height: 40px !important;\\n}\\n\\n.server-links {\\n background: rgb(127, 57, 251);\\n padding: 4px 5px;\\n}\\n.server-links a {\\n color: #fff;\\n}\\n\\n@media (max-width: 534px) {\\n .mobile-view {\\n flex-direction: column;\\n gap: 20px;\\n }\\n}\\n.description-detail {\\n background: rgba(0, 0, 0, 0.04);\\n color: rgba(0, 0, 0, 0.6);\\n height: -moz-fit-content;\\n height: fit-content;\\n}\\n.description-detail li {\\n margin-left: 15px;\\n}\\n.description-detail li.ql-indent-1 {\\n margin-left: 30px;\\n}\\n.description-detail li.ql-indent-2 {\\n margin-left: 45px;\\n}\\n.description-detail li.ql-indent-3 {\\n margin-left: 60px;\\n}\\n.description-detail li.ql-indent-4 {\\n margin-left: 75px;\\n}\\n.description-detail li.ql-indent-5 {\\n margin-left: 90px;\\n}\\n.description-detail li.ql-indent-6 {\\n margin-left: 105px;\\n}\\n.description-detail li.ql-indent-7 {\\n margin-left: 120px;\\n}\\n.description-detail li.ql-indent-8 {\\n margin-left: 135px;\\n}\\n.description-detail li.ql-indent-9 {\\n margin-left: 150px;\\n}\\n\\n.v-autocomplete__content {\\n max-height: 46vh !important;\\n}\\n\\n.auth-card {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n border: 1px solid rgba(0, 0, 0, 0.1);\\n border-radius: 16px;\\n padding: 30px;\\n width: 100%;\\n max-width: 486px;\\n margin: auto;\\n}\\n.auth-card img {\\n position: absolute;\\n right: 60px;\\n bottom: 188px;\\n cursor: pointer;\\n}\\n.auth-card .button {\\n color: white !important;\\n}\\n.auth-card .v-field {\\n border-bottom: 1px solid rgba(0, 0, 0, 0);\\n}\\n\\n@media screen and (max-width: 904px) {\\n .auth-card {\\n position: relative;\\n padding: 0;\\n border: none;\\n top: 0;\\n left: 0;\\n transform: translate(0, 0);\\n }\\n .auth-card h1 {\\n font-size: 19px;\\n }\\n .auth-card p {\\n font-size: 15px;\\n }\\n .auth-card .v-icon {\\n position: absolute !important;\\n right: 15px;\\n }\\n}\\n.v-field--variant-solo {\\n box-shadow: none !important;\\n border: 1px solid rgba(0, 0, 0, 0.1) !important;\\n}\\n\\n.v-input__append {\\n margin: 0 !important;\\n}\\n.v-input__append .v-icon {\\n position: absolute !important;\\n right: 45px;\\n}\\n\\ninput::-webkit-outer-spin-button,\\ninput::-webkit-inner-spin-button {\\n -webkit-appearance: none;\\n}\\n\\n.error-message {\\n position: absolute;\\n top: 50%;\\n left: 30px;\\n color: red;\\n opacity: 0.8;\\n}\\n\\n.v-select .v-field--variant-solo {\\n border: none !important;\\n}\\n\\n.rich-text-editor {\\n border: 1px solid rgba(0, 0, 0, 0.1);\\n}\\n\\n.error .dp__input,\\n.v-input.error .v-input__control {\\n border: 1px solid red !important;\\n}\\n\\n.error .ql-toolbar.ql-snow,\\n.error .ql-container.ql-snow {\\n border-color: red !important;\\n}\\n\\n.v-messages__message {\\n color: red !important;\\n}\\n\\n:root {\\n --color-primary: #7F39FB;\\n --color-primary-contrast: #ffffff;\\n --color-primary-shade: #5716c6;\\n}\\n\\n.button {\\n height: 50px !important;\\n min-width: 203px;\\n border-radius: 4px !important;\\n border-width: 1px;\\n}\\n.button.half {\\n width: 50%;\\n}\\n.button.block {\\n width: 100%;\\n}\\n.button.primary {\\n background-color: var(--color-primary);\\n border-color: var(--color-primary);\\n color: var(--color-primary-contrast);\\n}\\n.button.primary:hover, .button.primary:active {\\n background-color: var(--color-primary-shade);\\n border-color: var(--color-primary-shade);\\n color: var(--color-primary-contrast);\\n}\\n.button.primary.outline {\\n background-color: var(--color-primary-contrast);\\n border-color: var(--color-primary);\\n color: var(--color-primary);\\n}\\n.button.primary.outline:hover, .button.primary.outline:active {\\n background-color: var(--color-primary-shade);\\n border-color: var(--color-primary-shade);\\n color: var(--color-primary-contrast);\\n}\\n\\n.button.cancel {\\n height: 50px;\\n width: 100%;\\n border: thin solid rgba(var(--v-border-color), var(--v-border-opacity)) !important;\\n color: #7f39fb !important;\\n}\\n\\n.modal-header {\\n flex: 0 0 auto;\\n}\\n.modal-header .icon {\\n padding: 10px;\\n background: rgba(0, 0, 0, 0.04);\\n border-radius: 50%;\\n}\\n.modal-header .icon:hover {\\n cursor: pointer;\\n}\\n.modal-header .icon.trash {\\n margin-left: 12px;\\n}\\n\\n.modal-input {\\n width: 100% !important;\\n flex: 0 0 auto;\\n}\\n\\n.modal-content {\\n flex: 1 1 100%;\\n margin: 10px 0;\\n overflow-y: scroll;\\n}\\n\\n.remove-input {\\n pointer-events: auto;\\n opacity: 2;\\n position: absolute;\\n left: 92%;\\n top: 25%;\\n}\\n\\n.relative {\\n position: relative !important;\\n}\\n\\n.splitted-inputs {\\n width: 100%;\\n display: flex;\\n justify-content: space-between;\\n}\\n.splitted-inputs .left {\\n width: calc(75% - 15px) !important;\\n}\\n.splitted-inputs .right {\\n width: calc(25% - 15px) !important;\\n}\\n\\n* {\\n font-family: \\\"Roboto\\\", sans-serif;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/app/_theme/index.sass?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-29.use%5B1%5D!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-29.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-29.use%5B3%5D\n}");
/***/ }),
/***/ "./node_modules/moment/locale sync recursive ^\\.\\/.*$":
/*!***************************************************!*\
!*** ./node_modules/moment/locale/ sync ^\.\/.*$ ***!
\***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval("{var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";\n\n//# sourceURL=webpack://jandl/./node_modules/moment/locale/_sync_^\\.\\/.*$?\n}");
/***/ }),
/***/ "./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/cell.vue?vue&type=style&index=0&id=1dabbf0c&lang=scss":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/plugins/app@vendor/vue-cal/cell.vue?vue&type=style&index=0&id=1dabbf0c&lang=scss ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval("{// style-loader: Adds some css to the DOM by adding a