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:
authorJoas Schilling <213943+nickvergessen@users.noreply.github.com>2022-05-23 18:03:41 +0300
committerGitHub <noreply@github.com>2022-05-23 18:03:41 +0300
commit41711988c7dc5c8e2a9147a8cf53d80765f3fca3 (patch)
tree13a4bc100f6541962884d032cb79def0136b4740
parent8d599c341023c5fe850da9bdbc3807a277a61151 (diff)
parentda7ebef8efa7e4c8789155fb62f1e0e2c08aa6da (diff)
Merge pull request #32559 from nextcloud/bugfix/noid/update-dav-availability
Update DAV availability vue component to standard
-rw-r--r--apps/dav/src/views/Availability.vue27
-rw-r--r--dist/dav-settings-personal-availability.js4
-rw-r--r--dist/dav-settings-personal-availability.js.map2
3 files changed, 19 insertions, 14 deletions
diff --git a/apps/dav/src/views/Availability.vue b/apps/dav/src/views/Availability.vue
index 928db771458..f3b3ec34bd2 100644
--- a/apps/dav/src/views/Availability.vue
+++ b/apps/dav/src/views/Availability.vue
@@ -1,9 +1,6 @@
<template>
- <div class="section">
- <h2>{{ $t('dav', 'Availability') }}</h2>
- <p>
- {{ $t('dav', 'If you configure your working hours, other users will see when you are out of office when they book a meeting.') }}
- </p>
+ <SettingsSection :title="$t('dav', 'Availability')"
+ :description="$t('dav', 'If you configure your working hours, other users will see when you are out of office when they book a meeting.')">
<div class="time-zone">
<strong>
{{ $t('dav', 'Time zone:') }}
@@ -12,6 +9,7 @@
<TimezonePicker v-model="timezone" />
</span>
</div>
+
<CalendarAvailability :slots.sync="slots"
:loading="loading"
:l10n-to="$t('dav', 'to')"
@@ -25,31 +23,38 @@
:l10n-friday="$t('dav', 'Friday')"
:l10n-saturday="$t('dav', 'Saturday')"
:l10n-sunday="$t('dav', 'Sunday')" />
+
<Button :disabled="loading || saving"
type="primary"
@click="save">
{{ $t('dav', 'Save') }}
</Button>
- </div>
+ </SettingsSection>
</template>
<script>
import { CalendarAvailability } from '@nextcloud/calendar-availability-vue'
import {
+ showError,
+ showSuccess,
+} from '@nextcloud/dialogs'
+import {
findScheduleInboxAvailability,
getEmptySlots,
saveScheduleInboxAvailability,
} from '../service/CalendarService'
import jstz from 'jstimezonedetect'
-import TimezonePicker from '@nextcloud/vue/dist/Components/TimezonePicker'
import Button from '@nextcloud/vue/dist/Components/Button'
+import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection'
+import TimezonePicker from '@nextcloud/vue/dist/Components/TimezonePicker'
export default {
name: 'Availability',
components: {
+ Button,
CalendarAvailability,
+ SettingsSection,
TimezonePicker,
- Button,
},
data() {
// Try to determine the current timezone, and fall back to UTC otherwise
@@ -80,7 +85,7 @@ export default {
} catch (e) {
console.error('could not load existing availability', e)
- // TODO: show a nice toast
+ showError(t('dav', 'Failed to load availability'))
} finally {
this.loading = false
}
@@ -92,11 +97,11 @@ export default {
await saveScheduleInboxAvailability(this.slots, this.timezone)
- // TODO: show a nice toast
+ showSuccess(t('dav', 'Saved availability'))
} catch (e) {
console.error('could not save availability', e)
- // TODO: show a nice toast
+ showError(t('dav', 'Failed to save availability'))
} finally {
this.saving = false
}
diff --git a/dist/dav-settings-personal-availability.js b/dist/dav-settings-personal-availability.js
index 73b761ed211..1c8e4ca716e 100644
--- a/dist/dav-settings-personal-availability.js
+++ b/dist/dav-settings-personal-availability.js
@@ -1,3 +1,3 @@
/*! For license information please see dav-settings-personal-availability.js.LICENSE.txt */
-!function(){var n,t={52984:function(n,t,e){"use strict";var r=e(20144),a=e(9944),o=e(51796),i=e(81063),l=e(4820),s=e(56580),d=e.n(s),u=e(79753),c=e(22200),p=d()((function(n){return l.default.defaults.headers["X-Requested-With"]="XMLHttpRequest",i.getPatcher().patch("request",l.default),i.createClient((0,u.generateRemoteUrl)("dav/".concat(n,"/").concat((0,c.getCurrentUser)().uid)))})),A=(0,e(17499).IY)().setApp("dav").detectUser().build(),v=e(7582);function f(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,r)}return e}function b(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?f(Object(e),!0).forEach((function(t){m(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):f(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function m(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function y(n){return function(n){if(Array.isArray(n))return C(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,t){if(n){if("string"==typeof n)return C(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?C(n,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function C(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=new Array(t);e<t;e++)r[e]=n[e];return r}function x(n,t,e,r,a,o,i){try{var l=n[o](i),s=l.value}catch(n){return void e(n)}l.done?t(s):Promise.resolve(s).then(r,a)}function g(n){return function(){var t=this,e=arguments;return new Promise((function(r,a){var o=n.apply(t,e);function i(n){x(o,r,a,i,l,"next",n)}function l(n){x(o,r,a,i,l,"throw",n)}i(void 0)}))}}function h(){return w.apply(this,arguments)}function w(){return(w=g(regeneratorRuntime.mark((function n(){var t,e,r,a,i,l,s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=p("calendars"),n.next=3,a.customRequest("inbox",{method:"PROPFIND",data:'<?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>'});case 3:return i=n.sent,n.next=6,(0,v.parseXML)(i.data);case 6:if(l=n.sent){n.next=9;break}return n.abrupt("return",void 0);case 9:if(s=null==l||null===(t=l.multistatus)||void 0===t||null===(e=t.response[0])||void 0===e||null===(r=e.propstat)||void 0===r?void 0:r.prop["calendar-availability"]){n.next=12;break}return n.abrupt("return",void 0);case 12:return n.abrupt("return",(0,o.Xg)(s));case 13:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function O(n,t){return k.apply(this,arguments)}function k(){return(k=g(regeneratorRuntime.mark((function n(t,e){var r,a,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=y(Object.keys(t).flatMap((function(n){return t[n].map((function(t){return b(b({},t),{},{day:n})}))}))),a=(0,o.ST)(r,e),A.debug("New availability ical created",{vavailability:a}),i=p("calendars"),n.next=6,i.customRequest("inbox",{method:"PROPPATCH",data:'<?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">'.concat(a,"</x1:calendar-availability>\n\t\t\t\t</x0:prop>\n\t\t\t </x0:set>\n\t\t\t</x0:propertyupdate>")});case 6:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var B=e(55586),P=e.n(B),j=e(48254),D=e.n(j),S=e(1412),E=e.n(S);function R(n,t,e,r,a,o,i){try{var l=n[o](i),s=l.value}catch(n){return void e(n)}l.done?t(s):Promise.resolve(s).then(r,a)}function T(n){return function(){var t=this,e=arguments;return new Promise((function(r,a){var o=n.apply(t,e);function i(n){R(o,r,a,i,l,"next",n)}function l(n){R(o,r,a,i,l,"throw",n)}i(void 0)}))}}var $={name:"Availability",components:{CalendarAvailability:o.Dx,TimezonePicker:D(),Button:E()},data:function(){var n=P().determine();return{loading:!0,saving:!1,timezone:n?n.name():"UTC",slots:{MO:[],TU:[],WE:[],TH:[],FR:[],SA:[],SU:[]}}},mounted:function(){var n=this;return T(regeneratorRuntime.mark((function t(){var e,r,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,h();case 3:(e=t.sent)?(r=e.slots,a=e.timezoneId,n.slots=r,a&&(n.timezone=a),console.info("availability loaded",n.slots,n.timezoneId)):(console.info("no availability is set"),n.slots={MO:[],TU:[],WE:[],TH:[],FR:[],SA:[],SU:[]}),t.next=10;break;case 7:t.prev=7,t.t0=t.catch(0),console.error("could not load existing availability",t.t0);case 10:return t.prev=10,n.loading=!1,t.finish(10);case 13:case"end":return t.stop()}}),t,null,[[0,7,10,13]])})))()},methods:{save:function(){var n=this;return T(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,n.saving=!0,t.next=4,O(n.slots,n.timezone);case 4:t.next=9;break;case 6:t.prev=6,t.t0=t.catch(0),console.error("could not save availability",t.t0);case 9:return t.prev=9,n.saving=!1,t.finish(9);case 12:case"end":return t.stop()}}),t,null,[[0,6,9,12]])})))()}}},_=e(93379),z=e.n(_),U=e(7795),I=e.n(U),M=e(90569),q=e.n(M),F=e(3565),W=e.n(F),Z=e(19216),Y=e.n(Z),H=e(44589),X=e.n(H),N=e(9752),G={};G.styleTagTransform=X(),G.setAttributes=W(),G.insert=q().bind(null,"head"),G.domAPI=I(),G.insertStyleElement=Y(),z()(N.Z,G),N.Z&&N.Z.locals&&N.Z.locals;var L=(0,e(51900).Z)($,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"section"},[e("h2",[n._v(n._s(n.$t("dav","Availability")))]),n._v(" "),e("p",[n._v("\n\t\t"+n._s(n.$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")]),n._v(" "),e("div",{staticClass:"time-zone"},[e("strong",[n._v("\n\t\t\t"+n._s(n.$t("dav","Time zone:"))+"\n\t\t")]),n._v(" "),e("span",{staticClass:"time-zone-text"},[e("TimezonePicker",{model:{value:n.timezone,callback:function(t){n.timezone=t},expression:"timezone"}})],1)]),n._v(" "),e("CalendarAvailability",{attrs:{slots:n.slots,loading:n.loading,"l10n-to":n.$t("dav","to"),"l10n-delete-slot":n.$t("dav","Delete slot"),"l10n-empty-day":n.$t("dav","No working hours set"),"l10n-add-slot":n.$t("dav","Add slot"),"l10n-monday":n.$t("dav","Monday"),"l10n-tuesday":n.$t("dav","Tuesday"),"l10n-wednesday":n.$t("dav","Wednesday"),"l10n-thursday":n.$t("dav","Thursday"),"l10n-friday":n.$t("dav","Friday"),"l10n-saturday":n.$t("dav","Saturday"),"l10n-sunday":n.$t("dav","Sunday")},on:{"update:slots":function(t){n.slots=t}}}),n._v(" "),e("Button",{attrs:{disabled:n.loading||n.saving,type:"primary"},on:{click:n.save}},[n._v("\n\t\t"+n._s(n.$t("dav","Save"))+"\n\t")])],1)}),[],!1,null,"8127b8b8",null).exports;r.default.prototype.$t=a.translate,new(r.default.extend(L))({}).$mount("#settings-personal-availability")},9752:function(n,t,e){"use strict";var r=e(87537),a=e.n(r),o=e(23645),i=e.n(o)()(a());i.push([n.id,".availability-day[data-v-8127b8b8]{padding:0 10px 0 10px;position:absolute}.availability-slots[data-v-8127b8b8]{display:flex;white-space:nowrap}.availability-slot[data-v-8127b8b8]{display:flex;flex-direction:row;align-items:center}.availability-slot-group[data-v-8127b8b8]{display:flex;flex-direction:column}[data-v-8127b8b8] .mx-input-wrapper{width:85px}[data-v-8127b8b8] .mx-datepicker{width:97px}[data-v-8127b8b8] .multiselect{border:1px solid var(--color-border-dark);width:120px}.time-zone[data-v-8127b8b8]{padding:32px 12px 12px 0}.grid-table[data-v-8127b8b8]{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-8127b8b8]{align-self:flex-end}.label-weekday[data-v-8127b8b8]{position:relative;display:inline-flex;padding-top:4px}.delete-slot[data-v-8127b8b8]{background-color:rgba(0,0,0,0);border:none;padding-bottom:12px;opacity:.5}.delete-slot[data-v-8127b8b8]:hover{opacity:1}.add-another[data-v-8127b8b8]{background-color:rgba(0,0,0,0);border:none;opacity:.5;display:inline-flex;padding:0;margin:0;margin-bottom:3px}.add-another[data-v-8127b8b8]:hover{opacity:1}.to-text[data-v-8127b8b8]{padding-right:12px}.time-zone-text[data-v-8127b8b8]{padding-left:22px}.empty-content[data-v-8127b8b8]{color:var(--color-text-lighter);margin-top:4px}","",{version:3,sources:["webpack://./apps/dav/src/views/Availability.vue"],names:[],mappings:"AA4GA,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,8BAAA,CACA,WAAA,CACA,mBAAA,CACA,UAAA,CACA,oCACC,SAAA,CAIF,8BACC,8BAAA,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.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:""}]),t.Z=i},69862:function(){},40964:function(){}},e={};function r(n){var a=e[n];if(void 0!==a)return a.exports;var o=e[n]={id:n,loaded:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=t,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},n=[],r.O=function(t,e,a,o){if(!e){var i=1/0;for(u=0;u<n.length;u++){e=n[u][0],a=n[u][1],o=n[u][2];for(var l=!0,s=0;s<e.length;s++)(!1&o||i>=o)&&Object.keys(r.O).every((function(n){return r.O[n](e[s])}))?e.splice(s--,1):(l=!1,o<i&&(i=o));if(l){n.splice(u--,1);var d=a();void 0!==d&&(t=d)}}return t}o=o||0;for(var u=n.length;u>0&&n[u-1][2]>o;u--)n[u]=n[u-1];n[u]=[e,a,o]},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,{a:t}),t},r.d=function(n,t){for(var e in t)r.o(t,e)&&!r.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},r.j=3347,function(){r.b=document.baseURI||self.location.href;var n={3347:0};r.O.j=function(t){return 0===n[t]};var t=function(t,e){var a,o,i=e[0],l=e[1],s=e[2],d=0;if(i.some((function(t){return 0!==n[t]}))){for(a in l)r.o(l,a)&&(r.m[a]=l[a]);if(s)var u=s(r)}for(t&&t(e);d<i.length;d++)o=i[d],r.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return r.O(u)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}();var a=r.O(void 0,[7874],(function(){return r(52984)}));a=r.O(a)}();
-//# sourceMappingURL=dav-settings-personal-availability.js.map?v=4a9b28ec1b3bed3d4401 \ No newline at end of file
+!function(){var n,e={56584:function(n,e,r){"use strict";var a=r(20144),o=r(9944),i=r(51796),l=r(26932),d=r(81063),s=r(4820),u=r(56580),c=r.n(u),p=r(79753),A=r(22200),f=c()((function(n){return s.default.defaults.headers["X-Requested-With"]="XMLHttpRequest",d.getPatcher().patch("request",s.default),d.createClient((0,p.generateRemoteUrl)("dav/".concat(n,"/").concat((0,A.getCurrentUser)().uid)))})),v=(0,r(17499).IY)().setApp("dav").detectUser().build(),b=r(7582);function m(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,r)}return e}function y(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?m(Object(e),!0).forEach((function(t){C(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):m(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function C(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function x(n){return function(n){if(Array.isArray(n))return g(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,t){if(n){if("string"==typeof n)return g(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?g(n,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=new Array(t);e<t;e++)r[e]=n[e];return r}function h(n,t,e,r,a,o,i){try{var l=n[o](i),d=l.value}catch(n){return void e(n)}l.done?t(d):Promise.resolve(d).then(r,a)}function w(n){return function(){var t=this,e=arguments;return new Promise((function(r,a){var o=n.apply(t,e);function i(n){h(o,r,a,i,l,"next",n)}function l(n){h(o,r,a,i,l,"throw",n)}i(void 0)}))}}function O(){return k.apply(this,arguments)}function k(){return(k=w(regeneratorRuntime.mark((function n(){var t,e,r,a,o,l,d;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=f("calendars"),n.next=3,a.customRequest("inbox",{method:"PROPFIND",data:'<?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>'});case 3:return o=n.sent,n.next=6,(0,b.parseXML)(o.data);case 6:if(l=n.sent){n.next=9;break}return n.abrupt("return",void 0);case 9:if(d=null==l||null===(t=l.multistatus)||void 0===t||null===(e=t.response[0])||void 0===e||null===(r=e.propstat)||void 0===r?void 0:r.prop["calendar-availability"]){n.next=12;break}return n.abrupt("return",void 0);case 12:return n.abrupt("return",(0,i.Xg)(d));case 13:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function B(n,t){return S.apply(this,arguments)}function S(){return(S=w(regeneratorRuntime.mark((function n(t,e){var r,a,o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=x(Object.keys(t).flatMap((function(n){return t[n].map((function(t){return y(y({},t),{},{day:n})}))}))),a=(0,i.ST)(r,e),v.debug("New availability ical created",{vavailability:a}),o=f("calendars"),n.next=6,o.customRequest("inbox",{method:"PROPPATCH",data:'<?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">'.concat(a,"</x1:calendar-availability>\n\t\t\t\t</x0:prop>\n\t\t\t </x0:set>\n\t\t\t</x0:propertyupdate>")});case 6:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var P=r(55586),j=r.n(P),D=r(1412),E=r.n(D),$=r(67776),R=r.n($),T=r(48254),z=r.n(T);function U(n,t,e,r,a,o,i){try{var l=n[o](i),d=l.value}catch(n){return void e(n)}l.done?t(d):Promise.resolve(d).then(r,a)}function _(n){return function(){var t=this,e=arguments;return new Promise((function(r,a){var o=n.apply(t,e);function i(n){U(o,r,a,i,l,"next",n)}function l(n){U(o,r,a,i,l,"throw",n)}i(void 0)}))}}var I={name:"Availability",components:{Button:E(),CalendarAvailability:i.Dx,SettingsSection:R(),TimezonePicker:z()},data:function(){var n=j().determine();return{loading:!0,saving:!1,timezone:n?n.name():"UTC",slots:{MO:[],TU:[],WE:[],TH:[],FR:[],SA:[],SU:[]}}},mounted:function(){var n=this;return _(regeneratorRuntime.mark((function e(){var r,a,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,O();case 3:(r=e.sent)?(a=r.slots,o=r.timezoneId,n.slots=a,o&&(n.timezone=o),console.info("availability loaded",n.slots,n.timezoneId)):(console.info("no availability is set"),n.slots={MO:[],TU:[],WE:[],TH:[],FR:[],SA:[],SU:[]}),e.next=11;break;case 7:e.prev=7,e.t0=e.catch(0),console.error("could not load existing availability",e.t0),(0,l.x2)(t("dav","Failed to load availability"));case 11:return e.prev=11,n.loading=!1,e.finish(11);case 14:case"end":return e.stop()}}),e,null,[[0,7,11,14]])})))()},methods:{save:function(){var n=this;return _(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.saving=!0,e.next=4,B(n.slots,n.timezone);case 4:(0,l.s$)(t("dav","Saved availability")),e.next=11;break;case 7:e.prev=7,e.t0=e.catch(0),console.error("could not save availability",e.t0),(0,l.x2)(t("dav","Failed to save availability"));case 11:return e.prev=11,n.saving=!1,e.finish(11);case 14:case"end":return e.stop()}}),e,null,[[0,7,11,14]])})))()}}},M=r(93379),F=r.n(M),q=r(7795),W=r.n(q),Z=r(90569),H=r.n(Z),Y=r(3565),X=r.n(Y),N=r(19216),L=r.n(N),V=r(44589),G=r.n(V),Q=r(84960),J={};J.styleTagTransform=G(),J.setAttributes=X(),J.insert=H().bind(null,"head"),J.domAPI=W(),J.insertStyleElement=L(),F()(Q.Z,J),Q.Z&&Q.Z.locals&&Q.Z.locals;var K=(0,r(51900).Z)(I,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("SettingsSection",{attrs:{title:n.$t("dav","Availability"),description:n.$t("dav","If you configure your working hours, other users will see when you are out of office when they book a meeting.")}},[e("div",{staticClass:"time-zone"},[e("strong",[n._v("\n\t\t\t"+n._s(n.$t("dav","Time zone:"))+"\n\t\t")]),n._v(" "),e("span",{staticClass:"time-zone-text"},[e("TimezonePicker",{model:{value:n.timezone,callback:function(t){n.timezone=t},expression:"timezone"}})],1)]),n._v(" "),e("CalendarAvailability",{attrs:{slots:n.slots,loading:n.loading,"l10n-to":n.$t("dav","to"),"l10n-delete-slot":n.$t("dav","Delete slot"),"l10n-empty-day":n.$t("dav","No working hours set"),"l10n-add-slot":n.$t("dav","Add slot"),"l10n-monday":n.$t("dav","Monday"),"l10n-tuesday":n.$t("dav","Tuesday"),"l10n-wednesday":n.$t("dav","Wednesday"),"l10n-thursday":n.$t("dav","Thursday"),"l10n-friday":n.$t("dav","Friday"),"l10n-saturday":n.$t("dav","Saturday"),"l10n-sunday":n.$t("dav","Sunday")},on:{"update:slots":function(t){n.slots=t}}}),n._v(" "),e("Button",{attrs:{disabled:n.loading||n.saving,type:"primary"},on:{click:n.save}},[n._v("\n\t\t"+n._s(n.$t("dav","Save"))+"\n\t")])],1)}),[],!1,null,"b996f2b8",null).exports;a.default.prototype.$t=o.translate,new(a.default.extend(K))({}).$mount("#settings-personal-availability")},84960:function(n,t,e){"use strict";var r=e(87537),a=e.n(r),o=e(23645),i=e.n(o)()(a());i.push([n.id,".availability-day[data-v-b996f2b8]{padding:0 10px 0 10px;position:absolute}.availability-slots[data-v-b996f2b8]{display:flex;white-space:nowrap}.availability-slot[data-v-b996f2b8]{display:flex;flex-direction:row;align-items:center}.availability-slot-group[data-v-b996f2b8]{display:flex;flex-direction:column}[data-v-b996f2b8] .mx-input-wrapper{width:85px}[data-v-b996f2b8] .mx-datepicker{width:97px}[data-v-b996f2b8] .multiselect{border:1px solid var(--color-border-dark);width:120px}.time-zone[data-v-b996f2b8]{padding:32px 12px 12px 0}.grid-table[data-v-b996f2b8]{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-b996f2b8]{align-self:flex-end}.label-weekday[data-v-b996f2b8]{position:relative;display:inline-flex;padding-top:4px}.delete-slot[data-v-b996f2b8]{background-color:rgba(0,0,0,0);border:none;padding-bottom:12px;opacity:.5}.delete-slot[data-v-b996f2b8]:hover{opacity:1}.add-another[data-v-b996f2b8]{background-color:rgba(0,0,0,0);border:none;opacity:.5;display:inline-flex;padding:0;margin:0;margin-bottom:3px}.add-another[data-v-b996f2b8]:hover{opacity:1}.to-text[data-v-b996f2b8]{padding-right:12px}.time-zone-text[data-v-b996f2b8]{padding-left:22px}.empty-content[data-v-b996f2b8]{color:var(--color-text-lighter);margin-top:4px}","",{version:3,sources:["webpack://./apps/dav/src/views/Availability.vue"],names:[],mappings:"AAiHA,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,8BAAA,CACA,WAAA,CACA,mBAAA,CACA,UAAA,CACA,oCACC,SAAA,CAIF,8BACC,8BAAA,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.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:""}]),t.Z=i},69862:function(){},40964:function(){}},r={};function a(n){var t=r[n];if(void 0!==t)return t.exports;var o=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.loaded=!0,o.exports}a.m=e,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(t,e,r,o){if(!e){var i=1/0;for(u=0;u<n.length;u++){e=n[u][0],r=n[u][1],o=n[u][2];for(var l=!0,d=0;d<e.length;d++)(!1&o||i>=o)&&Object.keys(a.O).every((function(n){return a.O[n](e[d])}))?e.splice(d--,1):(l=!1,o<i&&(i=o));if(l){n.splice(u--,1);var s=r();void 0!==s&&(t=s)}}return t}o=o||0;for(var u=n.length;u>0&&n[u-1][2]>o;u--)n[u]=n[u-1];n[u]=[e,r,o]},a.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(t,{a:t}),t},a.d=function(n,t){for(var e in t)a.o(t,e)&&!a.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),a.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},a.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},a.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},a.j=3347,function(){a.b=document.baseURI||self.location.href;var n={3347:0};a.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,o,i=e[0],l=e[1],d=e[2],s=0;if(i.some((function(t){return 0!==n[t]}))){for(r in l)a.o(l,r)&&(a.m[r]=l[r]);if(d)var u=d(a)}for(t&&t(e);s<i.length;s++)o=i[s],a.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return a.O(u)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}();var o=a.O(void 0,[7874],(function(){return a(56584)}));o=a.O(o)}();
+//# sourceMappingURL=dav-settings-personal-availability.js.map?v=3d0570f91818ab0cd80d \ No newline at end of file
diff --git a/dist/dav-settings-personal-availability.js.map b/dist/dav-settings-personal-availability.js.map
index 313e924491b..f4feb7e108f 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=4a9b28ec1b3bed3d4401","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?15c2","webpack://nextcloud/./apps/dav/src/views/Availability.vue?aa5a","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=template&id=8127b8b8&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=8127b8b8&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 logger from './logger'\nimport { parseXML } from 'webdav/dist/node/tools/dav'\n\nimport {\n\tslotsToVavailability,\n\tvavailabilityToSlots,\n} from '@nextcloud/calendar-availability-vue'\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\treturn vavailabilityToSlots(availability)\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 vavailability = slotsToVavailability(all, timezoneId)\n\n\tlogger.debug('New availability ical created', {\n\t\tvavailability,\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\">${vavailability}</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<CalendarAvailability :slots.sync=\"slots\"\n\t\t\t:loading=\"loading\"\n\t\t\t:l10n-to=\"$t('dav', 'to')\"\n\t\t\t:l10n-delete-slot=\"$t('dav', 'Delete slot')\"\n\t\t\t:l10n-empty-day=\"$t('dav', 'No working hours set')\"\n\t\t\t:l10n-add-slot=\"$t('dav', 'Add slot')\"\n\t\t\t:l10n-monday=\"$t('dav', 'Monday')\"\n\t\t\t:l10n-tuesday=\"$t('dav', 'Tuesday')\"\n\t\t\t:l10n-wednesday=\"$t('dav', 'Wednesday')\"\n\t\t\t:l10n-thursday=\"$t('dav', 'Thursday')\"\n\t\t\t:l10n-friday=\"$t('dav', 'Friday')\"\n\t\t\t:l10n-saturday=\"$t('dav', 'Saturday')\"\n\t\t\t:l10n-sunday=\"$t('dav', 'Sunday')\" />\n\t\t<Button :disabled=\"loading || saving\"\n\t\t\ttype=\"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 { CalendarAvailability } from '@nextcloud/calendar-availability-vue'\nimport {\n\tfindScheduleInboxAvailability,\n\tgetEmptySlots,\n\tsaveScheduleInboxAvailability,\n} from '../service/CalendarService'\nimport jstz from 'jstimezonedetect'\nimport TimezonePicker from '@nextcloud/vue/dist/Components/TimezonePicker'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nexport default {\n\tname: 'Availability',\n\tcomponents: {\n\t\tCalendarAvailability,\n\t\tTimezonePicker,\n\t\tButton,\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\treturn {\n\t\t\tloading: true,\n\t\t\tsaving: false,\n\t\t\ttimezone: defaultTimezoneId,\n\t\t\tslots: getEmptySlots(),\n\t\t}\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst slotData = await findScheduleInboxAvailability()\n\t\t\tif (!slotData) {\n\t\t\t\tconsole.info('no availability is set')\n\t\t\t\tthis.slots = getEmptySlots()\n\t\t\t} else {\n\t\t\t\tconst { slots, timezoneId } = slotData\n\t\t\t\tthis.slots = slots\n\t\t\t\tif (timezoneId) {\n\t\t\t\t\tthis.timezone = timezoneId\n\t\t\t\t}\n\t\t\t\tconsole.info('availability loaded', this.slots, this.timezoneId)\n\t\t\t}\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\tasync save() {\n\t\t\ttry {\n\t\t\t\tthis.saving = true\n\n\t\t\t\tawait saveScheduleInboxAvailability(this.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=8127b8b8&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=8127b8b8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Availability.vue?vue&type=template&id=8127b8b8&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=8127b8b8&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 \"8127b8b8\",\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('CalendarAvailability',{attrs:{\"slots\":_vm.slots,\"loading\":_vm.loading,\"l10n-to\":_vm.$t('dav', 'to'),\"l10n-delete-slot\":_vm.$t('dav', 'Delete slot'),\"l10n-empty-day\":_vm.$t('dav', 'No working hours set'),\"l10n-add-slot\":_vm.$t('dav', 'Add slot'),\"l10n-monday\":_vm.$t('dav', 'Monday'),\"l10n-tuesday\":_vm.$t('dav', 'Tuesday'),\"l10n-wednesday\":_vm.$t('dav', 'Wednesday'),\"l10n-thursday\":_vm.$t('dav', 'Thursday'),\"l10n-friday\":_vm.$t('dav', 'Friday'),\"l10n-saturday\":_vm.$t('dav', 'Saturday'),\"l10n-sunday\":_vm.$t('dav', 'Sunday')},on:{\"update:slots\":function($event){_vm.slots=$event}}}),_vm._v(\" \"),_c('Button',{attrs:{\"disabled\":_vm.loading || _vm.saving,\"type\":\"primary\"},on:{\"click\":_vm.save}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('dav', 'Save'))+\"\\n\\t\")])],1)}\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-8127b8b8]{padding:0 10px 0 10px;position:absolute}.availability-slots[data-v-8127b8b8]{display:flex;white-space:nowrap}.availability-slot[data-v-8127b8b8]{display:flex;flex-direction:row;align-items:center}.availability-slot-group[data-v-8127b8b8]{display:flex;flex-direction:column}[data-v-8127b8b8] .mx-input-wrapper{width:85px}[data-v-8127b8b8] .mx-datepicker{width:97px}[data-v-8127b8b8] .multiselect{border:1px solid var(--color-border-dark);width:120px}.time-zone[data-v-8127b8b8]{padding:32px 12px 12px 0}.grid-table[data-v-8127b8b8]{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-8127b8b8]{align-self:flex-end}.label-weekday[data-v-8127b8b8]{position:relative;display:inline-flex;padding-top:4px}.delete-slot[data-v-8127b8b8]{background-color:rgba(0,0,0,0);border:none;padding-bottom:12px;opacity:.5}.delete-slot[data-v-8127b8b8]:hover{opacity:1}.add-another[data-v-8127b8b8]{background-color:rgba(0,0,0,0);border:none;opacity:.5;display:inline-flex;padding:0;margin:0;margin-bottom:3px}.add-another[data-v-8127b8b8]:hover{opacity:1}.to-text[data-v-8127b8b8]{padding-right:12px}.time-zone-text[data-v-8127b8b8]{padding-left:22px}.empty-content[data-v-8127b8b8]{color:var(--color-text-lighter);margin-top:4px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/views/Availability.vue\"],\"names\":[],\"mappings\":\"AA4GA,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,8BAAA,CACA,WAAA,CACA,mBAAA,CACA,UAAA,CACA,oCACC,SAAA,CAIF,8BACC,8BAAA,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.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 = 3347;","__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\t3347: 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, [7874], function() { return __webpack_require__(52984); })\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","vavailabilityToSlots","saveScheduleInboxAvailability","slots","timezoneId","all","Object","keys","flatMap","dayId","map","slot","day","vavailability","slotsToVavailability","logger","MO","TU","WE","TH","FR","SA","SU","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","$t","model","value","callback","$$v","timezone","expression","attrs","loading","on","$event","saving","save","Vue","translate","Availability","$mount","___CSS_LOADER_EXPORT___","push","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","length","fulfilled","j","every","key","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","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"dav-settings-personal-availability.js?v=3d0570f91818ab0cd80d","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?3f32","webpack://nextcloud/./apps/dav/src/views/Availability.vue?aa5a","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=template&id=b996f2b8&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=b996f2b8&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 logger from './logger'\nimport { parseXML } from 'webdav/dist/node/tools/dav'\n\nimport {\n\tslotsToVavailability,\n\tvavailabilityToSlots,\n} from '@nextcloud/calendar-availability-vue'\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\treturn vavailabilityToSlots(availability)\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 vavailability = slotsToVavailability(all, timezoneId)\n\n\tlogger.debug('New availability ical created', {\n\t\tvavailability,\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\">${vavailability}</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<SettingsSection :title=\"$t('dav', 'Availability')\"\n\t\t:description=\"$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<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\n\t\t<CalendarAvailability :slots.sync=\"slots\"\n\t\t\t:loading=\"loading\"\n\t\t\t:l10n-to=\"$t('dav', 'to')\"\n\t\t\t:l10n-delete-slot=\"$t('dav', 'Delete slot')\"\n\t\t\t:l10n-empty-day=\"$t('dav', 'No working hours set')\"\n\t\t\t:l10n-add-slot=\"$t('dav', 'Add slot')\"\n\t\t\t:l10n-monday=\"$t('dav', 'Monday')\"\n\t\t\t:l10n-tuesday=\"$t('dav', 'Tuesday')\"\n\t\t\t:l10n-wednesday=\"$t('dav', 'Wednesday')\"\n\t\t\t:l10n-thursday=\"$t('dav', 'Thursday')\"\n\t\t\t:l10n-friday=\"$t('dav', 'Friday')\"\n\t\t\t:l10n-saturday=\"$t('dav', 'Saturday')\"\n\t\t\t:l10n-sunday=\"$t('dav', 'Sunday')\" />\n\n\t\t<Button :disabled=\"loading || saving\"\n\t\t\ttype=\"primary\"\n\t\t\t@click=\"save\">\n\t\t\t{{ $t('dav', 'Save') }}\n\t\t</Button>\n\t</SettingsSection>\n</template>\n\n<script>\nimport { CalendarAvailability } from '@nextcloud/calendar-availability-vue'\nimport {\n\tshowError,\n\tshowSuccess,\n} from '@nextcloud/dialogs'\nimport {\n\tfindScheduleInboxAvailability,\n\tgetEmptySlots,\n\tsaveScheduleInboxAvailability,\n} from '../service/CalendarService'\nimport jstz from 'jstimezonedetect'\nimport Button from '@nextcloud/vue/dist/Components/Button'\nimport SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection'\nimport TimezonePicker from '@nextcloud/vue/dist/Components/TimezonePicker'\n\nexport default {\n\tname: 'Availability',\n\tcomponents: {\n\t\tButton,\n\t\tCalendarAvailability,\n\t\tSettingsSection,\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\treturn {\n\t\t\tloading: true,\n\t\t\tsaving: false,\n\t\t\ttimezone: defaultTimezoneId,\n\t\t\tslots: getEmptySlots(),\n\t\t}\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst slotData = await findScheduleInboxAvailability()\n\t\t\tif (!slotData) {\n\t\t\t\tconsole.info('no availability is set')\n\t\t\t\tthis.slots = getEmptySlots()\n\t\t\t} else {\n\t\t\t\tconst { slots, timezoneId } = slotData\n\t\t\t\tthis.slots = slots\n\t\t\t\tif (timezoneId) {\n\t\t\t\t\tthis.timezone = timezoneId\n\t\t\t\t}\n\t\t\t\tconsole.info('availability loaded', this.slots, this.timezoneId)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error('could not load existing availability', e)\n\n\t\t\tshowError(t('dav', 'Failed to load availability'))\n\t\t} finally {\n\t\t\tthis.loading = false\n\t\t}\n\t},\n\tmethods: {\n\t\tasync save() {\n\t\t\ttry {\n\t\t\t\tthis.saving = true\n\n\t\t\t\tawait saveScheduleInboxAvailability(this.slots, this.timezone)\n\n\t\t\t\tshowSuccess(t('dav', 'Saved availability'))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('could not save availability', e)\n\n\t\t\t\tshowError(t('dav', 'Failed to save availability'))\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=b996f2b8&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=b996f2b8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Availability.vue?vue&type=template&id=b996f2b8&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=b996f2b8&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 \"b996f2b8\",\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('SettingsSection',{attrs:{\"title\":_vm.$t('dav', 'Availability'),\"description\":_vm.$t('dav', 'If you configure your working hours, other users will see when you are out of office when they book a meeting.')}},[_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('CalendarAvailability',{attrs:{\"slots\":_vm.slots,\"loading\":_vm.loading,\"l10n-to\":_vm.$t('dav', 'to'),\"l10n-delete-slot\":_vm.$t('dav', 'Delete slot'),\"l10n-empty-day\":_vm.$t('dav', 'No working hours set'),\"l10n-add-slot\":_vm.$t('dav', 'Add slot'),\"l10n-monday\":_vm.$t('dav', 'Monday'),\"l10n-tuesday\":_vm.$t('dav', 'Tuesday'),\"l10n-wednesday\":_vm.$t('dav', 'Wednesday'),\"l10n-thursday\":_vm.$t('dav', 'Thursday'),\"l10n-friday\":_vm.$t('dav', 'Friday'),\"l10n-saturday\":_vm.$t('dav', 'Saturday'),\"l10n-sunday\":_vm.$t('dav', 'Sunday')},on:{\"update:slots\":function($event){_vm.slots=$event}}}),_vm._v(\" \"),_c('Button',{attrs:{\"disabled\":_vm.loading || _vm.saving,\"type\":\"primary\"},on:{\"click\":_vm.save}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('dav', 'Save'))+\"\\n\\t\")])],1)}\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-b996f2b8]{padding:0 10px 0 10px;position:absolute}.availability-slots[data-v-b996f2b8]{display:flex;white-space:nowrap}.availability-slot[data-v-b996f2b8]{display:flex;flex-direction:row;align-items:center}.availability-slot-group[data-v-b996f2b8]{display:flex;flex-direction:column}[data-v-b996f2b8] .mx-input-wrapper{width:85px}[data-v-b996f2b8] .mx-datepicker{width:97px}[data-v-b996f2b8] .multiselect{border:1px solid var(--color-border-dark);width:120px}.time-zone[data-v-b996f2b8]{padding:32px 12px 12px 0}.grid-table[data-v-b996f2b8]{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-b996f2b8]{align-self:flex-end}.label-weekday[data-v-b996f2b8]{position:relative;display:inline-flex;padding-top:4px}.delete-slot[data-v-b996f2b8]{background-color:rgba(0,0,0,0);border:none;padding-bottom:12px;opacity:.5}.delete-slot[data-v-b996f2b8]:hover{opacity:1}.add-another[data-v-b996f2b8]{background-color:rgba(0,0,0,0);border:none;opacity:.5;display:inline-flex;padding:0;margin:0;margin-bottom:3px}.add-another[data-v-b996f2b8]:hover{opacity:1}.to-text[data-v-b996f2b8]{padding-right:12px}.time-zone-text[data-v-b996f2b8]{padding-left:22px}.empty-content[data-v-b996f2b8]{color:var(--color-text-lighter);margin-top:4px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/views/Availability.vue\"],\"names\":[],\"mappings\":\"AAiHA,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,8BAAA,CACA,WAAA,CACA,mBAAA,CACA,UAAA,CACA,oCACC,SAAA,CAIF,8BACC,8BAAA,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.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 = 3347;","__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\t3347: 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, [7874], function() { return __webpack_require__(56584); })\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","vavailabilityToSlots","saveScheduleInboxAvailability","slots","timezoneId","all","Object","keys","flatMap","dayId","map","slot","day","vavailability","slotsToVavailability","logger","MO","TU","WE","TH","FR","SA","SU","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","attrs","$t","staticClass","_v","_s","model","value","callback","$$v","timezone","expression","loading","on","$event","saving","save","Vue","translate","Availability","$mount","___CSS_LOADER_EXPORT___","push","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","length","fulfilled","j","every","key","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","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file