Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dist/dav-settings-personal-availability.js.map')
-rw-r--r--dist/dav-settings-personal-availability.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/dist/dav-settings-personal-availability.js.map b/dist/dav-settings-personal-availability.js.map
index 1cbdfcc6aa7..8f7ae814238 100644
--- a/dist/dav-settings-personal-availability.js.map
+++ b/dist/dav-settings-personal-availability.js.map
@@ -1 +1 @@
-{"version":3,"file":"dav-settings-personal-availability.js?v=2d1a8d450f8bba0eba3c","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dav/src/dav/client.js","webpack:///nextcloud/apps/dav/src/service/logger.js","webpack:///nextcloud/apps/dav/src/service/CalendarService.js","webpack:///nextcloud/apps/dav/src/views/Availability.vue","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dav/src/views/Availability.vue?214e","webpack://nextcloud/./apps/dav/src/views/Availability.vue?aa5a","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=template&id=2534cdc4&scoped=true&","webpack:///nextcloud/apps/dav/src/settings-personal-availability.js","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=style&index=0&id=2534cdc4&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/*\n * @copyright 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport * as webdav from 'webdav'\nimport axios from '@nextcloud/axios'\nimport memoize from 'lodash/fp/memoize'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport const getClient = memoize((service) => {\n\t// Add this so the server knows it is an request from the browser\n\taxios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'\n\n\t// force our axios\n\tconst patcher = webdav.getPatcher()\n\tpatcher.patch('request', axios)\n\n\treturn webdav.createClient(\n\t\tgenerateRemoteUrl(`dav/${service}/${getCurrentUser().uid}`)\n\t)\n})\n","/*\n * @copyright 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst logger = getLoggerBuilder()\n\t.setApp('dav')\n\t.detectUser()\n\t.build()\n\nexport default logger\n","/**\n * @copyright 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { getClient } from '../dav/client'\nimport ICAL from 'ical.js'\nimport logger from './logger'\nimport { parseXML } from 'webdav/dist/node/tools/dav'\nimport { getZoneString } from 'icalzone'\nimport { v4 as uuidv4 } from 'uuid'\n\n/**\n *\n */\nexport function getEmptySlots() {\n\treturn {\n\t\tMO: [],\n\t\tTU: [],\n\t\tWE: [],\n\t\tTH: [],\n\t\tFR: [],\n\t\tSA: [],\n\t\tSU: [],\n\t}\n}\n\n/**\n *\n */\nexport async function findScheduleInboxAvailability() {\n\tconst client = getClient('calendars')\n\n\tconst response = await client.customRequest('inbox', {\n\t\tmethod: 'PROPFIND',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<x0:propfind xmlns:x0=\"DAV:\">\n\t\t\t <x0:prop>\n\t\t\t\t<x1:calendar-availability xmlns:x1=\"urn:ietf:params:xml:ns:caldav\"/>\n\t\t\t </x0:prop>\n\t\t\t</x0:propfind>`,\n\t})\n\n\tconst xml = await parseXML(response.data)\n\n\tif (!xml) {\n\t\treturn undefined\n\t}\n\n\tconst availability = xml?.multistatus?.response[0]?.propstat?.prop['calendar-availability']\n\tif (!availability) {\n\t\treturn undefined\n\t}\n\n\tconst parsedIcal = ICAL.parse(availability)\n\n\tconst vcalendarComp = new ICAL.Component(parsedIcal)\n\tconst vavailabilityComp = vcalendarComp.getFirstSubcomponent('vavailability')\n\n\tlet timezoneId\n\tconst timezoneComp = vcalendarComp.getFirstSubcomponent('vtimezone')\n\tif (timezoneComp) {\n\t\ttimezoneId = timezoneComp.getFirstProperty('tzid').getFirstValue()\n\t}\n\n\tconst availableComps = vavailabilityComp.getAllSubcomponents('available')\n\t// Combine all AVAILABLE blocks into a week of slots\n\tconst slots = getEmptySlots()\n\tavailableComps.forEach((availableComp) => {\n\t\tconst start = availableComp.getFirstProperty('dtstart').getFirstValue().toJSDate()\n\t\tconst end = availableComp.getFirstProperty('dtend').getFirstValue().toJSDate()\n\t\tconst rrule = availableComp.getFirstProperty('rrule')\n\n\t\tif (rrule.getFirstValue().freq !== 'WEEKLY') {\n\t\t\tlogger.warn('rrule not supported', {\n\t\t\t\trrule: rrule.toICALString(),\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\trrule.getFirstValue().getComponent('BYDAY').forEach(day => {\n\t\t\tslots[day].push({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t})\n\t\t})\n\t})\n\n\treturn {\n\t\tslots,\n\t\ttimezoneId,\n\t}\n}\n\n/**\n * @param {any} slots -\n * @param {any} timezoneId -\n */\nexport async function saveScheduleInboxAvailability(slots, timezoneId) {\n\tconst all = [...Object.keys(slots).flatMap(dayId => slots[dayId].map(slot => ({\n\t\t...slot,\n\t\tday: dayId,\n\t})))]\n\n\tconst vcalendarComp = new ICAL.Component('vcalendar')\n\tvcalendarComp.addPropertyWithValue('prodid', 'Nextcloud DAV app')\n\n\t// Store time zone info\n\t// If possible we use the info from a time zone database\n\tconst predefinedTimezoneIcal = getZoneString(timezoneId)\n\tif (predefinedTimezoneIcal) {\n\t\tconst timezoneComp = new ICAL.Component(ICAL.parse(predefinedTimezoneIcal))\n\t\tvcalendarComp.addSubcomponent(timezoneComp)\n\t} else {\n\t\t// Fall back to a simple markup\n\t\tconst timezoneComp = new ICAL.Component('vtimezone')\n\t\ttimezoneComp.addPropertyWithValue('tzid', timezoneId)\n\t\tvcalendarComp.addSubcomponent(timezoneComp)\n\t}\n\n\t// Store availability info\n\tconst vavailabilityComp = new ICAL.Component('vavailability')\n\n\t// Deduplicate by start and end time\n\tconst deduplicated = all.reduce((acc, slot) => {\n\t\tconst key = [\n\t\t\tslot.start.getHours(),\n\t\t\tslot.start.getMinutes(),\n\t\t\tslot.end.getHours(),\n\t\t\tslot.end.getMinutes(),\n\t\t].join('-')\n\n\t\treturn {\n\t\t\t...acc,\n\t\t\t[key]: [...(acc[key] ?? []), slot],\n\t\t}\n\t}, {})\n\n\t// Create an AVAILABILITY component for every recurring slot\n\tObject.keys(deduplicated).map(key => {\n\t\tconst slots = deduplicated[key]\n\t\tconst start = slots[0].start\n\t\tconst end = slots[0].end\n\t\t// Combine days but make them also unique\n\t\tconst days = slots.map(slot => slot.day).filter((day, index, self) => self.indexOf(day) === index)\n\n\t\tconst availableComp = new ICAL.Component('available')\n\n\t\t// Define DTSTART and DTEND\n\t\tconst startTimeProp = availableComp.addPropertyWithValue('dtstart', ICAL.Time.fromJSDate(start, false))\n\t\tstartTimeProp.setParameter('tzid', timezoneId)\n\t\tconst endTimeProp = availableComp.addPropertyWithValue('dtend', ICAL.Time.fromJSDate(end, false))\n\t\tendTimeProp.setParameter('tzid', timezoneId)\n\n\t\t// Add mandatory UID\n\t\tavailableComp.addPropertyWithValue('uid', uuidv4())\n\n\t\t// TODO: add optional summary\n\n\t\t// Define RRULE\n\t\tavailableComp.addPropertyWithValue('rrule', {\n\t\t\tfreq: 'WEEKLY',\n\t\t\tbyday: days,\n\t\t})\n\n\t\treturn availableComp\n\t}).map(vavailabilityComp.addSubcomponent.bind(vavailabilityComp))\n\n\tvcalendarComp.addSubcomponent(vavailabilityComp)\n\tlogger.debug('New availability ical created', {\n\t\tasObject: vcalendarComp,\n\t\tasString: vcalendarComp.toString(),\n\t})\n\n\tconst client = getClient('calendars')\n\tawait client.customRequest('inbox', {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<x0:propertyupdate xmlns:x0=\"DAV:\">\n\t\t\t <x0:set>\n\t\t\t\t<x0:prop>\n\t\t\t\t <x1:calendar-availability xmlns:x1=\"urn:ietf:params:xml:ns:caldav\">${vcalendarComp.toString()}</x1:calendar-availability>\n\t\t\t\t</x0:prop>\n\t\t\t </x0:set>\n\t\t\t</x0:propertyupdate>`,\n\t})\n}\n","<template>\n\t<div class=\"section\">\n\t\t<h2>{{ $t('dav', 'Availability') }}</h2>\n\t\t<p>\n\t\t\t{{ $t('dav', 'If you configure your working hours, other users will see when you are out of office when they book a meeting.') }}\n\t\t</p>\n\t\t<div class=\"time-zone\">\n\t\t\t<strong>\n\t\t\t\t{{ $t('dav', 'Time zone:') }}\n\t\t\t</strong>\n\t\t\t<span class=\"time-zone-text\">\n\t\t\t\t<TimezonePicker v-model=\"timezone\" />\n\t\t\t</span>\n\t\t</div>\n\t\t<div class=\"grid-table\">\n\t\t\t<template v-for=\"day in daysOfTheWeek\">\n\t\t\t\t<div :key=\"`day-label-${day.id}`\" class=\"label-weekday\">\n\t\t\t\t\t{{ day.displayName }}\n\t\t\t\t</div>\n\t\t\t\t<div :key=\"`day-slots-${day.id}`\" class=\"availability-slots\">\n\t\t\t\t\t<div class=\"availability-slot-group\">\n\t\t\t\t\t\t<template v-for=\"(slot, idx) in day.slots\">\n\t\t\t\t\t\t\t<div :key=\"`slot-${day.id}-${idx}`\" class=\"availability-slot\">\n\t\t\t\t\t\t\t\t<DatetimePicker v-model=\"slot.start\"\n\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\tclass=\"start-date\"\n\t\t\t\t\t\t\t\t\tformat=\"H:mm\" />\n\t\t\t\t\t\t\t\t<span class=\"to-text\">\n\t\t\t\t\t\t\t\t\t{{ $t('dav', 'to') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<DatetimePicker v-model=\"slot.end\"\n\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\tclass=\"end-date\"\n\t\t\t\t\t\t\t\t\tformat=\"H:mm\" />\n\t\t\t\t\t\t\t\t<button :key=\"`slot-${day.id}-${idx}-btn`\"\n\t\t\t\t\t\t\t\t\tclass=\"icon-delete delete-slot button\"\n\t\t\t\t\t\t\t\t\t:title=\"$t('dav', 'Delete slot')\"\n\t\t\t\t\t\t\t\t\t@click=\"deleteSlot(day, idx)\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span v-if=\"day.slots.length === 0\"\n\t\t\t\t\t\tclass=\"empty-content\">\n\t\t\t\t\t\t{{ $t('dav', 'No working hours set') }}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<button :key=\"`add-slot-${day.id}`\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\tclass=\"icon-add add-another button\"\n\t\t\t\t\t:title=\"$t('dav', 'Add slot')\"\n\t\t\t\t\t@click=\"addSlot(day)\" />\n\t\t\t</template>\n\t\t</div>\n\t\t<button :disabled=\"loading || saving\"\n\t\t\tclass=\"button primary\"\n\t\t\t@click=\"save\">\n\t\t\t{{ $t('dav', 'Save') }}\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nimport DatetimePicker from '@nextcloud/vue/dist/Components/DatetimePicker'\nimport {\n\tfindScheduleInboxAvailability,\n\tgetEmptySlots,\n\tsaveScheduleInboxAvailability,\n} from '../service/CalendarService'\nimport { getFirstDay } from '@nextcloud/l10n'\nimport jstz from 'jstimezonedetect'\nimport TimezonePicker from '@nextcloud/vue/dist/Components/TimezonePicker'\nexport default {\n\tname: 'Availability',\n\tcomponents: {\n\t\tDatetimePicker,\n\t\tTimezonePicker,\n\t},\n\tdata() {\n\t\t// Try to determine the current timezone, and fall back to UTC otherwise\n\t\tconst defaultTimezone = jstz.determine()\n\t\tconst defaultTimezoneId = defaultTimezone ? defaultTimezone.name() : 'UTC'\n\n\t\tconst moToSa = [\n\t\t\t{\n\t\t\t\tid: 'MO',\n\t\t\t\tdisplayName: this.$t('dav', 'Monday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'TU',\n\t\t\t\tdisplayName: this.$t('dav', 'Tuesday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'WE',\n\t\t\t\tdisplayName: this.$t('dav', 'Wednesday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'TH',\n\t\t\t\tdisplayName: this.$t('dav', 'Thursday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'FR',\n\t\t\t\tdisplayName: this.$t('dav', 'Friday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'SA',\n\t\t\t\tdisplayName: this.$t('dav', 'Saturday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t]\n\t\tconst sunday = {\n\t\t\tid: 'SU',\n\t\t\tdisplayName: this.$t('dav', 'Sunday'),\n\t\t\tslots: [],\n\t\t}\n\t\tconst daysOfTheWeek = getFirstDay() === 1 ? [...moToSa, sunday] : [sunday, ...moToSa]\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tsaving: false,\n\t\t\ttimezone: defaultTimezoneId,\n\t\t\tdaysOfTheWeek,\n\t\t}\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst { slots, timezoneId } = await findScheduleInboxAvailability()\n\t\t\tif (slots) {\n\t\t\t\tthis.daysOfTheWeek.forEach(day => {\n\t\t\t\t\tday.slots.push(...slots[day.id])\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (timezoneId) {\n\t\t\t\tthis.timezone = timezoneId\n\t\t\t}\n\t\t\tconsole.info('availability loaded', this.daysOfTheWeek)\n\t\t} catch (e) {\n\t\t\tconsole.error('could not load existing availability', e)\n\n\t\t\t// TODO: show a nice toast\n\t\t} finally {\n\t\t\tthis.loading = false\n\t\t}\n\t},\n\tmethods: {\n\t\taddSlot(day) {\n\t\t\tconst start = new Date()\n\t\t\tstart.setHours(9)\n\t\t\tstart.setMinutes(0)\n\t\t\tstart.setSeconds(0)\n\t\t\tconst end = new Date()\n\t\t\tend.setHours(17)\n\t\t\tend.setMinutes(0)\n\t\t\tend.setSeconds(0)\n\t\t\tday.slots.push({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t})\n\t\t},\n\t\tdeleteSlot(day, idx) {\n\t\t\tday.slots.splice(idx, 1)\n\t\t},\n\t\tasync save() {\n\t\t\ttry {\n\t\t\t\tthis.saving = true\n\n\t\t\t\tconst slots = getEmptySlots()\n\t\t\t\tthis.daysOfTheWeek.forEach(day => {\n\t\t\t\t\tday.slots.forEach(slot => slots[day.id].push(slot))\n\t\t\t\t})\n\t\t\t\tawait saveScheduleInboxAvailability(slots, this.timezone)\n\n\t\t\t\t// TODO: show a nice toast\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('could not save availability', e)\n\n\t\t\t\t// TODO: show a nice toast\n\t\t\t} finally {\n\t\t\t\tthis.saving = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.availability-day {\n\tpadding: 0 10px 0 10px;\n\tposition: absolute;\n}\n.availability-slots {\n\tdisplay: flex;\n\twhite-space: nowrap;\n}\n.availability-slot {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n.availability-slot-group {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n::v-deep .mx-input-wrapper {\n\twidth: 85px;\n}\n::v-deep .mx-datepicker {\n\twidth: 97px;\n}\n::v-deep .multiselect {\n\tborder: 1px solid var(--color-border-dark);\n\twidth: 120px;\n}\n.time-zone {\n\tpadding: 32px 12px 12px 0;\n}\n.grid-table {\n\tdisplay: grid;\n\tmargin-bottom: 32px;\n\tgrid-column-gap: 24px;\n\tgrid-row-gap: 6px;\n\tgrid-template-columns: min-content min-content min-content;\n}\n.button {\n\talign-self: flex-end;\n}\n.label-weekday {\n\tposition: relative;\n\tdisplay: inline-flex;\n\tpadding-top: 4px;\n}\n.delete-slot {\n\tbackground-color: transparent;\n\tborder: none;\n\tpadding-bottom: 12px;\n\topacity: .5;\n\t&:hover {\n\t\topacity: 1;\n\t}\n}\n\n.add-another {\n\tbackground-color: transparent;\n\tborder: none;\n\topacity: .5;\n\tdisplay: inline-flex;\n\tpadding: 0;\n\tmargin: 0;\n\tmargin-bottom: 3px;\n\n\t&:hover {\n\t\topacity: 1;\n\t}\n}\n.to-text {\n\tpadding-right: 12px;\n}\n.time-zone-text{\n\tpadding-left: 22px;\n}\n.empty-content {\n\tcolor: var(--color-text-lighter);\n\tmargin-top: 4px;\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=style&index=0&id=2534cdc4&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=style&index=0&id=2534cdc4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Availability.vue?vue&type=template&id=2534cdc4&scoped=true&\"\nimport script from \"./Availability.vue?vue&type=script&lang=js&\"\nexport * from \"./Availability.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Availability.vue?vue&type=style&index=0&id=2534cdc4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2534cdc4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('dav', 'Availability')))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('dav', 'If you configure your working hours, other users will see when you are out of office when they book a meeting.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"time-zone\"},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Time zone:'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"time-zone-text\"},[_c('TimezonePicker',{model:{value:(_vm.timezone),callback:function ($$v) {_vm.timezone=$$v},expression:\"timezone\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"grid-table\"},[_vm._l((_vm.daysOfTheWeek),function(day){return [_c('div',{key:(\"day-label-\" + (day.id)),staticClass:\"label-weekday\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(day.displayName)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{key:(\"day-slots-\" + (day.id)),staticClass:\"availability-slots\"},[_c('div',{staticClass:\"availability-slot-group\"},[_vm._l((day.slots),function(slot,idx){return [_c('div',{key:(\"slot-\" + (day.id) + \"-\" + idx),staticClass:\"availability-slot\"},[_c('DatetimePicker',{staticClass:\"start-date\",attrs:{\"type\":\"time\",\"format\":\"H:mm\"},model:{value:(slot.start),callback:function ($$v) {_vm.$set(slot, \"start\", $$v)},expression:\"slot.start\"}}),_vm._v(\" \"),_c('span',{staticClass:\"to-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'to'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('DatetimePicker',{staticClass:\"end-date\",attrs:{\"type\":\"time\",\"format\":\"H:mm\"},model:{value:(slot.end),callback:function ($$v) {_vm.$set(slot, \"end\", $$v)},expression:\"slot.end\"}}),_vm._v(\" \"),_c('button',{key:(\"slot-\" + (day.id) + \"-\" + idx + \"-btn\"),staticClass:\"icon-delete delete-slot button\",attrs:{\"title\":_vm.$t('dav', 'Delete slot')},on:{\"click\":function($event){return _vm.deleteSlot(day, idx)}}})],1)]})],2),_vm._v(\" \"),(day.slots.length === 0)?_c('span',{staticClass:\"empty-content\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'No working hours set'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),_c('button',{key:(\"add-slot-\" + (day.id)),staticClass:\"icon-add add-another button\",attrs:{\"disabled\":_vm.loading,\"title\":_vm.$t('dav', 'Add slot')},on:{\"click\":function($event){return _vm.addSlot(day)}}})]})],2),_vm._v(\" \"),_c('button',{staticClass:\"button primary\",attrs:{\"disabled\":_vm.loading || _vm.saving},on:{\"click\":_vm.save}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('dav', 'Save'))+\"\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport { translate } from '@nextcloud/l10n'\nimport Availability from './views/Availability'\n\nVue.prototype.$t = translate\n\nconst View = Vue.extend(Availability);\n\n(new View({})).$mount('#settings-personal-availability')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".availability-day[data-v-2534cdc4]{padding:0 10px 0 10px;position:absolute}.availability-slots[data-v-2534cdc4]{display:flex;white-space:nowrap}.availability-slot[data-v-2534cdc4]{display:flex;flex-direction:row;align-items:center}.availability-slot-group[data-v-2534cdc4]{display:flex;flex-direction:column}[data-v-2534cdc4] .mx-input-wrapper{width:85px}[data-v-2534cdc4] .mx-datepicker{width:97px}[data-v-2534cdc4] .multiselect{border:1px solid var(--color-border-dark);width:120px}.time-zone[data-v-2534cdc4]{padding:32px 12px 12px 0}.grid-table[data-v-2534cdc4]{display:grid;margin-bottom:32px;grid-column-gap:24px;grid-row-gap:6px;grid-template-columns:min-content min-content min-content}.button[data-v-2534cdc4]{align-self:flex-end}.label-weekday[data-v-2534cdc4]{position:relative;display:inline-flex;padding-top:4px}.delete-slot[data-v-2534cdc4]{background-color:transparent;border:none;padding-bottom:12px;opacity:.5}.delete-slot[data-v-2534cdc4]:hover{opacity:1}.add-another[data-v-2534cdc4]{background-color:transparent;border:none;opacity:.5;display:inline-flex;padding:0;margin:0;margin-bottom:3px}.add-another[data-v-2534cdc4]:hover{opacity:1}.to-text[data-v-2534cdc4]{padding-right:12px}.time-zone-text[data-v-2534cdc4]{padding-left:22px}.empty-content[data-v-2534cdc4]{color:var(--color-text-lighter);margin-top:4px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/views/Availability.vue\"],\"names\":[],\"mappings\":\"AA6LA,mCACC,qBAAA,CACA,iBAAA,CAED,qCACC,YAAA,CACA,kBAAA,CAED,oCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAED,0CACC,YAAA,CACA,qBAAA,CAED,oCACC,UAAA,CAED,iCACC,UAAA,CAED,+BACC,yCAAA,CACA,WAAA,CAED,4BACC,wBAAA,CAED,6BACC,YAAA,CACA,kBAAA,CACA,oBAAA,CACA,gBAAA,CACA,yDAAA,CAED,yBACC,mBAAA,CAED,gCACC,iBAAA,CACA,mBAAA,CACA,eAAA,CAED,8BACC,4BAAA,CACA,WAAA,CACA,mBAAA,CACA,UAAA,CACA,oCACC,SAAA,CAIF,8BACC,4BAAA,CACA,WAAA,CACA,UAAA,CACA,mBAAA,CACA,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,oCACC,SAAA,CAGF,0BACC,kBAAA,CAED,iCACC,iBAAA,CAED,gCACC,+BAAA,CACA,cAAA\",\"sourcesContent\":[\"\\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\\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\\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\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.availability-day {\\n\\tpadding: 0 10px 0 10px;\\n\\tposition: absolute;\\n}\\n.availability-slots {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n}\\n.availability-slot {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n}\\n.availability-slot-group {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n::v-deep .mx-input-wrapper {\\n\\twidth: 85px;\\n}\\n::v-deep .mx-datepicker {\\n\\twidth: 97px;\\n}\\n::v-deep .multiselect {\\n\\tborder: 1px solid var(--color-border-dark);\\n\\twidth: 120px;\\n}\\n.time-zone {\\n\\tpadding: 32px 12px 12px 0;\\n}\\n.grid-table {\\n\\tdisplay: grid;\\n\\tmargin-bottom: 32px;\\n\\tgrid-column-gap: 24px;\\n\\tgrid-row-gap: 6px;\\n\\tgrid-template-columns: min-content min-content min-content;\\n}\\n.button {\\n\\talign-self: flex-end;\\n}\\n.label-weekday {\\n\\tposition: relative;\\n\\tdisplay: inline-flex;\\n\\tpadding-top: 4px;\\n}\\n.delete-slot {\\n\\tbackground-color: transparent;\\n\\tborder: none;\\n\\tpadding-bottom: 12px;\\n\\topacity: .5;\\n\\t&:hover {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.add-another {\\n\\tbackground-color: transparent;\\n\\tborder: none;\\n\\topacity: .5;\\n\\tdisplay: inline-flex;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tmargin-bottom: 3px;\\n\\n\\t&:hover {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n.to-text {\\n\\tpadding-right: 12px;\\n}\\n.time-zone-text{\\n\\tpadding-left: 22px;\\n}\\n.empty-content {\\n\\tcolor: var(--color-text-lighter);\\n\\tmargin-top: 4px;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 347;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t347: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(13836); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getClient","memoize","service","axios","webdav","patch","generateRemoteUrl","getCurrentUser","uid","getLoggerBuilder","setApp","detectUser","build","findScheduleInboxAvailability","client","customRequest","method","data","response","parseXML","xml","undefined","availability","multistatus","propstat","prop","parsedIcal","ICAL","vcalendarComp","vavailabilityComp","getFirstSubcomponent","timezoneComp","timezoneId","getFirstProperty","getFirstValue","availableComps","getAllSubcomponents","slots","MO","TU","WE","TH","FR","SA","SU","forEach","availableComp","start","toJSDate","end","rrule","freq","getComponent","day","push","logger","toICALString","saveScheduleInboxAvailability","all","Object","keys","flatMap","dayId","map","slot","addPropertyWithValue","predefinedTimezoneIcal","getZoneString","addSubcomponent","deduplicated","reduce","acc","key","getHours","getMinutes","join","days","filter","index","self","indexOf","setParameter","uuidv4","byday","bind","asObject","asString","toString","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","$t","model","value","callback","$$v","timezone","expression","_l","displayName","idx","attrs","$set","on","$event","deleteSlot","length","_e","loading","addSlot","saving","save","Vue","translate","Availability","$mount","___CSS_LOADER_EXPORT___","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"dav-settings-personal-availability.js?v=903409c667c8f0993329","mappings":";gBAAIA,oJC2BSC,EAAYC,GAAAA,EAAQ,SAACC,GAQjC,OANAC,EAAAA,QAAAA,SAAAA,QAAAA,oBAA6C,iBAG7BC,EAAAA,aACRC,MAAM,UAAWF,EAAAA,SAElBC,EAAAA,cACNE,EAAAA,EAAAA,mBAAkB,OAAD,OAAQJ,EAAR,aAAmBK,EAAAA,EAAAA,kBAAiBC,8BCTvD,GALeC,WAAAA,oBACbC,OAAO,OACPC,aACAC,ywDCoBK,SAAeC,IAAtB,gFAAO,oIACAC,EAASd,EAAU,aADnB,SAGiBc,EAAOC,cAAc,QAAS,CACpDC,OAAQ,WACRC,KAAM,0MALD,cAGAC,EAHA,iBAaYC,EAAAA,EAAAA,UAASD,EAASD,MAb9B,UAaAG,EAbA,qDAgBEC,GAhBF,UAmBAC,EAAeF,MAAAA,GAnBf,UAmBeA,EAAKG,mBAnBpB,iBAmBe,EAAkBL,SAAS,UAnB1C,iBAmBe,EAA+BM,gBAnB9C,aAmBe,EAAyCC,KAAK,yBAnB7D,+CAqBEJ,GArBF,eAwBAK,EAAaC,IAAAA,MAAWL,GAExBM,EAAgB,IAAID,IAAAA,WAAeD,GACnCG,EAAoBD,EAAcE,qBAAqB,kBAGvDC,EAAeH,EAAcE,qBAAqB,gBAEvDE,EAAaD,EAAaE,iBAAiB,QAAQC,iBAG9CC,EAAiBN,EAAkBO,oBAAoB,aAEvDC,EAnDC,CACNC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,IA6CLT,EAAeU,SAAQ,SAACC,GACvB,IAAMC,EAAQD,EAAcb,iBAAiB,WAAWC,gBAAgBc,WAClEC,EAAMH,EAAcb,iBAAiB,SAASC,gBAAgBc,WAC9DE,EAAQJ,EAAcb,iBAAiB,SAEV,WAA/BiB,EAAMhB,gBAAgBiB,KAO1BD,EAAMhB,gBAAgBkB,aAAa,SAASP,SAAQ,SAAAQ,GACnDhB,EAAMgB,GAAKC,KAAK,CACfP,MAAAA,EACAE,IAAAA,OATDM,EAAAA,KAAY,sBAAuB,CAClCL,MAAOA,EAAMM,oBA7CV,kBA0DC,CACNnB,MAAAA,EACAL,WAAAA,IA5DK,mEAoEA,SAAeyB,EAAtB,qFAAO,WAA6CpB,EAAOL,GAApD,2GACA0B,EADA,EACUC,OAAOC,KAAKvB,GAAOwB,SAAQ,SAAAC,GAAK,OAAIzB,EAAMyB,GAAOC,KAAI,SAAAC,GAAI,cACrEA,GADqE,IAExEX,IAAKS,YAGAlC,EAAgB,IAAID,IAAAA,WAAe,cAC3BsC,qBAAqB,SAAU,sBAIvCC,GAAyBC,EAAAA,EAAAA,IAAcnC,KAEtCD,EAAe,IAAIJ,IAAAA,WAAeA,IAAAA,MAAWuC,IACnDtC,EAAcwC,gBAAgBrC,MAGxBA,EAAe,IAAIJ,IAAAA,WAAe,cAC3BsC,qBAAqB,OAAQjC,GAC1CJ,EAAcwC,gBAAgBrC,IAIzBF,EAAoB,IAAIF,IAAAA,WAAe,iBAGvC0C,EAAeX,EAAIY,QAAO,SAACC,EAAKP,GAAS,MACxCQ,EAAM,CACXR,EAAKjB,MAAM0B,WACXT,EAAKjB,MAAM2B,aACXV,EAAKf,IAAIwB,WACTT,EAAKf,IAAIyB,cACRC,KAAK,KAEP,cACIJ,GADJ,QAEEC,EAFF,sBAEaD,EAAIC,UAFjB,QAEyB,IAFzB,CAE8BR,QAE5B,IAGHL,OAAOC,KAAKS,GAAcN,KAAI,SAAAS,GAC7B,IAAMnC,EAAQgC,EAAaG,GACrBzB,EAAQV,EAAM,GAAGU,MACjBE,EAAMZ,EAAM,GAAGY,IAEf2B,EAAOvC,EAAM0B,KAAI,SAAAC,GAAI,OAAIA,EAAKX,OAAKwB,QAAO,SAACxB,EAAKyB,EAAOC,GAAb,OAAsBA,EAAKC,QAAQ3B,KAASyB,KAEtFhC,EAAgB,IAAInB,IAAAA,WAAe,aAmBzC,OAhBsBmB,EAAcmB,qBAAqB,UAAWtC,IAAAA,KAAAA,WAAqBoB,GAAO,IAClFkC,aAAa,OAAQjD,GACfc,EAAcmB,qBAAqB,QAAStC,IAAAA,KAAAA,WAAqBsB,GAAK,IAC9EgC,aAAa,OAAQjD,GAGjCc,EAAcmB,qBAAqB,OAAOiB,EAAAA,EAAAA,MAK1CpC,EAAcmB,qBAAqB,QAAS,CAC3Cd,KAAM,SACNgC,MAAOP,IAGD9B,KACLiB,IAAIlC,EAAkBuC,gBAAgBgB,KAAKvD,IAE9CD,EAAcwC,gBAAgBvC,GAC9B0B,EAAAA,MAAa,gCAAiC,CAC7C8B,SAAUzD,EACV0D,SAAU1D,EAAc2D,aAGnBzE,EAASd,EAAU,aA5EnB,UA6EAc,EAAOC,cAAc,QAAS,CACnCC,OAAQ,YACRC,KAAM,uLAAF,OAIqEW,EAAc2D,WAJnF,oGA/EC,qhBC1CP,ICvEyL,EDuEzL,CACA,oBACA,YACA,mBACA,oBAEA,KANA,WAQA,sBACA,mBAEA,GACA,CACA,QACA,oCACA,UAEA,CACA,QACA,qCACA,UAEA,CACA,QACA,uCACA,UAEA,CACA,QACA,sCACA,UAEA,CACA,QACA,oCACA,UAEA,CACA,QACA,sCACA,WAGA,GACA,QACA,oCACA,UAGA,OACA,WACA,UACA,WACA,cALA,yDAQA,QAxDA,WAwDA,6KAEA,IAFA,gBAEA,EAFA,EAEA,QAFA,EAEA,WACA,GACA,8CACA,qpBAGA,IACA,cAEA,oDAXA,kDAaA,2DAbA,yBAiBA,aAjBA,gFAoBA,SACA,QADA,SACA,GACA,eACA,cACA,gBACA,gBACA,eACA,eACA,gBACA,gBACA,cACA,QACA,SAGA,WAfA,SAeA,KACA,qBAEA,KAlBA,WAkBA,gKAEA,YAEA,ED1IQ,CACNjD,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,ICoIN,qCACA,0DANA,SAQA,gBARA,uDAYA,kDAZA,yBAgBA,YAhBA,kNE1JI4C,EAAU,GAEdA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WALlD,ICFA,GAXgB,cACd,GCTW,WAAa,IAAIM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,KAAK,CAACJ,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIS,GAAG,MAAO,oBAAoBT,EAAIO,GAAG,KAAKH,EAAG,IAAI,CAACJ,EAAIO,GAAG,SAASP,EAAIQ,GAAGR,EAAIS,GAAG,MAAO,mHAAmH,UAAUT,EAAIO,GAAG,KAAKH,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,SAAS,CAACJ,EAAIO,GAAG,WAAWP,EAAIQ,GAAGR,EAAIS,GAAG,MAAO,eAAe,YAAYT,EAAIO,GAAG,KAAKH,EAAG,OAAO,CAACE,YAAY,kBAAkB,CAACF,EAAG,iBAAiB,CAACM,MAAM,CAACC,MAAOX,EAAY,SAAEY,SAAS,SAAUC,GAAMb,EAAIc,SAASD,GAAKE,WAAW,eAAe,KAAKf,EAAIO,GAAG,KAAKH,EAAG,MAAM,CAACE,YAAY,cAAc,CAACN,EAAIgB,GAAIhB,EAAiB,eAAE,SAASzC,GAAK,MAAO,CAAC6C,EAAG,MAAM,CAAC1B,IAAK,aAAgBnB,EAAM,GAAG+C,YAAY,iBAAiB,CAACN,EAAIO,GAAG,aAAaP,EAAIQ,GAAGjD,EAAI0D,aAAa,cAAcjB,EAAIO,GAAG,KAAKH,EAAG,MAAM,CAAC1B,IAAK,aAAgBnB,EAAM,GAAG+C,YAAY,sBAAsB,CAACF,EAAG,MAAM,CAACE,YAAY,2BAA2B,CAACN,EAAIgB,GAAIzD,EAAS,OAAE,SAASW,EAAKgD,GAAK,MAAO,CAACd,EAAG,MAAM,CAAC1B,IAAK,QAAWnB,EAAM,GAAI,IAAM2D,EAAKZ,YAAY,qBAAqB,CAACF,EAAG,iBAAiB,CAACE,YAAY,aAAaa,MAAM,CAAC,KAAO,OAAO,OAAS,QAAQT,MAAM,CAACC,MAAOzC,EAAU,MAAE0C,SAAS,SAAUC,GAAMb,EAAIoB,KAAKlD,EAAM,QAAS2C,IAAME,WAAW,gBAAgBf,EAAIO,GAAG,KAAKH,EAAG,OAAO,CAACE,YAAY,WAAW,CAACN,EAAIO,GAAG,qBAAqBP,EAAIQ,GAAGR,EAAIS,GAAG,MAAO,OAAO,sBAAsBT,EAAIO,GAAG,KAAKH,EAAG,iBAAiB,CAACE,YAAY,WAAWa,MAAM,CAAC,KAAO,OAAO,OAAS,QAAQT,MAAM,CAACC,MAAOzC,EAAQ,IAAE0C,SAAS,SAAUC,GAAMb,EAAIoB,KAAKlD,EAAM,MAAO2C,IAAME,WAAW,cAAcf,EAAIO,GAAG,KAAKH,EAAG,SAAS,CAAC1B,IAAK,QAAWnB,EAAM,GAAI,IAAM2D,EAAM,OAAQZ,YAAY,iCAAiCa,MAAM,CAAC,MAAQnB,EAAIS,GAAG,MAAO,gBAAgBY,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOtB,EAAIuB,WAAWhE,EAAK2D,QAAU,QAAO,GAAGlB,EAAIO,GAAG,KAA2B,IAArBhD,EAAIhB,MAAMiF,OAAcpB,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIO,GAAG,eAAeP,EAAIQ,GAAGR,EAAIS,GAAG,MAAO,yBAAyB,gBAAgBT,EAAIyB,OAAOzB,EAAIO,GAAG,KAAKH,EAAG,SAAS,CAAC1B,IAAK,YAAenB,EAAM,GAAG+C,YAAY,8BAA8Ba,MAAM,CAAC,SAAWnB,EAAI0B,QAAQ,MAAQ1B,EAAIS,GAAG,MAAO,aAAaY,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOtB,EAAI2B,QAAQpE,YAAa,GAAGyC,EAAIO,GAAG,KAAKH,EAAG,SAAS,CAACE,YAAY,iBAAiBa,MAAM,CAAC,SAAWnB,EAAI0B,SAAW1B,EAAI4B,QAAQP,GAAG,CAAC,MAAQrB,EAAI6B,OAAO,CAAC7B,EAAIO,GAAG,SAASP,EAAIQ,GAAGR,EAAIS,GAAG,MAAO,SAAS,cAC15E,IDWpB,EACA,KACA,WACA,MAI8B,QEfhCqB,EAAAA,QAAAA,UAAAA,GAAmBC,EAAAA,UAIlB,IAFYD,EAAAA,QAAAA,OAAWE,GAEvB,CAAS,IAAKC,OAAO,0GCLlBC,QAA0B,GAA4B,KAE1DA,EAAwB1E,KAAK,CAAC2E,EAAOC,GAAI,wzCAAyzC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mDAAmD,MAAQ,GAAG,SAAW,shBAAshB,eAAiB,CAAC,wsDAAwsD,WAAa,MAEnsH,8CCNIC,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBhH,IAAjBiH,EACH,OAAOA,EAAaC,QAGrB,IAAIN,EAASE,EAAyBE,GAAY,CACjDH,GAAIG,EACJG,QAAQ,EACRD,QAAS,IAUV,OANAE,EAAoBJ,GAAUK,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASH,GAG3EH,EAAOO,QAAS,EAGTP,EAAOM,QAIfH,EAAoBO,EAAIF,EC5BxBL,EAAoBQ,KAAO,WAC1B,MAAM,IAAIC,MAAM,mCCDjBT,EAAoBU,KAAO,GbAvB/I,EAAW,GACfqI,EAAoBW,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIvJ,EAASuH,OAAQgC,IAAK,CACrCL,EAAWlJ,EAASuJ,GAAG,GACvBJ,EAAKnJ,EAASuJ,GAAG,GACjBH,EAAWpJ,EAASuJ,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAAS3B,OAAQkC,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaxF,OAAOC,KAAKwE,EAAoBW,GAAGU,OAAM,SAASjF,GAAO,OAAO4D,EAAoBW,EAAEvE,GAAKyE,EAASO,OAC3JP,EAASS,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbxJ,EAAS2J,OAAOJ,IAAK,GACrB,IAAIK,EAAIT,SACE7H,IAANsI,IAAiBX,EAASW,IAGhC,OAAOX,EAzBNG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIvJ,EAASuH,OAAQgC,EAAI,GAAKvJ,EAASuJ,EAAI,GAAG,GAAKH,EAAUG,IAAKvJ,EAASuJ,GAAKvJ,EAASuJ,EAAI,GACrGvJ,EAASuJ,GAAK,CAACL,EAAUC,EAAIC,IcJ/Bf,EAAoBwB,EAAI,SAAS3B,GAChC,IAAI4B,EAAS5B,GAAUA,EAAO6B,WAC7B,WAAa,OAAO7B,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAG,EAAoB2B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRzB,EAAoB2B,EAAI,SAASxB,EAAS0B,GACzC,IAAI,IAAIzF,KAAOyF,EACX7B,EAAoB8B,EAAED,EAAYzF,KAAS4D,EAAoB8B,EAAE3B,EAAS/D,IAC5Eb,OAAOwG,eAAe5B,EAAS/D,EAAK,CAAE4F,YAAY,EAAMC,IAAKJ,EAAWzF,MCJ3E4D,EAAoBkC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOxE,MAAQ,IAAIyE,SAAS,cAAb,GACd,MAAOC,GACR,GAAsB,iBAAXC,OAAqB,OAAOA,QALjB,GCAxBtC,EAAoB8B,EAAI,SAASS,EAAKlJ,GAAQ,OAAOkC,OAAOiH,UAAUC,eAAenC,KAAKiC,EAAKlJ,ICC/F2G,EAAoBuB,EAAI,SAASpB,GACX,oBAAXuC,QAA0BA,OAAOC,aAC1CpH,OAAOwG,eAAe5B,EAASuC,OAAOC,YAAa,CAAEtE,MAAO,WAE7D9C,OAAOwG,eAAe5B,EAAS,aAAc,CAAE9B,OAAO,KCLvD2B,EAAoB4C,IAAM,SAAS/C,GAGlC,OAFAA,EAAOgD,MAAQ,GACVhD,EAAOiD,WAAUjD,EAAOiD,SAAW,IACjCjD,GCHRG,EAAoBoB,EAAI,eCAxBpB,EAAoB+C,EAAIC,SAASC,SAAWtG,KAAKuG,SAASC,KAK1D,IAAIC,EAAkB,CACrB,IAAK,GAaNpD,EAAoBW,EAAES,EAAI,SAASiC,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4B1K,GAC/D,IAKIoH,EAAUoD,EALVxC,EAAWhI,EAAK,GAChB2K,EAAc3K,EAAK,GACnB4K,EAAU5K,EAAK,GAGIqI,EAAI,EAC3B,GAAGL,EAAS6C,MAAK,SAAS5D,GAAM,OAA+B,IAAxBsD,EAAgBtD,MAAe,CACrE,IAAIG,KAAYuD,EACZxD,EAAoB8B,EAAE0B,EAAavD,KACrCD,EAAoBO,EAAEN,GAAYuD,EAAYvD,IAGhD,GAAGwD,EAAS,IAAI7C,EAAS6C,EAAQzD,GAGlC,IADGuD,GAA4BA,EAA2B1K,GACrDqI,EAAIL,EAAS3B,OAAQgC,IACzBmC,EAAUxC,EAASK,GAChBlB,EAAoB8B,EAAEsB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOrD,EAAoBW,EAAEC,IAG1B+C,EAAqBhH,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FgH,EAAmBlJ,QAAQ6I,EAAqBtG,KAAK,KAAM,IAC3D2G,EAAmBzI,KAAOoI,EAAqBtG,KAAK,KAAM2G,EAAmBzI,KAAK8B,KAAK2G,OC/CvF,IAAIC,EAAsB5D,EAAoBW,OAAE1H,EAAW,CAAC,MAAM,WAAa,OAAO+G,EAAoB,UAC1G4D,EAAsB5D,EAAoBW,EAAEiD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dav/src/dav/client.js","webpack:///nextcloud/apps/dav/src/service/logger.js","webpack:///nextcloud/apps/dav/src/service/CalendarService.js","webpack:///nextcloud/apps/dav/src/views/Availability.vue","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dav/src/views/Availability.vue?214e","webpack://nextcloud/./apps/dav/src/views/Availability.vue?aa5a","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=template&id=2534cdc4&scoped=true&","webpack:///nextcloud/apps/dav/src/settings-personal-availability.js","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=style&index=0&id=2534cdc4&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/*\n * @copyright 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport * as webdav from 'webdav'\nimport axios from '@nextcloud/axios'\nimport memoize from 'lodash/fp/memoize'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport const getClient = memoize((service) => {\n\t// Add this so the server knows it is an request from the browser\n\taxios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'\n\n\t// force our axios\n\tconst patcher = webdav.getPatcher()\n\tpatcher.patch('request', axios)\n\n\treturn webdav.createClient(\n\t\tgenerateRemoteUrl(`dav/${service}/${getCurrentUser().uid}`)\n\t)\n})\n","/*\n * @copyright 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst logger = getLoggerBuilder()\n\t.setApp('dav')\n\t.detectUser()\n\t.build()\n\nexport default logger\n","/**\n * @copyright 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2021 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { getClient } from '../dav/client'\nimport ICAL from 'ical.js'\nimport logger from './logger'\nimport { parseXML } from 'webdav/dist/node/tools/dav'\nimport { getZoneString } from 'icalzone'\nimport { v4 as uuidv4 } from 'uuid'\n\n/**\n *\n */\nexport function getEmptySlots() {\n\treturn {\n\t\tMO: [],\n\t\tTU: [],\n\t\tWE: [],\n\t\tTH: [],\n\t\tFR: [],\n\t\tSA: [],\n\t\tSU: [],\n\t}\n}\n\n/**\n *\n */\nexport async function findScheduleInboxAvailability() {\n\tconst client = getClient('calendars')\n\n\tconst response = await client.customRequest('inbox', {\n\t\tmethod: 'PROPFIND',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<x0:propfind xmlns:x0=\"DAV:\">\n\t\t\t <x0:prop>\n\t\t\t\t<x1:calendar-availability xmlns:x1=\"urn:ietf:params:xml:ns:caldav\"/>\n\t\t\t </x0:prop>\n\t\t\t</x0:propfind>`,\n\t})\n\n\tconst xml = await parseXML(response.data)\n\n\tif (!xml) {\n\t\treturn undefined\n\t}\n\n\tconst availability = xml?.multistatus?.response[0]?.propstat?.prop['calendar-availability']\n\tif (!availability) {\n\t\treturn undefined\n\t}\n\n\tconst parsedIcal = ICAL.parse(availability)\n\n\tconst vcalendarComp = new ICAL.Component(parsedIcal)\n\tconst vavailabilityComp = vcalendarComp.getFirstSubcomponent('vavailability')\n\n\tlet timezoneId\n\tconst timezoneComp = vcalendarComp.getFirstSubcomponent('vtimezone')\n\tif (timezoneComp) {\n\t\ttimezoneId = timezoneComp.getFirstProperty('tzid').getFirstValue()\n\t}\n\n\tconst availableComps = vavailabilityComp.getAllSubcomponents('available')\n\t// Combine all AVAILABLE blocks into a week of slots\n\tconst slots = getEmptySlots()\n\tavailableComps.forEach((availableComp) => {\n\t\tconst start = availableComp.getFirstProperty('dtstart').getFirstValue().toJSDate()\n\t\tconst end = availableComp.getFirstProperty('dtend').getFirstValue().toJSDate()\n\t\tconst rrule = availableComp.getFirstProperty('rrule')\n\n\t\tif (rrule.getFirstValue().freq !== 'WEEKLY') {\n\t\t\tlogger.warn('rrule not supported', {\n\t\t\t\trrule: rrule.toICALString(),\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\trrule.getFirstValue().getComponent('BYDAY').forEach(day => {\n\t\t\tslots[day].push({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t})\n\t\t})\n\t})\n\n\treturn {\n\t\tslots,\n\t\ttimezoneId,\n\t}\n}\n\n/**\n * @param {any} slots -\n * @param {any} timezoneId -\n */\nexport async function saveScheduleInboxAvailability(slots, timezoneId) {\n\tconst all = [...Object.keys(slots).flatMap(dayId => slots[dayId].map(slot => ({\n\t\t...slot,\n\t\tday: dayId,\n\t})))]\n\n\tconst vcalendarComp = new ICAL.Component('vcalendar')\n\tvcalendarComp.addPropertyWithValue('prodid', 'Nextcloud DAV app')\n\n\t// Store time zone info\n\t// If possible we use the info from a time zone database\n\tconst predefinedTimezoneIcal = getZoneString(timezoneId)\n\tif (predefinedTimezoneIcal) {\n\t\tconst timezoneComp = new ICAL.Component(ICAL.parse(predefinedTimezoneIcal))\n\t\tvcalendarComp.addSubcomponent(timezoneComp)\n\t} else {\n\t\t// Fall back to a simple markup\n\t\tconst timezoneComp = new ICAL.Component('vtimezone')\n\t\ttimezoneComp.addPropertyWithValue('tzid', timezoneId)\n\t\tvcalendarComp.addSubcomponent(timezoneComp)\n\t}\n\n\t// Store availability info\n\tconst vavailabilityComp = new ICAL.Component('vavailability')\n\n\t// Deduplicate by start and end time\n\tconst deduplicated = all.reduce((acc, slot) => {\n\t\tconst key = [\n\t\t\tslot.start.getHours(),\n\t\t\tslot.start.getMinutes(),\n\t\t\tslot.end.getHours(),\n\t\t\tslot.end.getMinutes(),\n\t\t].join('-')\n\n\t\treturn {\n\t\t\t...acc,\n\t\t\t[key]: [...(acc[key] ?? []), slot],\n\t\t}\n\t}, {})\n\n\t// Create an AVAILABILITY component for every recurring slot\n\tObject.keys(deduplicated).map(key => {\n\t\tconst slots = deduplicated[key]\n\t\tconst start = slots[0].start\n\t\tconst end = slots[0].end\n\t\t// Combine days but make them also unique\n\t\tconst days = slots.map(slot => slot.day).filter((day, index, self) => self.indexOf(day) === index)\n\n\t\tconst availableComp = new ICAL.Component('available')\n\n\t\t// Define DTSTART and DTEND\n\t\tconst startTimeProp = availableComp.addPropertyWithValue('dtstart', ICAL.Time.fromJSDate(start, false))\n\t\tstartTimeProp.setParameter('tzid', timezoneId)\n\t\tconst endTimeProp = availableComp.addPropertyWithValue('dtend', ICAL.Time.fromJSDate(end, false))\n\t\tendTimeProp.setParameter('tzid', timezoneId)\n\n\t\t// Add mandatory UID\n\t\tavailableComp.addPropertyWithValue('uid', uuidv4())\n\n\t\t// TODO: add optional summary\n\n\t\t// Define RRULE\n\t\tavailableComp.addPropertyWithValue('rrule', {\n\t\t\tfreq: 'WEEKLY',\n\t\t\tbyday: days,\n\t\t})\n\n\t\treturn availableComp\n\t}).map(vavailabilityComp.addSubcomponent.bind(vavailabilityComp))\n\n\tvcalendarComp.addSubcomponent(vavailabilityComp)\n\tlogger.debug('New availability ical created', {\n\t\tasObject: vcalendarComp,\n\t\tasString: vcalendarComp.toString(),\n\t})\n\n\tconst client = getClient('calendars')\n\tawait client.customRequest('inbox', {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<x0:propertyupdate xmlns:x0=\"DAV:\">\n\t\t\t <x0:set>\n\t\t\t\t<x0:prop>\n\t\t\t\t <x1:calendar-availability xmlns:x1=\"urn:ietf:params:xml:ns:caldav\">${vcalendarComp.toString()}</x1:calendar-availability>\n\t\t\t\t</x0:prop>\n\t\t\t </x0:set>\n\t\t\t</x0:propertyupdate>`,\n\t})\n}\n","<template>\n\t<div class=\"section\">\n\t\t<h2>{{ $t('dav', 'Availability') }}</h2>\n\t\t<p>\n\t\t\t{{ $t('dav', 'If you configure your working hours, other users will see when you are out of office when they book a meeting.') }}\n\t\t</p>\n\t\t<div class=\"time-zone\">\n\t\t\t<strong>\n\t\t\t\t{{ $t('dav', 'Time zone:') }}\n\t\t\t</strong>\n\t\t\t<span class=\"time-zone-text\">\n\t\t\t\t<TimezonePicker v-model=\"timezone\" />\n\t\t\t</span>\n\t\t</div>\n\t\t<div class=\"grid-table\">\n\t\t\t<template v-for=\"day in daysOfTheWeek\">\n\t\t\t\t<div :key=\"`day-label-${day.id}`\" class=\"label-weekday\">\n\t\t\t\t\t{{ day.displayName }}\n\t\t\t\t</div>\n\t\t\t\t<div :key=\"`day-slots-${day.id}`\" class=\"availability-slots\">\n\t\t\t\t\t<div class=\"availability-slot-group\">\n\t\t\t\t\t\t<template v-for=\"(slot, idx) in day.slots\">\n\t\t\t\t\t\t\t<div :key=\"`slot-${day.id}-${idx}`\" class=\"availability-slot\">\n\t\t\t\t\t\t\t\t<DatetimePicker v-model=\"slot.start\"\n\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\tclass=\"start-date\"\n\t\t\t\t\t\t\t\t\tformat=\"H:mm\" />\n\t\t\t\t\t\t\t\t<span class=\"to-text\">\n\t\t\t\t\t\t\t\t\t{{ $t('dav', 'to') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<DatetimePicker v-model=\"slot.end\"\n\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\tclass=\"end-date\"\n\t\t\t\t\t\t\t\t\tformat=\"H:mm\" />\n\t\t\t\t\t\t\t\t<button :key=\"`slot-${day.id}-${idx}-btn`\"\n\t\t\t\t\t\t\t\t\tclass=\"icon-delete delete-slot button\"\n\t\t\t\t\t\t\t\t\t:title=\"$t('dav', 'Delete slot')\"\n\t\t\t\t\t\t\t\t\t@click=\"deleteSlot(day, idx)\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span v-if=\"day.slots.length === 0\"\n\t\t\t\t\t\tclass=\"empty-content\">\n\t\t\t\t\t\t{{ $t('dav', 'No working hours set') }}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<button :key=\"`add-slot-${day.id}`\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\tclass=\"icon-add add-another button\"\n\t\t\t\t\t:title=\"$t('dav', 'Add slot')\"\n\t\t\t\t\t@click=\"addSlot(day)\" />\n\t\t\t</template>\n\t\t</div>\n\t\t<button :disabled=\"loading || saving\"\n\t\t\tclass=\"button primary\"\n\t\t\t@click=\"save\">\n\t\t\t{{ $t('dav', 'Save') }}\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nimport DatetimePicker from '@nextcloud/vue/dist/Components/DatetimePicker'\nimport {\n\tfindScheduleInboxAvailability,\n\tgetEmptySlots,\n\tsaveScheduleInboxAvailability,\n} from '../service/CalendarService'\nimport { getFirstDay } from '@nextcloud/l10n'\nimport jstz from 'jstimezonedetect'\nimport TimezonePicker from '@nextcloud/vue/dist/Components/TimezonePicker'\nexport default {\n\tname: 'Availability',\n\tcomponents: {\n\t\tDatetimePicker,\n\t\tTimezonePicker,\n\t},\n\tdata() {\n\t\t// Try to determine the current timezone, and fall back to UTC otherwise\n\t\tconst defaultTimezone = jstz.determine()\n\t\tconst defaultTimezoneId = defaultTimezone ? defaultTimezone.name() : 'UTC'\n\n\t\tconst moToSa = [\n\t\t\t{\n\t\t\t\tid: 'MO',\n\t\t\t\tdisplayName: this.$t('dav', 'Monday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'TU',\n\t\t\t\tdisplayName: this.$t('dav', 'Tuesday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'WE',\n\t\t\t\tdisplayName: this.$t('dav', 'Wednesday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'TH',\n\t\t\t\tdisplayName: this.$t('dav', 'Thursday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'FR',\n\t\t\t\tdisplayName: this.$t('dav', 'Friday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'SA',\n\t\t\t\tdisplayName: this.$t('dav', 'Saturday'),\n\t\t\t\tslots: [],\n\t\t\t},\n\t\t]\n\t\tconst sunday = {\n\t\t\tid: 'SU',\n\t\t\tdisplayName: this.$t('dav', 'Sunday'),\n\t\t\tslots: [],\n\t\t}\n\t\tconst daysOfTheWeek = getFirstDay() === 1 ? [...moToSa, sunday] : [sunday, ...moToSa]\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tsaving: false,\n\t\t\ttimezone: defaultTimezoneId,\n\t\t\tdaysOfTheWeek,\n\t\t}\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst { slots, timezoneId } = await findScheduleInboxAvailability()\n\t\t\tif (slots) {\n\t\t\t\tthis.daysOfTheWeek.forEach(day => {\n\t\t\t\t\tday.slots.push(...slots[day.id])\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (timezoneId) {\n\t\t\t\tthis.timezone = timezoneId\n\t\t\t}\n\t\t\tconsole.info('availability loaded', this.daysOfTheWeek)\n\t\t} catch (e) {\n\t\t\tconsole.error('could not load existing availability', e)\n\n\t\t\t// TODO: show a nice toast\n\t\t} finally {\n\t\t\tthis.loading = false\n\t\t}\n\t},\n\tmethods: {\n\t\taddSlot(day) {\n\t\t\tconst start = new Date()\n\t\t\tstart.setHours(9)\n\t\t\tstart.setMinutes(0)\n\t\t\tstart.setSeconds(0)\n\t\t\tconst end = new Date()\n\t\t\tend.setHours(17)\n\t\t\tend.setMinutes(0)\n\t\t\tend.setSeconds(0)\n\t\t\tday.slots.push({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t})\n\t\t},\n\t\tdeleteSlot(day, idx) {\n\t\t\tday.slots.splice(idx, 1)\n\t\t},\n\t\tasync save() {\n\t\t\ttry {\n\t\t\t\tthis.saving = true\n\n\t\t\t\tconst slots = getEmptySlots()\n\t\t\t\tthis.daysOfTheWeek.forEach(day => {\n\t\t\t\t\tday.slots.forEach(slot => slots[day.id].push(slot))\n\t\t\t\t})\n\t\t\t\tawait saveScheduleInboxAvailability(slots, this.timezone)\n\n\t\t\t\t// TODO: show a nice toast\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('could not save availability', e)\n\n\t\t\t\t// TODO: show a nice toast\n\t\t\t} finally {\n\t\t\t\tthis.saving = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.availability-day {\n\tpadding: 0 10px 0 10px;\n\tposition: absolute;\n}\n.availability-slots {\n\tdisplay: flex;\n\twhite-space: nowrap;\n}\n.availability-slot {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n.availability-slot-group {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n::v-deep .mx-input-wrapper {\n\twidth: 85px;\n}\n::v-deep .mx-datepicker {\n\twidth: 97px;\n}\n::v-deep .multiselect {\n\tborder: 1px solid var(--color-border-dark);\n\twidth: 120px;\n}\n.time-zone {\n\tpadding: 32px 12px 12px 0;\n}\n.grid-table {\n\tdisplay: grid;\n\tmargin-bottom: 32px;\n\tgrid-column-gap: 24px;\n\tgrid-row-gap: 6px;\n\tgrid-template-columns: min-content min-content min-content;\n}\n.button {\n\talign-self: flex-end;\n}\n.label-weekday {\n\tposition: relative;\n\tdisplay: inline-flex;\n\tpadding-top: 4px;\n}\n.delete-slot {\n\tbackground-color: transparent;\n\tborder: none;\n\tpadding-bottom: 12px;\n\topacity: .5;\n\t&:hover {\n\t\topacity: 1;\n\t}\n}\n\n.add-another {\n\tbackground-color: transparent;\n\tborder: none;\n\topacity: .5;\n\tdisplay: inline-flex;\n\tpadding: 0;\n\tmargin: 0;\n\tmargin-bottom: 3px;\n\n\t&:hover {\n\t\topacity: 1;\n\t}\n}\n.to-text {\n\tpadding-right: 12px;\n}\n.time-zone-text{\n\tpadding-left: 22px;\n}\n.empty-content {\n\tcolor: var(--color-text-lighter);\n\tmargin-top: 4px;\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=style&index=0&id=2534cdc4&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=style&index=0&id=2534cdc4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Availability.vue?vue&type=template&id=2534cdc4&scoped=true&\"\nimport script from \"./Availability.vue?vue&type=script&lang=js&\"\nexport * from \"./Availability.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Availability.vue?vue&type=style&index=0&id=2534cdc4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2534cdc4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('dav', 'Availability')))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('dav', 'If you configure your working hours, other users will see when you are out of office when they book a meeting.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"time-zone\"},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Time zone:'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"time-zone-text\"},[_c('TimezonePicker',{model:{value:(_vm.timezone),callback:function ($$v) {_vm.timezone=$$v},expression:\"timezone\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"grid-table\"},[_vm._l((_vm.daysOfTheWeek),function(day){return [_c('div',{key:(\"day-label-\" + (day.id)),staticClass:\"label-weekday\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(day.displayName)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{key:(\"day-slots-\" + (day.id)),staticClass:\"availability-slots\"},[_c('div',{staticClass:\"availability-slot-group\"},[_vm._l((day.slots),function(slot,idx){return [_c('div',{key:(\"slot-\" + (day.id) + \"-\" + idx),staticClass:\"availability-slot\"},[_c('DatetimePicker',{staticClass:\"start-date\",attrs:{\"type\":\"time\",\"format\":\"H:mm\"},model:{value:(slot.start),callback:function ($$v) {_vm.$set(slot, \"start\", $$v)},expression:\"slot.start\"}}),_vm._v(\" \"),_c('span',{staticClass:\"to-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'to'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('DatetimePicker',{staticClass:\"end-date\",attrs:{\"type\":\"time\",\"format\":\"H:mm\"},model:{value:(slot.end),callback:function ($$v) {_vm.$set(slot, \"end\", $$v)},expression:\"slot.end\"}}),_vm._v(\" \"),_c('button',{key:(\"slot-\" + (day.id) + \"-\" + idx + \"-btn\"),staticClass:\"icon-delete delete-slot button\",attrs:{\"title\":_vm.$t('dav', 'Delete slot')},on:{\"click\":function($event){return _vm.deleteSlot(day, idx)}}})],1)]})],2),_vm._v(\" \"),(day.slots.length === 0)?_c('span',{staticClass:\"empty-content\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'No working hours set'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),_c('button',{key:(\"add-slot-\" + (day.id)),staticClass:\"icon-add add-another button\",attrs:{\"disabled\":_vm.loading,\"title\":_vm.$t('dav', 'Add slot')},on:{\"click\":function($event){return _vm.addSlot(day)}}})]})],2),_vm._v(\" \"),_c('button',{staticClass:\"button primary\",attrs:{\"disabled\":_vm.loading || _vm.saving},on:{\"click\":_vm.save}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('dav', 'Save'))+\"\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport { translate } from '@nextcloud/l10n'\nimport Availability from './views/Availability'\n\nVue.prototype.$t = translate\n\nconst View = Vue.extend(Availability);\n\n(new View({})).$mount('#settings-personal-availability')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".availability-day[data-v-2534cdc4]{padding:0 10px 0 10px;position:absolute}.availability-slots[data-v-2534cdc4]{display:flex;white-space:nowrap}.availability-slot[data-v-2534cdc4]{display:flex;flex-direction:row;align-items:center}.availability-slot-group[data-v-2534cdc4]{display:flex;flex-direction:column}[data-v-2534cdc4] .mx-input-wrapper{width:85px}[data-v-2534cdc4] .mx-datepicker{width:97px}[data-v-2534cdc4] .multiselect{border:1px solid var(--color-border-dark);width:120px}.time-zone[data-v-2534cdc4]{padding:32px 12px 12px 0}.grid-table[data-v-2534cdc4]{display:grid;margin-bottom:32px;grid-column-gap:24px;grid-row-gap:6px;grid-template-columns:min-content min-content min-content}.button[data-v-2534cdc4]{align-self:flex-end}.label-weekday[data-v-2534cdc4]{position:relative;display:inline-flex;padding-top:4px}.delete-slot[data-v-2534cdc4]{background-color:transparent;border:none;padding-bottom:12px;opacity:.5}.delete-slot[data-v-2534cdc4]:hover{opacity:1}.add-another[data-v-2534cdc4]{background-color:transparent;border:none;opacity:.5;display:inline-flex;padding:0;margin:0;margin-bottom:3px}.add-another[data-v-2534cdc4]:hover{opacity:1}.to-text[data-v-2534cdc4]{padding-right:12px}.time-zone-text[data-v-2534cdc4]{padding-left:22px}.empty-content[data-v-2534cdc4]{color:var(--color-text-lighter);margin-top:4px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/views/Availability.vue\"],\"names\":[],\"mappings\":\"AA6LA,mCACC,qBAAA,CACA,iBAAA,CAED,qCACC,YAAA,CACA,kBAAA,CAED,oCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAED,0CACC,YAAA,CACA,qBAAA,CAED,oCACC,UAAA,CAED,iCACC,UAAA,CAED,+BACC,yCAAA,CACA,WAAA,CAED,4BACC,wBAAA,CAED,6BACC,YAAA,CACA,kBAAA,CACA,oBAAA,CACA,gBAAA,CACA,yDAAA,CAED,yBACC,mBAAA,CAED,gCACC,iBAAA,CACA,mBAAA,CACA,eAAA,CAED,8BACC,4BAAA,CACA,WAAA,CACA,mBAAA,CACA,UAAA,CACA,oCACC,SAAA,CAIF,8BACC,4BAAA,CACA,WAAA,CACA,UAAA,CACA,mBAAA,CACA,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,oCACC,SAAA,CAGF,0BACC,kBAAA,CAED,iCACC,iBAAA,CAED,gCACC,+BAAA,CACA,cAAA\",\"sourcesContent\":[\"\\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\\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\\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\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.availability-day {\\n\\tpadding: 0 10px 0 10px;\\n\\tposition: absolute;\\n}\\n.availability-slots {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n}\\n.availability-slot {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n}\\n.availability-slot-group {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n::v-deep .mx-input-wrapper {\\n\\twidth: 85px;\\n}\\n::v-deep .mx-datepicker {\\n\\twidth: 97px;\\n}\\n::v-deep .multiselect {\\n\\tborder: 1px solid var(--color-border-dark);\\n\\twidth: 120px;\\n}\\n.time-zone {\\n\\tpadding: 32px 12px 12px 0;\\n}\\n.grid-table {\\n\\tdisplay: grid;\\n\\tmargin-bottom: 32px;\\n\\tgrid-column-gap: 24px;\\n\\tgrid-row-gap: 6px;\\n\\tgrid-template-columns: min-content min-content min-content;\\n}\\n.button {\\n\\talign-self: flex-end;\\n}\\n.label-weekday {\\n\\tposition: relative;\\n\\tdisplay: inline-flex;\\n\\tpadding-top: 4px;\\n}\\n.delete-slot {\\n\\tbackground-color: transparent;\\n\\tborder: none;\\n\\tpadding-bottom: 12px;\\n\\topacity: .5;\\n\\t&:hover {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.add-another {\\n\\tbackground-color: transparent;\\n\\tborder: none;\\n\\topacity: .5;\\n\\tdisplay: inline-flex;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tmargin-bottom: 3px;\\n\\n\\t&:hover {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n.to-text {\\n\\tpadding-right: 12px;\\n}\\n.time-zone-text{\\n\\tpadding-left: 22px;\\n}\\n.empty-content {\\n\\tcolor: var(--color-text-lighter);\\n\\tmargin-top: 4px;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 347;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t347: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(13836); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getClient","memoize","service","axios","webdav","patch","generateRemoteUrl","getCurrentUser","uid","getLoggerBuilder","setApp","detectUser","build","findScheduleInboxAvailability","client","customRequest","method","data","response","parseXML","xml","undefined","availability","multistatus","propstat","prop","parsedIcal","ICAL","vcalendarComp","vavailabilityComp","getFirstSubcomponent","timezoneComp","timezoneId","getFirstProperty","getFirstValue","availableComps","getAllSubcomponents","slots","MO","TU","WE","TH","FR","SA","SU","forEach","availableComp","start","toJSDate","end","rrule","freq","getComponent","day","push","logger","toICALString","saveScheduleInboxAvailability","all","Object","keys","flatMap","dayId","map","slot","addPropertyWithValue","predefinedTimezoneIcal","getZoneString","addSubcomponent","deduplicated","reduce","acc","key","getHours","getMinutes","join","days","filter","index","self","indexOf","setParameter","uuidv4","byday","bind","asObject","asString","toString","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","$t","model","value","callback","$$v","timezone","expression","_l","displayName","idx","attrs","$set","on","$event","deleteSlot","length","_e","loading","addSlot","saving","save","Vue","translate","Availability","$mount","___CSS_LOADER_EXPORT___","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file